Excel - 使用索引查找多个相同的值并从另一列返回多个值

Excel - 使用索引查找多个相同的值并从另一列返回多个值

我有两张工作表,其中一张用于存放烹饪书的说明

函数列表

然后,用户将在另一个窗口中输入函数名称,然后会出现工作表 2 中的所有步骤。

工作表 1 中,用户在其中输入函数

我希望当用户在工作表中输入“打开烤箱”时,它会从工作表 2 中提取功能名称为打开烤箱的每个步骤。因此它看起来如下所示:

在此处输入图片描述

目前我正在尝试

=IFERROR(INDEX(Sheet2!B4:B7,SMALL(IF(Pr!C4=Sheet2!A4:A7,ROW(Sheet2!B4:B7)-3),ROW()-3)),"Nothing found")

除非我更改行索引,否则它仅返回工作表 2 的第一步。

答案1

我认为如果没有 VBA 或相当复杂的公式,您就无法复制所需的布局;如果您在表中添加一个步骤,它可能会中断。

但是,如果您想将每个函数的步骤放入单个单元格中(每个步骤之间用换行符分隔,那么工作表,你可以使用,例如:

=JOIN(CHAR(10), FILTER(Sheet2!$B$2:$B$5,A2=Sheet2!$A$2:$A$5))

指示

在此处输入图片描述

用户表

在此处输入图片描述

在 Excel 2016 中,如果我没记错的话,它有这个TEXTJOIN功能,但没有这个FILTER功能,尝试一下:

=TEXTJOIN(CHAR(10),TRUE,INDEX(tblSteps[Steps],AGGREGATE(15,6,1/(tblSteps[Function Name]=C4)*ROW(tblSteps) - ROW(tblSteps[#Headers]),ROW(INDEX($A:$A,1,1):INDEX($A:$A,COUNTIF(tblSteps[Function Name],C4))))))

如果您的 Excel 版本中没有动态数组,则可能需要输入ctrl+shift+enter和/或使用以下变体:

=TEXTJOIN(CHAR(10),TRUE,INDEX(tblSteps[Steps],N(IF(1,AGGREGATE(15,6,1/(tblSteps[Function Name]=C4)*ROW(tblSteps) - ROW(tblSteps[#Headers]),ROW(INDEX($A:$A,1,1):INDEX($A:$A,COUNTIF(tblSteps[Function Name],C4))))))))

相关内容