将年月形式的工龄转成月数,用啥公式比较简单?
作者:老菜鸟来源:部落窝教育发布时间:2023-07-25 16:40:49点击:1096
把年月数变成月数,很简单。但只有脑回路大的人才可能写出更简单的公式。通常,思路越简单公式越长。案例中巧用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查找规则见文末推荐。
不得不说这个思路真不是一般人能想到的。
碰出你的火花了吗?欢迎留言分享。
本文配套的练习课件请加入QQ群:902294808下载。
做Excel高手,快速提升工作效率,部落窝教育Excel精品好课任你选择!
扫下方二维码关注公众号,可随时随地学习Excel:
相关推荐:
Excel 365新函数:TEXTBEFORE和TEXTAFTER
LOOKUP查找规则:一文讲透LOOKUP二分查找
版权申明:
本文作者老菜鸟;部落窝教育享有稿件专有使用权。若需转载请联系部落窝教育。