【发布时间】:2015-10-27 01:32:20
【问题描述】:
这个问题是关于 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 中翻译了示例,因此对于任何拼写错误,我提前道歉。
PS。作为背景,当我尝试构建一个公式时遇到了这个问题/按字母顺序。我目前的解决方案是分两步完成。如何一步完成的一种解决方案is proposed here。
【问题讨论】:
-
我相信你可能错误地使用了
COUNTIF。 -
语法
{=COUNTIF($A$1:$A$6,"<="&$A$1:$A$6)}实际上是从一个更复杂的公式中提取出来的,该公式的行为与预期完全相同,并且被其他人用来解决类似问题。这篇文章说明了该公式中的一个中间步骤。
标签: arrays excel excel-formula