Excel:计数范围内行的值的计数
在Excel中,我需要一个公式,该公式根据行是否包含特定值来返回布尔值的向量。 例如,一个范围(n×mmatrix)包含1到100的随机数。我想根据数字41是否在行中出现而得到一个布尔向量。 如果matrix被命名为“matrix”,则结果将是长度为ROWS(matrix)
的向量。
MMULT(N( Range =A1),TRANSPOSE(COLUMN( Range )))>0
其中A1
包含您的search值,例如41。
根据需要修改范围 。
这可能需要与CSE
,具体取决于其所在的build筑。
举一个例子,假设Range在这里是B1:F4
,其值如下:
40 44 41 41 40
44 40 40 44 44
44 44 43 40 41
43 42 44 45 45
这部分:
B1:F4=A1
只需返回一个布尔TRUE
/ FALSE
条目数组,以确定范围内的每个条目是否等于A1
的值,即:
{FALSE,FALSE,TRUE,TRUE,FALSE;FALSE,FALSE,FALSE,FALSE,FALSE;FALSE,FALSE,FALSE,FALSE,TRUE;FALSE,FALSE,FALSE,FALSE,FALSE}
然后N
函数将这些布尔值强制为它们的等价数值,即TRUE
= 1
, FALSE
= 0
,这样:
N(B1:F4=A1)
得到:
{0,0,1,1,0;0,0,0,0,0;0,0,0,0,1;0,0,0,0,0}
我们可以看到1行出现在第1行和第3行(第1行的情况不止一次)。 由于这是一个4行×5列的数组,因此与一个5行×1列的数组(其条目是非零)进行matrix乘法将产生一个4行乘1的列,列数组,其每一行中的条目遵循matrix乘法的规律,使得:
MMULT(N(B1:F4=A1),TRANSPOSE(COLUMN(B1:F4)))
这是:
MMULT({0,0,1,1,0;0,0,0,0,0;0,0,0,0,1;0,0,0,0,0},TRANSPOSE(COLUMN(B1:F4)))
即:
MMULT({0,0,1,1,0;0,0,0,0,0;0,0,0,0,1;0,0,0,0,0},TRANSPOSE({2,3,4,5,6}))
即:
MMULT({0,0,1,1,0;0,0,0,0,0;0,0,0,0,1;0,0,0,0,0},{2;3;4;5;6})
这是:
{9;0;6;0}
最后,我们检查哪些条目是非零的,这样:
MMULT(N(B1:F4=A1),TRANSPOSE(COLUMN(B1:F4)))>0
这是:
{9;0;6;0}>0
得到:
{TRUE;FALSE;TRUE;FALSE}
问候
聚合函数应该工作。
=AGGREGATE(2,6,[Array]=41)
您可以使用索引公式来获得一个布尔数组,如果您愿意,您可以在另一个公式中使用它。
INDEX(A2:O2=41,)