我有一张Google表格,其中有几列数据,我希望得到一个符合两个条件的行数,其中一个条件是匹配两个值中的任何一个。
以下是我拥有的数据示例:
我想要做的是:计算A列中有多少行有“是”,B列中有“A”或“C”。或者有多少行是“否”,或者是“我”或“X”。
我想出了这个:
=COUNTIFS($A1:$A21,"Yes",B1:B21,"="&"A")+COUNTIFS($A1:$A21,"Yes",B1:B21,"="&"C")
...但是如果我决定改变列的话,那会让人感到笨拙,并且更难以更新。如果我想将多个信息位组合到一个单元中,更不用说真的很糟糕,例如:
=(COUNTIFS($A1:$A21,"Yes",B1:B21,"="&"A")+COUNTIFS($A1:$A21,"Yes",B1:B21,"="&"C")) & "/" & (COUNTIFS($A1:$A21,"No",B1:B21,"="&"A")+COUNTIFS($A1:$A21,"No",B1:B21,"="&"C"))
我的意思是,这太糟糕了。它有效,但很糟糕。
我尝试使用OR()
但没有成功,并尝试使用花括号语法但没有成功。我完全承认我可能做错了两件事,但如果是这样的话,如果我能弄清楚我错过了什么,那就太过分了。任何Sheets专家都愿意对一个老家伙表示同情并告诉我一个更聪明的方法来做这件事吗?
答案 0 :(得分:1)
I'm not sure if this is exactly what you're looking for,但您可以通过创建“配对”列表来简化它。
E2:=COUNTIFS(A:A,$C2,B:B,$D2)
E3:=COUNTIFS(A:A,$C3,B:B,$D3)
...
E6:=SUM(E2:E5)
好处是它很灵活 - 您可以根据需要添加任意数量的配对。此外,没有数组公式的复杂性。
答案 1 :(得分:1)
目前最短的一个:
=SUMPRODUCT(REGEXMATCH(A1:A8&B1:B8,"(?i)Yes(A|C)"))
使用&
加强两列,并在结果上使用REGEX
。
(?i)
不区分大小写yes(A|C)
是,然后是A或C SUM
所有的真相。 对于复杂情况,
=ARRAYFORMULA(SUM(--REGEXMATCH(A1:A8&B1:B8,"(?i)yes(A|C)"))&"/"&SUM(--REGEXMATCH(A1:A8&B1:B8,"(?i)no(I|X)")))
请注意,yes
/ No
后面不应有任何尾随空格,A
或C
之前不应有前导空格等。如果有,请使用{{1} }。
答案 2 :(得分:0)
对于复杂逻辑,请使用更强大的命令,例如query
或filter
。
在A列中计算“是”的行,在B列中计算“A”或“C”。
变为
=query(A:C, "select count(A) where A='Yes' and (B='A' or B='C')")
或
=query(A:C, "select count(A) where A='Yes' and (B='A' or B='C') label count(A) ''")
如果您不想拥有列标题,例如" count"。
这几乎说明了英语的目标(好吧,它的SQL版本)。
答案 3 :(得分:0)
我会使用带变量的查询。在F1中:
=query(A:B,"select count(A) where A ='"&C2&"' AND B='"&D2&"' OR A ='"&C2&"' AND B='"&E2&"'")
在C2中输入“是”或“否”,在D2和E2中输入B字母(或留空)。在C1,D1和E1中输入您想要的任何标题。
答案 4 :(得分:-1)
简化:
如果B是A或C,则创建一个为C的列为C,否则为FALSE。
如果B是I或X,则创建一个为D的列为D,否则为FALSE。
如果A是"是"则创建一个为E的列为EUE。和C是真的。
如果A是" no"则创建一个为FUE的列F为TRUE。并且D为TRUE
创建列G或列F的列G.
汇总G列中的值。