=A2&B2,如此简单的数据合并公式,为什么结果会出错?

职场   2024-10-12 07:50   福建  
HI,大家好,我是星光。

给大家看一道几年前初阶函数练习群里的一道练习题


如上图所示的表格,A:C列是数据明细,需要将三列数据,合并到各行单元格中,并以分隔符"-"串联。

E列是模拟结果。

这是一个比较常见的字符串合并案例。很多朋友首先想到使用&,公式如下:

=A2&"-"&B2&"-"&C2 

但公式运算后会返回一个错误的结果▼


错误的原因是,日期本质是序列值性质的数值,在合并运算中会暴露本性,就变成了44193/44209这种鬼样子。


如何解决这个错误呢?有的朋友使用公式如下:

解法1:我切切切切 ▼
=YEAR(A2) &"-" &MONTH(A2) &"-" &DAY(A2)&"-"&B2&"-"&C2

使用YEAR/MONTH/DAY函数分别计算日期值中的年、月、日,再使用&运算符将各值合并。

还有的朋友使用TEXT函数,比较优秀:

解法2:整个容吧大弟 ▼
=TEXT(A2,"yyyy-m-d")&"-"&B2&"-"&C2

如果说单元格格式是给数据化个妆,把数值显示为日期形式,那么TEXT函数就是给数据整个容,直接将日期转换为了日期模样的文本值。

此时,如果你觉得反复输入&运算符体验不好,可以换CONCATENATE函数,该函数可以将多个参数合并为一个字符串:

解法3:CONCATENATE ▼
=CONCATENATE(TEXT(A2,"yyyy-m-d-"),B2,"-",C2)

以上是常规且最实用的解法,但作为一个 大 佬 蛇精病出没不定的群,自然还有一些其它的解法。

解法4:CONCAT ▼
=CONCAT(TEXT(A2:C2,"yyyy-m-d;-@"))

TEXT(A2:C2,"yyyy-m-d;-@"),该函数的第2参数是"yyyy-m-d;-@",有两个区间,意思是如果数据为大于等于0的数值,则转换为日期格式,如果是文本,则返回原值,并在前面添加一个短杠"-"。

和CONCATENATE函数不同,CONCAT函数支持数组运算,最后由它将TEXT函数的运算结果合并成为一个字符串。

TEXT函数里的@是文本占位符,yyyy、m、d也都是占位符;如果你问什么是占位符,什么是区间,我会向你发射我的爱并伴随一篇可以催眠的经典教程:Excel单元格自定义格式详解


除了使用CONCAT函数外,也可以使用TEXTJOIN函数

解法4:TEXTJOIN ▼
=TEXTJOIN("-",1,TEXT(A2:C2,"yyyy-m-d"))

如果你有一双善于发现细节的眼睛,会看出上面公式里的TEXT函数和CONCAT里的TEXT函数并不相同。它只有1个参数,表示只有一个区间。

——只有一个区间的意思是正数和0在区间内,会被转换为日期格式,其它都返回原值。最后再使用TEXTJOIN函数,以"-"为分隔符,串联成一个字符串。

……

就是今天给大家分享的全部内容了,有啥表格问题可以在VIP会员微信答疑群中提问交流。打个响指,祝大家周末工作愉快咱们下期再见ღ( ´・ᴗ・` )


需要系统学习Excel却找不到优质教程?学习Excel的过程中遇到疑难问题,却找不到人及时作出解答?

加入我的付费社群,学习+训练+答疑,与5000+在线会员一起,同微软最有价值专家MVP同行,全面精进Excel之道

🚂>>~
加入我的付费会员,全面学习Excel
透视表 函数 图表 VBA PQ想学啥学啥
👀


本文由公众号“Excel星球”首发。

点击阅读原文系统学习Excel!

Excel星球
微软全球最有价值专家(Excel MVP),上千篇原创图文和视频教程随学随用,随用随查,建议常用Excel的职场人关注。
 最新文章