Google Sheets数据整理公式优化:保留产品编码并清理无效数据
Google Sheets 数据整理:关联产品编码与有效项目
核心思路
先把产品编码向下填充到其下属的所有项目行,再过滤掉项目名为-或空值的无效行,最终实现每个有效项目都对应所属产品编码。
新版Sheets公式(推荐)
=QUERY(ARRAYFORMULA({SCAN("", Dummy!B2:B, LAMBDA(acc, curr, IF(curr<>"", curr, acc))), TRIM(Dummy!C2:C)}), "SELECT * WHERE Col2 <> '-' AND Col2 <> ''", 0)
公式拆解:
SCAN("", Dummy!B2:B, LAMBDA(acc, curr, IF(curr<>"", curr, acc))):遍历产品编码列(B列),遇到非空编码就保留,空行则继承上一行的编码,完成编码向下填充。ARRAYFORMULA({...}):将填充后的编码列和清理后的项目名列合并为二维数组。QUERY(...):过滤掉项目名为-或空的行,仅保留有效项目数据。
旧版Sheets兼容公式
如果你的Sheets版本不支持SCAN函数,可使用以下公式:
=QUERY(ARRAYFORMULA({VLOOKUP(ROW(Dummy!B2:B), FILTER({ROW(Dummy!B2:B), Dummy!B2:B}, Dummy!B2:B<>""), 2, TRUE), TRIM(Dummy!C2:C)}), "SELECT * WHERE Col2 <> '-' AND Col2 <> ''", 0)
公式拆解:
FILTER({ROW(Dummy!B2:B), Dummy!B2:B}, Dummy!B2:B<>""):提取所有含有效产品编码的行及其行号。VLOOKUP(ROW(Dummy!B2:B), ..., 2, TRUE):用当前行号匹配编码行的行号区间,返回对应产品编码,实现向下填充。
注意事项
- 将公式中的
Dummy替换为你的实际工作表名称。 - 确保产品编码行的B列(产品编码列)为非空值,C列(项目名称列)为
-,该逻辑才能正常生效。
内容的提问来源于stack exchange,提问作者Anna
相关产品推荐
相关产品推荐

