我有一个包含以下格式的数据的电子表格:
User | Group | ParentGroup | ID
joe | US fed grp | fed | 123
bill | dev | IT | 234
jim | UK fed grp | fed | 345
我需要一个公式来搜索整个工作表中的 Group 和 ParentGroup 列,并给出包含“fed”的行数
在上面的例子中,公式将返回 2(而不是 4,这是“fed”在整个工作表中出现的次数)。2 是“fed”出现的行数。
我在尝试
=COUNTIF(1:4, "*" & "fed" & "*")
但它返回的是 4 (我想要 2)
答案1
不需要辅助列:
=SUMPRODUCT(--ISNUMBER(SEARCH("fed",Group & ParentGroup)))
- 组指的是 B2:Bn(其中 n 等于或大于最后一行)
- ParentGroup 指的是 C2:Cn
- 组和父组必须大小相同
如果您愿意,您可以用单元格引用替换“fed”。
答案2
单细胞答案:
=COUNTIF(B:C, "*fed*") - COUNTIFS(B:B, "*fed*", C:C, "*fed*")
这将计算包含 的单元格数fed
,然后对包含两个 单元格的每行减一fed
。这很简单,但扩展性不佳(例如,您有 6 列,并且想要计算fed
其中任何一列包含 的行数)
更新:可扩展版本
这真的让我很烦,所以我做了更多的挖掘,并得出了这个数组公式:
=SUM(IF(ISNUMBER(SEARCH("fed", B1:B4)) +
ISNUMBER(SEARCH("fed", C1:C4)),
1, 0))
重要的提示:这是一个数组公式,因此您需要按CTRL+ ALT+ ENTER,而不是直接ENTER在单元格外键入或单击。您可以判断自己是否操作正确,因为公式会显示{
在}
它周围(如果不这样做,结果将始终为 0)。
+ ISNUMBER(SEARCH("fed", X1:X4))
现在,您可以通过向函数中添加另一个来扩展它以包含任意数量的列。您可以使用 指定搜索整个列X:X
,其中X
是列字母,但根据您的系统,这可能会开始运行缓慢。我在搜索整个列时有明显的延迟,但切换到X1:X100
让它感觉瞬间完成。我相信您需要使所有列的范围相同(例如,您不能有B:B
和C1:C10
),但我没有测试它。
答案3
以下是我解决问题的方法。
如果 B 列是 Group,C 列是 ParentGroup,I2 是您要查找的单词,在您的例子中是 fed。
创建另一个名为 FED 的列,输入此公式并将其拉到工作表中。=IF(OR(EXACT(B2;$I$2);EXACT(C2;$I$2));1;0)
这样,即使每行中只有几个“fed”,您也会得到数字 1。
然后对 FED 列求和。
我已上传解决方案。
答案4
=COUNTIFS(B:B,"fed",C:C,"fed")
假设两列的值都是“fed”