Google Sheets如何排除空值将明细行堆叠至同一列并重复对应客户ID
Google Sheets 宽表转指定长表解决方案
直接在空白工作表的A1单元格粘贴下面的公式,回车即可一次性输出所有符合要求的结果,不需要逐行手动操作:
=LET( raw_data, FILTER(A2:H, A2:A<>""), table_header, {"S No.","Customer ID","明细项","金额","日期"}, split_result, REDUCE( table_header, SEQUENCE(ROWS(raw_data)), LAMBDA(accumulator,row_index, LET( current_row, INDEX(raw_data,row_index,), serial_num, INDEX(current_row,1,1), customer_id, INDEX(current_row,1,2), p1, INDEX(current_row,1,3), amt1, INDEX(current_row,1,4), date1, INDEX(current_row,1,5), p2, INDEX(current_row,1,6), amt2, INDEX(current_row,1,7), date2, INDEX(current_row,1,8), record1, IF(p1<>"",{serial_num,customer_id,p1,amt1,date1},), record2, IF(p2<>"",{serial_num,customer_id,p2,amt2,date2},), VSTACK(accumulator, IFERROR(FILTER(record1,{1,0,0,0,0}),""), IFERROR(FILTER(record2,{1,0,0,0,0}),"")) ) ) ), FILTER(split_result,INDEX(split_result,,1)<>"") )
实现逻辑
- 自动过滤原始表中序号为空的无效行,减少冗余计算
- 逐行拆分宽表的两组明细字段,空明细会被自动跳过,不会生成无内容的空行
- 每条有效明细都会自动匹配对应的序号、客户ID,和所属的金额、日期一一对应
- 输出结果固定为要求的5列结构,首行自带表头,原始数据修改时结果会自动同步更新
适配调整说明
- 如果原始数据起始行不是第2行,把公式中
A2:H、A2:A的行号替换为实际数据起始范围即可 - 如果后续新增第三组明细字段(如Particular3/Amount3/Date3),只需在公式内新增对应字段的取值变量,补充对应record的判断和拼接逻辑即可适配
- 公式输出为动态数组,请勿在结果生成区域手动输入内容,否则会阻塞数组自动扩展
内容的提问来源于stack exchange,提问作者ranjana raghav
相关产品推荐
相关产品推荐

