合并单元格转一维,灵犀一口气写了5种解法,最短130个字符

Lv.4 核心创作者
🤯合并单元格转一维,灵犀一口气写了5种解法,最短130个字符
做表的人,谁没被合并单元格坑过?
领导发来一张表:左边两列是地区、型号,合并的;上面两行是季度、月份,也是合并的;中间塞了几十个数字。他要你把它变成一维明细表——地区、型号、季度、月份、数量,一行一条。你一看,几百个格子,手动拖?复制粘贴改半天?眼都花了。
这种「多维合并单元格转一维」的活,我让灵犀来干,它一口气写了 5 种解法,最短的只要 130 个字符,还自带场景:电商、制造、教育、项目、人力,一个行业一种思路。
一、场景:合并的交叉表,变成五行一维表
先说清楚要干什么。原始表长这样:前两列是分类(比如地区、型号),表头两行是嵌套的(1季度、2季度,下面各跟 1-6 月),中间全是数字。合并单元格把「地区」「型号」这些值只显示在每组的第一个格子,其余是空的。
要的结果:一张干净的一维表,五列——分类、子分类、季度、月份、数量。合并单元格的空值要补全,交叉表要按行摊平,就这两件事。
这个场景放哪个行业都成立:电商看地区型号月销量,工厂看车间产品月产量,学校看班级科目月成绩,本质一模一样。
5 种解法的共同骨架,是一条空值补全公式:
fx=LAMBDA(a,SCAN(,a,LAMBDA(x,y,IF(y<>"",y,x))))一句话:从上往下扫,遇到空就填上一个非空的值——合并单元格的显示值就这么被「灌」满了。后面 5 种方法全在用它。(灵犀交付5个公式)
二、方法1:GROUPBY 聚合展开——最短,130个字符
第一个场景是电商:地区型号季度月份数量。
AI 选了一个刚出不久的函数 GROUPBY(WPS 里叫「聚合」),分组、展开、一步到位:
=LET(fx,LAMBDA(a,SCAN(,a,LAMBDA(x,y,IF(y<>"",y,x)))),GROUPBY(A3:B5,C3:H5,CHOOSE({1,2,3},SINGLE,TOCOL(fx(C1:H1)),TOCOL(C2:H2)),,0))fx 先把地区、型号列的空值补全
GROUPBY按地区+型号分组,中间的数据区按季度、月份展开
第 5 参数写 0:不显示总计,输出就是干净的 5 列
130 个字符,全场最短,推荐指数五星。速度也是最快的——聚合函数内部展开,一步到位。
只认纯数字,不能有 0 和空格
,否则这些行会被过滤掉,而且分组会按自己的顺序重排。数据规整,它天下第一;
数据脏一点,它先翻脸
。
三、方法4:文本中转——先合再拆,138个字符
第二个场景换成项目:光伏/储能产品洲国人数。四层维度,比三层的还多一维。
这次灵犀的思路绕了一圈:先把所有列用文本拼起来,再按分隔符拆回去。合起来是整张表,拆开就是一维明细。
=LET(fx,LAMBDA(a,SCAN(,a,LAMBDA(x,y,IF(y<>"",y,x)))),TEXTSPLIT(TEXTJOIN("|",1,A3:A6&"·"&B3:B6&"·"&fx(C1:H1)&"·"&C2:H2&"·"&C3:H6),"·","|"))每列内容用「·」连在一起,列与列之间用「|」隔开
TEXTJOIN 把全部拼成一个长字符串
TEXTSPLIT 按「·」拆列、按「|」拆行,一维表原地还原
138 个字符,第二短。维度越多,这个方法优势越大——它是唯一不怕表头再多两层的。
32767 个字符
就报
#VALUE!
,大约 1800 行触顶;而且输出全是文本,日期必须先格式化再拼。
四、方法3:REPTARRAY 重复展开——复制两下,217个字符
第三个场景是教育:班级科目季度月份成绩。
AI 这次用了一个 WPS 新函数 REPTARRAY(重复展开),思路是「复制」:班级列往下复制、月份行往右复制,复制完了 TOCOL 一摊平,顺序天然正确。
=LET(fx,LAMBDA(a,SCAN(,a,LAMBDA(x,y,IF(y<>"",y,x)))),j,C3:H6,c,COLUMNS(j),r,ROWS(j),HSTACK(TOCOL(REPTARRAY(A3:A6,1,c)),TOCOL(REPTARRAY(B3:B6,1,c)),TOCOL(REPTARRAY(fx(C1:H1),r,1)),TOCOL(REPTARRAY(C2:H2,r,1)),TOCOL(j)))REPTARRAY(班级列, 1, 列数):列向量水平复制,每个班级连续出现
REPTARRAY(季度行, 行数, 1):行向量垂直复制,整轮重复
TOCOL 按行优先摊平,不用排序,顺序就是对的
217 个字符,五星推荐。双参数控制方向是它的精髓:第二个参数管竖着复制,第三个参数管横着复制,看懂这一个点,这个公式就通了。
REPTARRAY 是 WPS 新函数
,Excel 里没有;重复次数必须用 ROWS/COLUMNS 算准,差一个格子数据就错位。
五、方法2:索引回查——教科书写法,235个字符
第四个场景回到制造业:车间产品季度月份产量。
AI 这次的思路最「正统」:生成全表格点的序号,用 INT/MOD 拆出行号列号,再 INDEX 一个一个把内容捞出来。
=LET(fx,LAMBDA(a,SCAN(,a,LAMBDA(x,y,IF(y<>"",y,x)))),j,C3:H6,n,ROWS(A3:A6)*COLUMNS(j),k,SEQUENCE(n),r,INT((k-1)/COLUMNS(j))+1,c,MOD(k-1,COLUMNS(j))+1,HSTACK(INDEX(A3:A6,r),INDEX(B3:B6,r),INDEX(fx(C1:H1),c),INDEX(C2:H2,c),INDEX(j,r,c)))SEQUENCE 生成 24 个格点序号(6 列 * 4 行)
INT/MOD 把序号拆成第几行、第几列
INDEX 按行列号回查车间、产品、季度、月份、产量
HSTACK 把五列拼成一行一维表
235 个字符,四星。它是唯一保持源数据顺序的写法——GROUPBY 会重排,它不会;理解门槛稍高,但可迁移性最强,任何规则矩形数据都能套。
INDEX 是原样取值
,空格不会自动过滤,要配 TOCOL 去空;
只适合规规矩矩的矩形数据
。
六、方法5:MMULT 矩阵外积——思路最野,286个字符
最后一个场景:人力分析,省市学历部门人数。
AI 憋了个大招:用矩阵乘法 MMULT 做「外积」,把行列坐标模式算出来,再压平回查。思路是 5 个里最独特的一个——用数学矩阵生成坐标,而不是用序号。
=LET(fx,LAMBDA(a,SCAN(,a,LAMBDA(x,y,IF(y<>"",y,x)))),j,C3:H6,rp,TOCOL(MMULT(SEQUENCE(ROWS(j)),TRANSPOSE(SEQUENCE(COLUMNS(j),,1,0)))),cp,TOCOL(MMULT(SEQUENCE(ROWS(j),,1,0),SEQUENCE(1,COLUMNS(j)))),HSTACK(INDEX(A3:A6,rp),INDEX(B3:B6,rp),INDEX(fx(C1:H1),cp),INDEX(C2:H2,cp),INDEX(j,rp,cp)))MMULT 外积生成两个坐标数组:行号重复模式 + 列号循环模式
TOCOL 压平,INDEX 回查五列内容
286 个字符,最长,三星。但思路值得开眼界:矩阵家族的写法,跟前面的序号、复制、拼接全都不一样,属于「换一个数学工具解决同一个问题」。
MMULT 只认数值
,坐标必须 TOCOL 压平;文本内容只能靠 INDEX 间接取,不能直接进矩阵。
七、5 种方法,AI 自己排了个名
写完之后,AI 把 5 条公式的字符数、思路、推荐指数、功能限制全部整理成一张对比表,公式驱动、自动生成:
排名 | 方法 | 长度 | 精简思路 | 推荐 |
1 | 分组聚合展开 (GROUPBY) | 130 | 聚合函数吐数组一步展开 | ★★★★★ |
2 | 文本中转 (TEXTSPLIT) | 138 | 先合再拆,维度越多越强 | ★★★☆☆ |
3 | 重复展开 (REPTARRAY) | 217 | 双参数方向控制+TOCOL | ★★★★★ |
4 | 索引回查 (SEQUENCE+INDEX) | 235 | 全格点序号拆行列教科书式 | ★★★★☆ |
5 | 矩阵外积(MMULT) | 286 | 矩阵生成坐标,思路独特 | ★★★☆☆ |
最短 130,最长 286,差了一倍多。但注意,短的未必适合你:GROUPBY 最快但数据不能脏,文本中转不怕维度多但行数多了会爆,索引回查最稳但只认矩形数据。选哪个,看你的数据脾气。
:数据干净选聚合,维度多层走文本,想稳就上索引回查,新函数不挑环境用重复展开,开眼界看矩阵外积。
八、避坑清单(实测踩出来的)
这轮灵犀实测踩出来的坑,比公式本身更值钱:
合并单元格的空值必须先用 SCAN 补全,不补全,后面所有方法都白搭
GROUPBY 会过滤含 0 和空格的行,丢组不可修复,数据脏就换方法
TEXTJOIN 合并超 32767 字符直接报 #VALUE!,约 1800 行触顶
REPTARRAY 重复次数用 ROWS/COLUMNS 精确控制,写错一个数,全表错位
TEXTSPLIT 第二参数是列分隔符、第三参数是行分隔符,写反了数据全乱
序号拆行列:INT((k-1)/列数)+1 是行号,MOD(k-1,列数)+1 是列号,记这一对就行
最后说一句
以前这种多维表转一维,我大概率是「手动复制粘贴 + 祈祷别错」。现在灵犀一口气给 5 种解法、5 个行业场景,还自己排了名、标了限制——人做的事变成了两件:定场景,验收。
这就是我最近在做的「AI 写表格公式」项目:每天一个高频场景,让灵犀写公式,我验收,连更 7 天,最后把所有场景封装成技能。今天第 4 天,交作业。
想要完整公式清单的,评论区扣「公式」。
术语解释
文章里出现的技术名词,一句话说清楚:
合并单元格:几个格子合成一个,值只显示在左上角,其余变成空值——做表常见,转数据最烦。
动态数组(Dynamic Array):公式写一个格子,结果自动溢出一片区域的写法,不用拖填充。
GROUPBY(聚合):按指定列分组、再对其他列做统计或展开的函数,分组统计一把抓。
TEXTSPLIT(文本拆分):按分隔符把文本拆成多列多行的函数,「先合再拆」的关键。
REPTARRAY(重复展开):把数组按指定次数横着、竖着复制的 WPS 新函数。
MMULT(矩阵乘法):两个矩阵相乘的数学函数,这里用来生成行列坐标。
SCAN:从上到下扫描数组,把每次的计算结果传给下一个格子的函数。
INDEX:按行号列号从区域里取值的函数,「索引回查」方法全靠它。
TOCOL:把多行多列的数据按顺序摊成一列的函数。
HSTACK:把多个数组横向拼成一行的函数。
古老师(古哥计划)|中小制造数字化专家|金山 KVP(金山办公最有价值专家)|金山多维表格应用场景专家|金山 WPS 社区优秀创作者
深耕中小制造业数字化落地,擅长用 WPS 多维表格 +灵犀低代码方案,帮工厂快速搭建进销存、生产计划、质量追溯等轻量化系统。不用复杂 IT,低成本落地,已服务数百家制造企业,实战经验丰富。
#AI写表格公式 #动态数组 #WPS #多维转一维 #合并单元格 #PMC
本文由灵犀辅助创作
工具:灵犀专业版
模型:GLM-5.3-Flash 超高
Lv.3优质创作者
Lv.4 核心创作者
Lv.4 核心创作者