You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 05:18:18