Google Sheets如何用单个公式跨表提取匹配数据汇总至Sheet3
Google Sheets 单公式跨表提取唯一商品并匹配价格
将下述公式直接粘贴至Sheet3的A1单元格,即可自动输出两列结果:第一列为Sheet2中出现过的去重后基础商品名,第二列为Sheet1中对应的价格,最终结果仅包含Dress、Jeans、Shirt三个符合要求的条目,无需手动下拉填充。
=ARRAYFORMULA(LET( base_names, UNIQUE(FILTER(REGEXEXTRACT(Sheet2!A2:A,"^(.+?)/"),Sheet2!A2:A<>"")), matched_prices, XLOOKUP(base_names,Sheet1!A:A,Sheet1!B:B,""), FILTER(HSTACK(base_names,matched_prices),matched_prices<>"") ))
公式逻辑说明
- 文本截取:
REGEXEXTRACT(Sheet2!A2:A,"^(.+?)/")匹配Sheet2商品单元格中第一个斜杠前的内容,直接剥离「/颜色」后缀,得到基础商品名;外层FILTER过滤空单元格,避免空白行参与计算 - 去重处理:
UNIQUE()对截取得到的基础商品名去重,同一商品对应多个颜色款时仅保留1条记录 - 价格匹配:
XLOOKUP()对去重后的商品名和Sheet1的Name列做精确匹配,拉取对应Price列的数值 - 结果组装:
HSTACK将商品名、对应价格拼接为标准两列结构,最后一层FILTER剔除无匹配价格的异常条目;LET将中间计算步骤定义为变量简化公式结构,ARRAYFORMULA支持整列批量运算,输入一次即可覆盖所有结果行
适配说明
若Sheet2的商品数据起始行不是A2(如表头占A1、数据从其他行开始),只需将公式内
Sheet2!A2:A替换为实际数据范围即可,公式会自动适配数据行数,无需手动设置范围上限。
仅靠QUERY原生语法无法完成该需求:QUERY不支持批量正则文本处理+跨表匹配的组合逻辑,必须嵌套文本处理、去重类函数才能单公式输出结果。
内容的提问来源于stack exchange,提问作者ph4ll3n
相关产品推荐
相关产品推荐

