多行单元格合并后保留全部内容且自动换行

小桥流水

前言

前天有网友提出:如何将合并单元格旁边的数值也合并,且保留内容并自动换行。直观的表达如下图所示:

1方法一

经过初步分析我是这样做的:

第一步:在C列写入公式,将B列的值自下而上根据A列合并单元格的边界进行向上滚动,最终在合并单元格的第一行,形成完整的内容。

C1= =IF(AND(A3<>"",A2=""),B2,B2&CHAR(10)&C3),下拉填充公式。

原理:如果A3<>””且A2=””说明A2是合并单元格的最后一行,因此返回B2的值,否则返回B2与下一单元格B3的值,并用换行符CHAR(10),连接起来,以此类推,在每个合并单元格的最上一行则返回完整的内容

第二步:

在D列,将每个合并单元格的第一行对应的C列的值取出,其它为空

D2=IF(A2<>"",C2,""),下拉填充公式

原理:如果A2<>””,说明A2是合并单元格的第一行,则返回C2的值,否则返回空值。

第三步:

用格式刷,把A列的格式复制到D列即可,如果要删除B列和C列,记得在删除之前,把D列的值复制粘贴为数值。

2方法二

今天,突然想起PHONETIC这个函数,这个函数是连接字符串 的,其只能连接文本,不能是数字,公式也不行。下面看一下另一种思路:

第一步:在辅助列C列每行写入公式CHAR(10),这个函数返回的是换行符

第二步:将C列复制黏贴成数值

因为PHONETIC 函数不能连接公式生成的文本

第三步:将A列的格式复制到D列和E列

第四步:在D列统计合并单元格的行数

选中D2:D11

在公式编辑栏输入公式

=COUNTA(B2:$B$12)-SUM(D3:$D$12)

按CTRL+ENTER

这个不太好理解,需要烧点脑细胞。

可参见:合并单元格的求和与计数

第五步:

选中E2:E12

在公式编辑栏输入公式

=PHONETIC(B2:OFFSET(B2,D2-1,1))

按CTRL+ENTER

这个也不太好理解,继续烧脑

可参见

动态引用,再也不用每次改公式了!

match+index+offset三剑客详解

总结

方法一使用的技术:

如何判断合并单元的第一行和最后一行

自下而上的迭代

文本连接

换行符

如何把合并单元格第一行对应的数取出

格式刷

方法二使用的技术:

合并单元格计数,统计合并单元的占用几行

换行符

PHONETIC函数的使用,只能连接文本,且不能为公式

CTRL+ENTER快速填充公式法

格式刷

动态引用OFFSET函数

如果你合并后的单元格不自动换行,请在单元格格式对齐里设置自动换行即可

你的知识体系,决定了你的解决方法,你认为哪个方法更好呢,或有更简单的方法,欢迎在下方留言。当然你也可以用VBA。

END

(0)

相关推荐