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