还不会这个神仙套路,千万不要自己能熟练应用TEXT函数!

文摘   2024-09-10 19:50   广东  






小伙伴们好,今天来和大家分享一道时间格式转换的题目。时间问题也是EXCEL中的一个大类问题,但时间的转换题目都是有一些难度的,熟练地掌握并应用时间问题也是EXCELer的必备技能之一。

今天的题目是这样的:




题目要求将A列的格式转换成B列的格式。格式的转换可以使用TEXT函数,但在此之前,需要将源数据转换为EXCEL可以识别的时间格式,即要报源数据中的年、月份都转换为其最小单位月份。

上面也是处理这道题目的逻辑思路。


01

TEXT函数巧妙解决时间格式问题





在单元格D2中输入下列公式,三键确认并向下拖曳即可。

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(TEXT(SUM(IFERROR(RIGHTB(LEFT(SUBSTITUTE(A2,"6月","6个月"),FIND({"年","个月"},SUBSTITUTE(A2,"6月","6个月")&"年个月")-1),2)*{12,1},0))/12,"00年00个月/12个月"),"/12个月",),"00个月",),"00年",)

公式写出来比较长,其核心的部分有两部分:时间格式的转换及时间汇总;TEXT函数格式设置。

SUBSTITUTE(A2,"6月","6个月")

由于源数据中有一个数据的格式和最终的要求不符,这里先单独处理一下。

SUBSTITUTE(A2,"6月","6个月")&"年个月"

替换好后,在这个字符串后添加“年个月”,生成一个新的字符串。

FIND({"年","个月"},SUBSTITUTE(A2,"6月","6个月")&"年个月")

利用FIND函数,在这个新字符串中查找“年”和“个月”的位置。这部分返回的结果是{2,4}

LEFT(SUBSTITUTE(A2,"6月","6个月"),FIND({"年","个月"},SUBSTITUTE(A2,"6月","6个月")&"年个月")-1)

利用LEFT函数从左侧分别提取长度为13的字符串,其结果为{"6","66"}

RIGHTB(LEFT(SUBSTITUTE(A2,"6月","6个月"),FIND({"年","个月"},SUBSTITUTE(A2,"6月","6个月")&"年个月")-1),2)

利用RIGHTB函数从右侧提取长度为2个字节的字符串。其结果为{"6"," 6"}

IFERROR(RIGHTB(LEFT(SUBSTITUTE(A2,"6月","6个月"),FIND({"年","个月"},SUBSTITUTE(A2,"6月","6个月")&"年个月")-1),2)*{12,1},0)

上面一步的结果乘以{12,1},这一步的作用是将所有的时间都转换为最小单位:月。IFERROR函数将错误值转换为0

SUM(IFERROR(RIGHTB(LEFT(SUBSTITUTE(A2,"6月","6个月"),FIND({"年","个月"},SUBSTITUTE(A2,"6月","6个月")&"年个月")-1),2)*{12,1},0))/12

利用SUM函数求和后再除以12,得到了年数。到此处,我们已将源数据转换为EXCEL可以时间的时间了。

TEXT(SUM(IFERROR(RIGHTB(LEFT(SUBSTITUTE(A2,"6月","6个月"),FIND({"年","个月"},SUBSTITUTE(A2,"6月","6个月")&"年个月")-1),2)*{12,1},0))/12,"00年00个月/12个月")

利用TEXT函数将上一步的结果转换为“0000个月”的格式。

SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(TEXT(SUM(IFERROR(RIGHTB(LEFT(SUBSTITUTE(A2,"6月","6个月"),FIND({"年","个月"},SUBSTITUTE(A2,"6月","6个月")&"年个月")-1),2)*{12,1},0))/12,"00年00个月/12个月"),"/12个月",),"00个月",),"00年",)

最后,多次使用SUBSTITUTE函数将不符合题意的"00个月""00"都替换为空值。

朋友们,如果你们把公式中的"00年00个月/12个月"替换为"#年#个月/12个月",猜猜看会有什么神奇的变化呢?

详细的内容请参看帖子你知道如何将年龄精确计算到天数吗?



本期内容练习文件提取方式:

链接:https://pan.baidu.com/s/1mtsDytGPFnI8asYmCsAwAQ?pwd=z2rg

提取码:z2rg

Excel应用教程
主要提供Excel vba,函数,图表,数据透视表,pq,Js等教程
 最新文章