首页 > 解决方案 > COUNTIF > 255 个字符的推荐解决方法出现问题

问题描述

对于超过 255 个字符的 COUNTIF/COUNTIFS 标准,我无法获得 MS 推荐的“解决方法”,以产生超出工作表 #VALUE 的任何结果!错误。

来源:COUNTIF 函数
 
返回错误值 当您使用 COUNTIF 函数匹配
长度超过 255 个字符的长字符串时,它会返回错误结果。
                                       要匹配超过 255 个字符的字符串,请使用 CONCATENATE 函数或
                                        连接运算符 &
。例如,
                                       =COUNTIF(A2:A5,"long string"&"another long string")

A2:A5 中具有 504 个字符长度的字符串的示例文本字符串,

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur et mi congue, ullamcorper, nulla non, interdum augue. Etiam at turpis sagittis, auctor ante quis, imperdiet neque. Nulla ut mauris ac enim rutrum congue. Vivamus elementum nisi et lectus scelerisque bibendum. Mauris tristique condimentum purus, dictum sagittis velit. Cras non purus ut magna placerat suscipit nec sit amet est. Nam finibus sed nibh ac euismod. Nam fermentum mattis quam, a commodo elit suscipit nec. In eu ipsum iaculis.

每个support.office.com建议的公式,

'this exceeds 255 character limit
=countif(a:a, a2)
'this is the recommended work-around
=countif(a:a, left(a2, 255)&mid(a2, 256, 255))
'alternate for a2 < 256 characters
=countif(a:a, left(a2, 255)&iferror(mid(a2, 256, 255), text(,)))

结果应该是 4。除了#VALUE,我什么也得不到!如果 A2 包含任何长度超过 255 的文本。

硬编码前 255 个字符,后缀为剩余的 249 个字符,只会返回相同的 #VALUE!错误。

=COUNTIF(A:A, "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur et mi congue, ullamcorper, nulla non, interdum augue. Etiam at turpis sagittis, auctor ante quis, imperdiet neque. Nulla ut mauris ac enim rutrum congue. Vivamus elementum nisi et lectus s"&"celerisque bibendum. Mauris tristique condimentum purus, dictum sagittis velit. Cras non purus ut magna placerat suscipit nec sit amet est. Nam finibus sed nibh ac euismod. Nam fermentum mattis quam, a commodo elit suscipit nec. In eu ipsum iaculis.")

我猜你想问一个问题。这行得通吗?我错过了什么?是我的 xl2010/xl2016 版本吗?我提到的文档似乎是最新的。

附录:

如果这不像描述的那样工作(甚至不像想象的那样),那么一个被破坏的概念的证明很容易成为一个可以接受的答案。

标签: excelexcel-formulacountif

解决方案


这将相当可靠地处理最多 508 个字符的字符串。

=COUNTIFS(D1:D5,LEFT(D1,254)&"*",D1:D5,"*" &RIGHT(D1,254))

事实上,它会通过比较最后的 254 和前 254 来做更大的字符串。这可能满足个人要求,也可能不满足。

但是如果搜索参数短于 255 并且要搜索的以相同的文本结束和开始,则可能会给出误报。例如,如果istest test将被计算两次。A1test


推荐阅读