如何在Google Sheets中提取多列匹配数据
提取Google Sheets中所有匹配表头的列
当表头存在多个相同名称(如多个"Sales"列)时,常规FILTER仅返回第一匹配列,可通过以下公式动态提取所有匹配列:
方法1:结合FILTER、TRANSPOSE与MMULT
假设数据范围为A1:Z100(表头在第1行),提取所有表头为"Sales"的列:
=FILTER(A1:Z100, TRANSPOSE(MMULT(--(A1:Z1="Sales"), SEQUENCE(COLUMNS(A1:Z1),1,1,0))))
原理说明
--(A1:Z1="Sales"):将表头行转换为布尔值数组,匹配"Sales"的位置为1,其余为0MMULT(...):对每一列的匹配结果求和,匹配列会得到1,未匹配列得到0TRANSPOSE:转置求和结果,让FILTER能按列维度判断筛选条件FILTER:最终筛选出所有求和结果为1的列
方法2:使用QUERY函数实现
同样基于A1:Z100范围,公式如下:
=QUERY(A1:Z100, "select "&JOIN(", ", ARRAYFORMULA("Col"&FILTER(SEQUENCE(COLUMNS(A1:Z1)), A1:Z1="Sales")))
原理说明
FILTER(SEQUENCE(...), A1:Z1="Sales"):获取所有匹配"Sales"表头的列序号ARRAYFORMULA("Col"&...):将列序号转换为QUERY可识别的Col1/Col2格式JOIN(", ", ...):把所有目标列标识用逗号拼接,生成QUERY的查询字段QUERY:按拼接后的字段查询,返回所有匹配列
注意事项
- 替换公式中的
A1:Z100为你的实际数据范围 - 若表头不在第1行,将
A1:Z1替换为对应表头行(如A2:Z2) - 两个公式均支持动态适配:新增匹配表头的列时,结果会自动包含新列
内容的提问来源于stack exchange,提问作者HSHO
相关产品推荐
相关产品推荐

