分享

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

 5jia5 2021-09-15
NO.806-日期合并
作者:看见星光
 微博:EXCELers / 知识星球:Excel
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函数,以'-'为分隔符,串联成一个字符串。
……
没了,今天和大家分享的内容就这些,左上角点关注,右下角点个赞,有啥问题可以在会员群中提问交流,挥挥手,咱们明天再见。

案例文件下载百度网盘..▼

https://pan.baidu.com/s/1d0gEaY-UxbcRvt0AIW6m8Q 

提取码: 34gd

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多