作为财务人员经常会遇到混合数据问题的情况,例如从系统导出的数据经常是"1001-银行存款-工行" 这种格式,你要提取中间的科目名称:
传统做法:选中列→数据→分列→分隔符→完成。下次数据更新,再来一遍。
今天教两个新函数:TEXTBEFORE + TEXTAFTER,一个公式搞定,自动更新。
三个核心公式
公式① 提取分隔符之前:=TEXTBEFORE(A2,"-") → 返回"1001"
公式② 提取分隔符之后:=TEXTAFTER(A2,"-") → 返回"银行存款-工行"
公式③ 提取中间内容:=TEXTBEFORE(TEXTAFTER(A2,"-"),"-") → 返回"银行存款"
例如:
原始数据 | B列(编码) | C列(科目名称) | D列(辅助核算) |
1001-银行存款-工行 | 1001 | 银行存款 | 工行 |
1002-银行存款-建行 | 1002 | 银行存款 | 建行 |
2001-应付账款-供应商A | 2001 | 应付账款 | 供应商A |
4101-实收资本 | 4101 | 实收资本 | (无) |
6001-主营业务收入-国内 | 6001 | 主营业务收入 | 国内 |
6002-主营业务收入-出口 | 6002 | 主营业务收入 | 出口 |
B2公式:=TEXTBEFORE(A2,"-")
C2公式:=TEXTBEFORE(TEXTAFTER(A2,"-"),"-")
D2公式:=TEXTAFTER(A2,"-",2)
通过公式就可以轻松的把混合文本拆分出来,一劳永逸,不用每次都使用分列的方式。这个公式也可以反复用于其他场景:
场景1:提取邮箱用户名=TEXTBEFORE(A2,"@")
场景2:拆分员工信息(公司-部门-工号)三列公式搞定
场景3:反向提取去掉前N个字符=TEXTAFTER(A2,2)
与传统方法对比
场景 | 传统公式 | 新函数 |
提取第1个-之前 | =LEFT+FIND | =TEXTBEFORE |
提取第1个-之后 | =RIGHT+LEN+FIND | =TEXTAFTER |
提取中间 | =MID+FIND+FIND | =TEXTBEFORE(TEXTAFTER) |
注意事项
上述的方法只适用于Excel 365/2021/WPS最新版,旧版Excel可用传统函数替代,无分隔符时返回#N/A,建议套IFERROR。
好了,今天就分享到这里,下期再和大家聊聊它的兄弟TEXT函数的用法,欢迎大家持续关注,如果觉得对大家有用的,欢迎点赞转发,下期再见~~
附:长期坚持原创不易,如文章能够为大家带来少少帮助的,请大家点赞并转发,以支持我继续分享创作,你的支持将是我的不竭动力!谢谢!
夜雨聆风