excel - 如何防止 COUNTIF 函数将文本解释为日期
问题描述
CountIF
如果目标数组包含无意中看起来像日期的文本,似乎会返回不正确的结果。我已经广泛寻找解决方案,但甚至没有找到任何有同样问题的人。
要复制问题:
单元格A1
:10-1968(作为文本,可以在前面加上撇号)
单元格A2
:=COUNTIF(A1,"=10-68")
细胞A2
将返回 1,因为它将 A1 解释为包含日期(1968 年 10 月 1 日),即使它被格式化为文本。就我而言,值 10-1968 是 Office #10,Project #1968(与日期完全无关)。
TEXT
我尝试了功能和功能的各种组合,但LEFT
没有任何改进。我想如果它看起来像一个约会,我CountIF
会这样看。如何防止这种行为?
注意:我不想使用SumProduct
或编写 UDF。而且,我解决了MATCH
返回的问题NA
,因此需要将其包装在ISNA
. 但这会产生一个更复杂的公式,我想知道如何通过普通使用来解决这个问题CountIF
。
谁知道一个字符串什么时候可能看起来像一个日期?这似乎使CountIf
使用不可靠,除非有办法让它只匹配精确的文本匹配。
解决方案
尝试:
=COUNTIF(A1:A5,"*10-68")
使用星号通配符*
将使您COUNTIF()
正常工作。神奇的是它会得到正确的结果。在您的情况下,这似乎是一个有效的选择,因为您的第一个数字前面只有两个数字-
。前面的星号不会造成伤害。似乎 Excel 开始仅在COUNTIF()
. 我自己对此没有任何解释。
如前所述,另一个选项是COUNTIFS()
与?
通配符组合一起使用,如下所示:
=COUNTIFS(A1,"10-68",A1,"??-??")
例子:
公式B1
为:
=COUNTIF(A1:A5,"*10-68")
或者
=COUNTIFS(A1:A5,"10-68",A1:A5,"??-??")
推荐阅读
- c# - FFmpeg with Pipe - 如何在 C# 中定期从实时流中抓取实时帧?
- griddb - GridDB C 客户端,运行 sample1.c 失败
- sql - 有没有办法检查字符串数组中的任何项目是否在 Snowflake/Redshift 的字符串中?
- python - 在 PySide2 中访问 QML 元素
- mergesort - 为什么这个 SML mergeSort 函数不返回排序列表?
- ruby - 为什么 ruby 控制器会转义参数本身?
- android - SQLITE 数据不检查数据存在总是返回错误?
- c# - 多个文本框验证
- c# - WebGL 构建无法正常工作(构建错误位于下方),我正在编写 C# 游戏,我需要通过链接使其在线。我该怎么办?
- python-3.x - ImportError:在 python 3.6 中导入千层面时无法导入名称“downsample”