Google Sheets提取两字符间文本及拆分单列动态矩阵问题咨询
Google Sheets单列多产品索赔数据拆分方案
你可以直接使用下方动态数组公式实现整表自动拆分,输入公式后会自动溢出所有结果,无需手动下拉:
=LET( // 读取非空原始数据,可修改为你的原始数据所在工作表范围 raw, FILTER('原始数据表'!A2:F, '原始数据表'!A2:A<>""), // 提取需要保留的公共字段:此处默认1=客户、2=PO号、3=索赔原因,可按需调整列序号 public_fields, CHOOSECOLS(raw,1,2,3), // 提取逗号分隔的多产品字符串所在列,此处默认是第5列(E列) product_list_col, CHOOSECOLS(raw,5), // 处理F列内容,提取冒号后的有效信息,和你现有逻辑一致 extra_field, BYROW(CHOOSECOLS(raw,6), LAMBDA(f_val, IFERROR(REGEXEXTRACT(f_val,": (.+)"),""))), // 逐行拆分多产品条目,生成多行结构 split_result, BYROW(SEQUENCE(ROWS(raw)), LAMBDA(row_idx, LET( curr_public, INDEX(public_fields,row_idx,0), curr_products, TOROW(SPLIT(INDEX(product_list_col,row_idx,1), ","), 1), curr_extra, INDEX(extra_field,row_idx,1), product_count, COLUMNS(curr_products), // 公共字段重复对应产品数,拼接每个产品条目和额外字段 HSTACK( MAKEARRAY(product_count, COLUMNS(curr_public), LAMBDA(r,c, INDEX(curr_public,1,c))), TRANSPOSE(curr_products), MAKEARRAY(product_count,1, LAMBDA(r,c, curr_extra)) ) ) )), // 合并所有拆分结果,添加表头,可按需修改表头内容 VSTACK({"客户","PO号","索赔原因","单产品信息","F列提取内容"}, TOCOL(split_result, 2)) )
按需调整说明
- 若你的原始数据字段位置和默认参数不同,修改
CHOOSECOLS对应的列序号即可 - 若产品之间的分隔符不是逗号,修改
SPLIT函数内的分隔符参数即可 - 若拆分后的单产品信息需要进一步拆分为SKU名称、货号、UoM、数量4个字段,假设单产品信息内部用
/分隔,可将公式中TRANSPOSE(curr_products)替换为BYROW(TRANSPOSE(curr_products), LAMBDA(p, SPLIT(p, "/"))),同步修改对应表头即可
内容的提问来源于stack exchange,提问作者Beth L
相关产品推荐
相关产品推荐

