如何用=FILTER()提取堆叠列匹配行对应的其他列数据
实现方案
你现在用的FILTER隔列去空堆叠逻辑是对的,要拿到每个返回值对应行的Map、Side、Site、Win/Loss等字段,不用写VLOOKUP/XLOOKUP这类匹配公式,直接调整FILTER的返回数组结构就行,匹配精度100%不会错位。
核心逻辑
你原来的公式只把S、U、W、Y、AA这5列的非空值做了纵向拼接,现在只要给每一段拼接的目标列,配上同一行范围内你需要的关联列,一起参与纵向堆叠,过滤条件完全沿用你原来写的非空判断即可。过滤后每一行的关联字段和堆叠值是严格一一对应的。
参考公式
假设Map、Side、Site、Win/Loss分别在Storage表的M、N、O、P列(实际用的时候换成你表里对应的真实列标就行),公式写法如下:
=FILTER( { Storage!M2:M, Storage!N2:N, Storage!O2:O, Storage!P2:P, Storage!S2:S; Storage!M2:M, Storage!N2:N, Storage!O2:O, Storage!P2:P, Storage!U2:U; Storage!M2:M, Storage!N2:N, Storage!O2:O, Storage!P2:P, Storage!W2:W; Storage!M2:M, Storage!N2:N, Storage!O2:O, Storage!P2:P, Storage!Y2:Y; Storage!M2:M, Storage!N2:N, Storage!O2:O, Storage!P2:P, Storage!AA2:AA }, LEN({Storage!S2:S;Storage!U2:U;Storage!W2:W;Storage!Y2:Y;Storage!AA2:AA}) )
注意点
- 所有列的引用行范围必须完全对齐:不管是关联列还是你要堆叠的目标列,都从第2行开始,到同一最后数据行结束,不能有的列范围长有的短,不然会错位
- 公式返回的结果从左到右就是你配置的Map、Side、Site、Win/Loss字段,最后一列是你原本要堆叠的值
- 要是你用的是不支持动态数组的旧版Excel,先选好要输出结果的多列区域,输完公式按
Ctrl+Shift+Enter走数组计算就行 - 如果你要提取的字段本身就是S到AB之间间隔的T、V、X、Z、AB列,直接把对应列替换到公式里关联列的位置就可以
内容的提问来源于stack exchange,提问作者Fettuccine
相关产品推荐
相关产品推荐

