这个问题涉及到Excel的COUNTIF函数在使用作为数组公式时,如何处理不同的数据类型。
有很多好的帖子详细介绍了如何使用COUNTIF来执行任务,比如从列表中提取唯一值,例如this post。我已经成功地使用了这些和其他帖子中的例子来解决特定的问题,但我正在尝试深入了解数组公式,以便根据新的需要调整我的公式。
我发现了COUNTIF的一个奇怪行为。通常,Excel似乎将字符串视为"大于"数字,所以下面的示例是有效的:
Cell Formula Returns
=1<2 TRUE
="a"<"b" TRUE
="a">"b" FALSE
=1<"b" TRUE
现在,假设A1:A6范围包含以下数据集:
1
2
3
A
B
C
针对该集合中的每个单元格,我想要检查有多少个集合中的所有单元格小于或等于该单元格(这是更复杂公式中的一种有用技术)。我在B1:B6范围内输入以下数组公式:
{=COUNTIF($A$1:$A$6,"<="&$A$1:$A$6)}
(CTRL + SHIFT + ENTER)。根据上面比较数字和字符串的示例(也在下面的D列中说明),我期望输出结果如C列所示。然而,数组公式返回了B列中显示的结果,这表明按数组方式计算COUNTIF时字符串和数字元素被分别计算。Column A Column B Column C Column D
1 1 1 A1<"C" = TRUE
2 2 2 A2<"C" = TRUE
3 3 3 A3<"C" = TRUE
A 1 4 A4<"C" = TRUE
B 2 5 A5<"C" = TRUE
C 3 6 A6<"C" = FALSE
问题是如何在C列中产生输出?(编辑:澄清一下,我特别寻求利用COUNTIF的数组属性来解决问题的解决方案。)
如果有关于为什么数组方式的COUNTIF表现似乎与单元格示例不同的任何见解,也将不胜感激。
注意:我已经将示例从非英语版本的Excel翻译成了英语,因此提前为任何拼写错误道歉。
附注:背景是当我尝试构建一个公式时遇到了这个问题,该公式将从可能重复的列表中提取唯一值,并按数字/字母顺序排序唯一值。 我目前的解决方案是分两步完成。 一个可以一步完成的解决方案在此提出。
COUNTIF
。 - Tim Biegeleisen{=COUNTIF($A$1:$A$6,"<="&$A$1:$A$6)}
实际上是从一个更复杂的公式中提取出来的,该公式的行为与预期完全一致,并且已被其他人用于解决类似的问题。本文说明了该公式的一个中间步骤。 - Egalth