编按:把年月数变成月数,很简单。但只有脑回路大的人才可能写出更简单的公式。通常,思路越简单公式越长。案例中巧用RIGHTB提取位于双字节后,字节变化幅度在1以内的单字节数据的思路大家可以多多借鉴。

要求:把工龄x年x月换成以月为单位的数量。没有入职日期。

打开网易新闻 查看精彩图片

好像很简单,年数*12+月数就是结果。各位可写出公式后阅读,看看能否碰出火花来。

1.老函数+最简单思路

=IFERROR(LEFT(F2,FIND("年",F2)-1)*12,0)+IFERROR(MID(F2,IFERROR(FIND("年",F2)+1,1),FIND("个",F2)-IFERROR(FIND("年",F2)+1,1)),0)

打开网易新闻 查看精彩图片

公式解析:

最简单思路——月数位于“年”“个”之间。

前半部分提取年数再*12,后半部分提取月数。

为了满足只有年和只有月的情况,公式用了4次IFERROR函数。

2.老函数+转个弯思路

=IFERROR(LEFT(F2,FIND("年",F2)-1)*12,0)+IFERROR(--RIGHTB(LEFT(F2,LEN(F2)-2),2),)

打开网易新闻 查看精彩图片

公式解析:

转个弯思路——去掉最后两字,月数位于双字节文字后,在最右的2字节内,字节幅度变化在1以内。

LEFT(F2,LEN(F2)-2)把最右边两个字去掉,再用RIGHTB取右边的两个字节就得到了月数。

附送一个新函数用转弯思路的公式:

=TEXTBEFORE(F2,"年",,,,0)*12+RIGHTB(TEXTBEFORE(F2,"个",,,,0),2)

打开网易新闻 查看精彩图片

3.颠覆性思路

=LOOKUP(9^9,SUBSTITUTE(SUBSTITUTE({"","0年"}&F2,"年"," "),"个月","/12")*12)

打开网易新闻 查看精彩图片

公式解析:

颠覆性思路——把含月的工龄,如4年11个月,的月份计算“4*12+11”变成带分数计算“(4 11/12)*12;整年的计算保持不变。

①首先用{"","0年"}&F2得到一个新数组。

打开网易新闻 查看精彩图片

②用SUBSTITUTE将“年”字替换成空格。

打开网易新闻 查看精彩图片

③继续用SUBSTITUTE将“个月”替换成/12。

打开网易新闻 查看精彩图片

④将上一步得到的数组*12,得到如下结果。

打开网易新闻 查看精彩图片

这一步包含三种格式的数据计算。

首先是带分数计算。如“4 11/12”“0 8/12”,整数+空格+分数,它们是带分数,*12分别得到月份59、8。

其次是纯分数表示的日期计算。如“3/12”,被默认为日期,*12得到一个较大的数539964。

最后是文本计算。如“0 4 11/12”“0 5”,*12会返回错误值。

⑤用LOOKUP在每行中查找一个极大的数,得到不为错误值的最右侧的一个数。LOOKUP查找规则见文末推荐。

不得不说这个思路真不是一般人能想到的。

做Excel高手,快速提升工作效率,部落窝教育Excel精品好课任你选择!

学习交流请加微信hclhclsc进群领取资料

Excel 365新函数:TEXTBEFORE和TEXTAFTER

LOOKUP查找规则:一文讲透LOOKUP二分查找

从含有多个数字的文本中提取特定数字的方法

Excel跑道图表——弧形的条形图

版权申明:

本文作者老菜鸟;部落窝教育享有稿件专有使用权。若需转载请联系部落窝教育。