【实战分享】Excel多行数据合并单行?一套“存钱罐”逻辑完美解决!
评论
收藏

【实战分享】Excel多行数据合并单行?一套“存钱罐”逻辑完美解决!

经验分享
长的高高兽
2025-11-22 16:14·浏览量:551
长的高高兽
发布于 2025-11-22 16:14551浏览

1. 场景痛点

处理电商或者后台导出数据时,经常遇到这种反人类的格式:

  • A列(SKU):只有第一行有值,下面全是空的,表示属于同一个商品。
  • B列(属性/数值):分散在好多行。

目标:我要把图1同一个SKU下的所有B列数据,合并到一个单元格里(用换行符隔开),变成图2标准的“一行一个SKU”格式。


2. 逻辑全过程推演(第一次运行发生了什么?)

为了让大家看懂,我模拟一下程序读取前3行时的真实运行过程,大家对照着我的指令截图看:

假设数据是这样的:

  • 第1行:A列=sku1,B列=数据1
  • 第2行:A列=(空),B列=数据2
  • 第3行:A列=sku2,B列=数据3

程序开始运行:

  • 初始状态:变量 待写入的内容 是空的 (""),写入行号 = 1。
  • 👉 循环读取第 1 行 (sku1, 数据1)
  • 判断A列:不是空值(是新SKU)。
  • 判断待写入的内容:此时它是空的(因为刚开始运行)。
  • 结果:不执行写入动作(避免了把空数据写进去)。
  • 赋值:把 数据1 存入变量。此时 待写入的内容 = "数据1"。
  • 👉 循环读取第 2 行 (空, 数据2)判断A列:是空值(进入Else分支)。
  • 拼接:执行 待写入的内容 + "\n" + str(数据2)。
  • 结果:此时 待写入的内容 = "数据1\n数据2"(\n代表换行)。
  • 👉 循环读取第 3 行 (sku2, 数据3)判断A列:不是空值(发现新SKU了!说明上一单结束了)。
  • 判断待写入的内容:此时它是 "数据1\n数据2",不是空的。
  • 写入动作:触发! 把 "数据1\n数据2" 写入到新表的第1行,写入行号还是初始变量,因为没自增过。
  • 行号自增:写入行号 变成 2。
  • 赋值:把当前行的 数据3 覆盖存入变量。此时 待写入的内容 = "数据3"。
  • ......循环结束后的补刀
  • 因为最后一行读完循环就停了,手里还攥着最后一个 SKU 的数据没写。
  • 所以在循环外面加一个 IF:如果变量里还有值,补写最后一行。


3. 具体的影刀指令

这是我搭建的完整流程,大家可以照抄:


收藏4
全部评论1
最新
发布评论
评论