繁体   English   中英

水平索引匹配:在矩阵中查找文本并返回标题

[英]Horizontal Index Match: Find Text In A Matrix And Return The Header

我有一个名字清单。 我还有一个矩阵,其中包含名称和其对应的审计程序作为列标题。 我需要在此矩阵中查找名称,找到名称后,我需要获取审计程序,即列标题。 我有一个垂直工作的代码,但找不到使水平工作的公式。

在此处输入图片说明

这是我的垂直矩阵的工作代码:

=IFERROR(INDEX(auditors,MATCH(1,MMULT(--(names=A106),TRANSPOSE(COLUMN(names)^0)),0)),"")

采用:

=IFERROR(INDEX(auditors,AGGREGATE(15,7,(COLUMN(names)-MIN(COLUMN(names))+1)/(names=H2),1)),"")

假设您的第一个标题位于A1中。 将该公式放在A2中,然后上下复制。

在此处输入图片说明

将其用作数组公式似乎可以很好地解决问题:

{=INDEX(Auditors;1;SUM(IF(Names=Auditors;COLUMN(Auditors);0)))}

这可以通过创建与表大小相同的矩阵来实现,其中单元格包含0或单元格的列(如果存在匹配项)。 请注意,它假定您的Auditor定义的范围从第1列开始,并且包含标题和数据(我使用$ A $ 1:$ C $ 4)

另外,如果没有匹配项,默认情况下将返回Auditor 1。 要强制执行错误,可以使用SUM结果为零的事实,例如:

{=INDEX(Auditors;1;1/(1/SUM(IF(Names=Auditors;COLUMN(Auditors);0))))}

另外,由于它在整个“审核员”表中查找,因此它也将与审核员自身匹配; 如果这不是您想要的,则可能要为标题和审核器表的数据定义单独的范围,或相应地对它们进行抵消。

有时由于某些原因,我们不希望使用数组公式。 这是一个使用常规旧SUMPRODUCT的示例。

=INDEX(header_row,SUMPRODUCT((names=specific_name)*(COLUMN(header_row)-COLUMN(header_row_first_cell)+1)))

除specific_name外,所有单元格/范围都应固定。

  • header_row是1乘3的范围,从审核员1到审核员3
  • 名称是矩阵中名称的3 x 3范围
  • specific_name是具有您要查找的名称的单个单元格
  • header_row_first_cell是header_row中的第一个单元格,因此Auditor 1

另外,我通常喜欢索引我的行和列,而不是COLUMN(header_row)-COLUMN(header_row_first_cell)+1废话。 因此,在标题上方,我将对第1至3列进行编号,并简单地使用该范围。

=INDEX(header_row,SUMPRODUCT((names=specific_name)*(column_index)))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM