我正在从网站导入大量数据集,并希望在新工作表上构建一些汇总统计数据。列顺序不固定,因此我希望能够(例如)计算标题为“优先级”的列中值为“1”的所有单元格。我知道这MATCH("Priority", 1:1)
会给我列号,但我该如何在公式中使用它COUNT
?
答案1
我的答案:
=COUNTIF(OFFSET($A:$A,0,MATCH("Priority",1:1)-1),1)
现在解释一下:
Offset($A:$A,0,X)
返回从第一个偏移量开始的整列,X
在这种情况下 X = MATCH("Priority",1:1) - 1
。
因为MATCH("Priority",1:1)
返回列号,所以我们必须减 1 才能得到正确的偏移量。
那么最后一位,1)
表示我们正在寻找值 1。
希望这足够清楚,以便您可以完成其余需要的工作。
如果不是,您需要做的就是将内容替换"Priority"
为您想要搜索的内容,然后将最后一个内容替换1
为您要查找的内容,这样就会返回计数。
只是为了好玩,这也可以工作:
=COUNTIF(INDEX(1:1048576,0,MATCH("Priority",1:1)),1)
答案2
这是一种混乱的方法,涉及ADDRESS
和INDIRECT
公式(假设样本数据在A1:B6
:
=COUNTIF(
INDIRECT(SUBSTITUTE(ADDRESS(1,MATCH("Priority",1:1,0),4),"1","") & ":" &
SUBSTITUTE(ADDRESS(1,MATCH("Priority",1:1,0),4),"1","")),
1)
基本上,它所做的就是找到Priority
标题中匹配的列(这里是列B
),找到ADDRESS
(在本例中为B1
),将列号转换为字母(SUBSTITUTE
),然后将其转换为实际范围(INDIRECT
)。