基于指定条件生成对应值数组的Excel函数问题求助
解决Excel按ID横向分组提取姓名的问题
适用Excel 365/2021(动态数组版本)
直接在Sheet2的B2单元格输入以下公式,公式会自动横向填充该ID对应的所有姓名,空列自动留空:
=TRANSPOSE(FILTER(Sheet1!$B$2:$B$10,Sheet1!$A$2:$A$10=A2))
- 把
Sheet1!$B$2:$B$10和Sheet1!$A$2:$A$10替换成你实际的数据源范围 - 下拉公式到所有ID行即可
适用旧版Excel(需数组公式确认)
如果你用的是不支持动态数组的旧版Excel,按以下步骤操作:
- 选中Sheet2中B2到E2的单元格(对应Name1到Name4列)
- 输入以下公式:
=IFERROR(INDEX(Sheet1!$B$2:$B$10,SMALL(IF(Sheet1!$A$2:$A$10=$A2,ROW(Sheet1!$A$2:$A$10)-ROW(Sheet1!$A$2)+1),COLUMN(A:A))),"")
- 必须按Ctrl+Shift+Enter组合键完成数组公式的确认(输入完公式不要直接回车)
- 选中B2:E2区域,下拉到所有ID行
你之前用SMALL/ROW失败的常见原因:
- 未正确计算行偏移:
ROW(Sheet1!$A$2:$A$10)-ROW(Sheet1!$A$2)+1是把数据源的行号转换成相对位置,少了这一步会引用错误的行 - 未选中整列范围再按数组确认:单独输入单个单元格的数组公式无法横向匹配多个姓名
- COLUMN引用错误:
COLUMN(A:A)用于对应第1个、第2个...姓名,逻辑错位会导致结果空白或错误
注意事项
- 确保Sheet1的数据源范围包含所有行,若数据会动态增加,建议把Sheet1的数据转换成Excel表格(Ctrl+T),公式会自动扩展范围
- 如果某个ID的姓名数量超过4列,只需扩展选中的列数即可
内容的提问来源于stack exchange,提问作者tryingtolearnexcel
相关产品推荐
相关产品推荐

