Excel:计算范围行中的值的出现

时间:2017-04-07 11:42:01

标签: excel matrix excel-formula boolean row

在Excel中,我需要一个公式,根据行是否包含特定值返回Boolean的向量。例如,范围(n乘m矩阵)包含随机数1到100.我想根据数字41是否在行中出现来获得布尔矢量。如果矩阵命名为"矩阵",则结果将是长度为ROWS(matrix)的向量。

3 个答案:

答案 0 :(得分:1)

MMULT(N(Range=A1),TRANSPOSE(COLUMN(Range)))>0

其中A1包含您的搜索值,例如41。

根据需要修改范围

这可能需要与CSE一起提交,具体取决于其使用的结构。

作为示例,我们假设 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}

我们可以看到1s出现在第1行和第3行(在第1行的情况下不止一次)。由于这是一个4行乘5列的数组,所以将矩阵乘法与5行1列的数组(其条目非零)一起产生4行1乘1列数组,其每行中的条目受矩阵乘法定律的约束,例如:

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}

此致

答案 1 :(得分:0)

Aggregate Function应该有用。

=AGGREGATE(2,6,[Array]=41)

答案 2 :(得分:0)

您可以使用索引公式来获取布尔数组,如果您愿意,可以在另一个公式中使用。

{{1}}