Excel 365多重复值Lookup查询问题(非VBA实现)
无需VBA的多实例Lookup解决方案(Excel 365)
假设你的源数据在Sheet1,结构为:
- A列:Vessel(船舶名称)
- B列:Rank(职级)
- C列:Value(对应数值)
汇总表在Sheet2,A列为唯一船舶列表,后续列分别对应各职级的第N个数值(如B列=OS1,C列=OS2,D列=OLR1等),可以用以下方法实现:
方法1:指定提取第N个实例(适合固定数量的实例)
在Sheet2的B2单元格(提取第一个OS的数值)输入公式:
=IFERROR(INDEX(FILTER(Sheet1!$C:$C,(Sheet1!$A:$A=$A2)*(Sheet1!$B:$B="OS")),1),"")
将公式向右复制到C2(提取第二个OS),只需把公式中的1改为2:
=IFERROR(INDEX(FILTER(Sheet1!$C:$C,(Sheet1!$A:$A=$A2)*(Sheet1!$B:$B="OS")),2),"")
同理,提取OLR的第N个值,把"OS"替换为"OLR"即可。
方法2:动态横向溢出所有实例(适合不确定实例数量)
Excel 365的动态数组功能可以一次性生成所有对应值并横向填充,在Sheet2的B2单元格输入公式:
=TOROW(FILTER(Sheet1!$C:$C,(Sheet1!$A:$A=$A2)*(Sheet1!$B:$B="OS")),,TRUE)
公式会自动将该船舶下所有OS的数值横向溢出到右侧单元格,无需逐个手动调整。
补充技巧
- 自动生成唯一船舶列表:在
Sheet2的A2单元格输入=UNIQUE(Sheet1!$A:$A),自动溢出所有不重复的船舶名称。 - 处理空格问题:如果源数据存在多余空格,可在公式中加入
TRIM函数,比如将Sheet1!$A:$A替换为TRIM(Sheet1!$A:$A),避免筛选失效。
内容的提问来源于stack exchange,提问作者Cos Dim
相关产品推荐
相关产品推荐

