如何基于Google Sheets两个标签页数据生成Tab3格式输出?
解决Google Sheets多标签页合并并实现分组首行显示的问题
核心公式(Tab3的A2单元格输入)
LET( // 格式化Tab2维修数据为四列结构 combined, QUERY(Tab2!A2:C, "SELECT A,B,'',C WHERE A IS NOT NULL", 0), // 格式化Tab1售出数据为四列结构 sales, QUERY(Tab1!A2:C, "SELECT A,B,C,''", 0), // 合并两个数据集 merged, {sales; combined}, // 按周数、商品名称排序,确保同组数据连续 sorted, SORT(merged, 1, TRUE, 2, TRUE), // 生成分组唯一标识(周数+商品名) group_key, sorted!A:A & sorted!B:B, // 判断是否为每组第一行 is_first, group_key <> OFFSET(group_key, 1, 0), // 生成最终结果:首行保留完整信息,后续行仅显示维修内容 final, ARRAYFORMULA( IF( is_first, sorted, {"", "", "", sorted!D:D} ) ), // 过滤空行 FILTER(final, sorted!A:A <> "") )
公式说明
- 数据格式化:将Tab1(售出)和Tab2(维修)的数据统一为四列结构,方便合并后对齐。
- 合并与排序:合并两个数据集后按周数、商品名称排序,保证同一周同一商品的所有记录连在一起。
- 分组标记:通过
周数+商品名的组合标识,判断当前行是否为该组的第一行。 - 内容填充规则:
- 组内第一行:保留周数、商品名称、售出数量,第四列留空
- 组内后续行:仅保留第四列的维修内容,前三列置空
- 过滤空行:自动去除合并后产生的空行,保证数据整洁。
注意事项
- 如果Tab1中存在同一周同一商品的多条售出记录,需先对Tab1数据去重,将公式中的
Tab1!A2:C替换为UNIQUE(Tab1!A2:C)。 - 确保Tab1和Tab2的表头列顺序一致(周数、商品名称、第三列对应售出/维修内容),否则需调整
QUERY语句中的列选择。 - 输入公式时需确保Tab3的A2单元格为空,公式会自动填充整个数据区域。
内容的提问来源于stack exchange,提问作者Kevin Belleza
相关产品推荐
相关产品推荐

