【发布时间】:2019-03-28 19:10:00
【问题描述】:
我想知道是否有一种简单的方法来计算在按值过滤列子集后的行数,考虑到 Excel 表对象中给定列的多个选择。
假设我有以下 excel 表:
A B C
a1 b1 c1
a2 b2 c1
a1 b2 c2
a2 b1 c2
a1 b3 c3
a3 b1 c3
保存在名称下的 excel 表中:Table1,我想查找列 A 具有值 a1 或 a2 并且列 B 具有值的所有行:@987654327 @。结果应该是 2。
我可以使用SUMPRODUCT 函数并使用-- 运算符将逻辑值转换为[0,1]:
= SUMPRODUCT(--(Table1[A]="a1"),--(Table1[B]="b1"))
+ SUMPRODUCT(--(Table1[A]="a2"),--(Table1[B]="b1"))
在我的真实示例中,我有超过三列,其中至少一列可以满足多个条件,所以我想知道是否有一种方法可以用不那么冗长的语法来做到这一点。例如,我正在尝试这样的事情,但它不起作用:
= SUMPRODUCT(--(Table1[A]="a1|ab2"),--(Table1[B]="b1"))
或
=SUMPRODUCT(--(Table1[A]=OR("a1", "a2")), --(Table1[B]="b1"))
OR 函数没有帮助,因为它不返回数组结果,而且我不能在我的实际示例中使用数组公式,因为我只需要为具有多个选择的一列应用,但是对于我选择的其余列只是一个值。
在 excel 公式中表示多个过滤条件操作似乎是一个很好的技巧,但是当在一个列中它必须满足多个条件时,excel 公式非常冗长,就像上面的例子一样。
根据我的解决方案,它会像这样计算表格中的行数,对于每一列,我们只过滤一个值,除了第一列 A,我们用两个可能的值过滤:
= SUMPRODUCT(--(Table1[A]="a1"),--(Table1[B]="b1"),
--(Table1[C]="c1"), ...Table1[Z]="z1"))
+ SUMPRODUCT(--(Table1[A]="a2"),--(Table1[B]="b1"),
--(Table1[C]="c1"), ...Table1[Z]="z1"))
【问题讨论】:
标签: excel excel-formula