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 = 1FALSE = 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,)