答案1
假设的列分别为 的 A、B 和 C sheet1
,输出从 的第 2 行开始sheet2
。
返回名字:
=IFERROR(INDEX(Sheet1!$A$2:$A$23,SMALL(IF("Responded"=Sheet1!$C$2:$C$23,ROW(Sheet1!$A$2:$A$23),""),ROW()-1)-1,1),"")
返回姓氏:
=IFERROR(INDEX(Sheet1!$B$2:$B$23,SMALL(IF("Responded"=Sheet1!$C$2:$C$23,ROW(Sheet1!$A$2:$A$23),""),ROW()-1)-1,1),"")
返回响应:
=IFERROR(INDEX(Sheet1!$C$2:$C$23,SMALL(IF("Responded"=Sheet1!$C$2:$C$23,ROW(Sheet1!$A$2:$A$23),""),ROW()-1)-1,1),"")
向下拖动公式。
您可以根据需要更改单元格引用。
- 行
2
涵盖23
了我正在查看的样本数据。
答案2
与贾斯汀的回答非常相似,
工作表1
2 张桌子,
- 包含实际源数据的 SourceTbl
- StatusTbl 包含“唯一”的状态值
您可以通过选择数据集并按 来创建表格Ctrl + T
。 如果有,请选中“我的表格有标题”复选框,否则 Excel 将自动为您创建一个,然后您可以重命名。
可以在“表格工具”功能区->设计选项卡中修改表格名称(必须选择表格中的至少任意 1 个单元格)。
工作表2
首先,创建一个与 SourceTbl 类似的表格结构,但将表格中的单元格留空。
单元格 F4 包含一个数据验证下拉列表,显示 Sheet1 的 StatusTbl 条目。此单元格自定义名为“myStatus”
单元格 A5包含以下数组公式,
=IFERROR(INDEX(SourceTbl[First Name],SMALL(IF(SourceTbl[Status]=myStatus,ROW(SourceTbl[Status])-ROW(INDEX(SourceTbl[Status],1,1))+1),ROW($A1))),"")
复制粘贴并点击Ctrl + Shift + Enter
单元格 B5:
=IFERROR(INDEX(SourceTbl[Last Name],SMALL(IF(SourceTbl[Status]=myStatus,ROW(SourceTbl[Status])-ROW(INDEX(SourceTbl[Status],1,1))+1),ROW($A1))),"")
复制粘贴并点击Ctrl + Shift + Enter
单元格 C5:
=IFERROR(INDEX(SourceTbl[Status],SMALL(IF(SourceTbl[Status]=myStatus,ROW(SourceTbl[Status])-ROW(INDEX(SourceTbl[Status],1,1))+1),ROW($A1))),"")
复制粘贴并点击Ctrl + Shift + Enter
笔记:
可以通过展开 Sheet2 中的表格来检索任何遗漏的行(表格默认启用“计算列”功能,该功能将自动分别复制每列的公式)
如果 Sheet2 中的表格有空行,则表示您已检索所有匹配的数据,如果没有可检索的数据,则公式将显示空字符串。
您可以根据需要从下拉列表中更改单元格 F4 中的“myStatus”值。将捕获来自 SourceTbl(Sheet1)的相应数据。
希望这可以帮助。