如何在电子表格中复制或拼接复杂字符串,解决CONCATENATE拼接日期转数字问题
Excel 中的日期本质是数字序列号,直接参与文本拼接时会调用底层存储的数值,不会继承单元格设置的显示格式,因此会出现44519这类数字;同时你使用的CONCATENATE函数不支持直接传入多单元格区域批量拼接,原有公式写法不符合函数参数要求,也无法实现按行遍历拼接的效果。
解决方案
方案1:Excel 365/2021 及以上版本
该版本支持TEXTJOIN、LAMBDA等动态数组函数,可以一键生成你要的完整格式:
- 输入如下公式到目标单元格:
=TEXTJOIN(CHAR(10),TRUE, BYROW('2021'!A2:F61,LAMBDA(r, LET( in_d,INDEX(r,1), out_d,INDEX(r,3), guest,INDEX(r,5), m_head,IF(MONTH(in_d)<>MONTH(OFFSET(in_d,-1,0)),TEXT(in_d,"mmmm yyyy")&CHAR(10),""), cont,"in "&TEXT(in_d,"d/m")&" out "&TEXT(out_d,"d/m")&" "&guest, m_head&cont ) )) )
- 右键点击目标单元格→「设置单元格格式」→「对齐」→勾选「自动换行」,即可显示你需要的换行排版效果。
公式说明:
TEXT函数负责把日期序列号转成你要的显示格式,CHAR(10)是换行符,BYROW会遍历你选中的每一行生成对应记录,TEXTJOIN把所有行的结果合并到同一个单元格。
方案2:低版本 Excel
低版本没有动态数组功能,需要手动转换字段后拼接:
- 所有日期字段参与拼接前,先用
TEXT(日期单元格,"格式码")转换格式,比如要显示6/11格式就用TEXT(A2,"d/m"),要显示November 2021就用TEXT(A2,"mmmm yyyy") - 用
CHAR(10)插入换行符,拼接后同样需要开启单元格自动换行
单条记录的拼接参考公式:
=TEXT(A2,"mmmm yyyy")&CHAR(10)&"in "&TEXT(A2,"d/m")&" out "&TEXT(C2,"d/m")&" "&E2
如果需要合并多条记录,直接把多条的公式用&连接即可。
内容的提问来源于stack exchange,提问作者JR Tan
相关产品推荐
相关产品推荐

