多行单元格合并后保留全部内容且自动换行
小桥流水
前言
前天有网友提出:如何将合并单元格旁边的数值也合并,且保留内容并自动换行。直观的表达如下图所示:
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
这个也不太好理解,继续烧脑
可参见
总结
方法一使用的技术:
如何判断合并单元的第一行和最后一行
自下而上的迭代
文本连接
换行符
如何把合并单元格第一行对应的数取出
格式刷
方法二使用的技术:
合并单元格计数,统计合并单元的占用几行
换行符
PHONETIC函数的使用,只能连接文本,且不能为公式
CTRL+ENTER快速填充公式法
格式刷
动态引用OFFSET函数
如果你合并后的单元格不自动换行,请在单元格格式对齐里设置自动换行即可
你的知识体系,决定了你的解决方法,你认为哪个方法更好呢,或有更简单的方法,欢迎在下方留言。当然你也可以用VBA。
END