246 WPS新函数案例:快速提取日期和发票号

古哥计划
古哥计划

优秀创作者

财务部门在整理手工采购单的时候,发现有些手工单格式不太规范,把采购日期和发票号填写在摘要上面了,如下图所示,这些信息无法做下一步的统计与分析,因为日期和发票号都在一个单元格上面了,现在需要把这些不标准的摘要转换成标准的日期格式和标准的发票号,也就是需要分别提取出来;效果如下图1;

图1

需求分析:

从上图来看就是一个单元格提取的问题,难点在于以下:

文本长度:不确定,有长有短,如刀片、打包带等;

日期长度:不确定,也是有长有短,如2023.1.3、2022.11.29

发票长度:目测是固定长度。

解题思路:

文本提取如果是长度固定的话,可以MID、LEFT、RIGHT等文本函数灵活提取,当长度不确定的时候就不适合了,此时只需要转换思路就可以了,用WPS的新函数TEXTSPLIT来分拆,分拆后再选择对应的列CHOOSECOLS,然后用SUBSTITUTE函数加减负的方法把文本型日期转换成真日期。参考的步骤如下图2:

图2

分离数据:

目标:把文本和数值(日期、发票数字)分离;

函数:TEXTSPLIT 多符号的分离方法;

录入:=TEXTSPLIT(B3,{"(";")";";"},,1)

解释:

根据这个函数特性,有6个参数,如下图3所示。

要拆分的文本是:B3("购笔和笔记本(2022.12.6;13825949)"

按列拆分:这里用了数组的形式“{}”,大括号里面的符号有几个就代表需要分拆的列有多少列,根据分拆文本时面满足的符号有3个

是否忽略空单单元格:因为右括号是在最后一个单元格,分列后会产生一个空单元格,所以这里录入1代表TRUE(忽略空单元格)

图3

选择数据:

目标:把日期这一列单独筛选出来

函数:CHOOSECOLS 选择列函数;

录入:=CHOOSECOLS(TEXTSPLIT(B3,{"(";")";";"},,1),2)

解释:

这个函数就是选择一定的数组,加指定的列号,如数字2,代表第2列,也就是日期。如果需要发票号,就把列号数字更改为3,就可以了;效果如下图4

图4

日期转换:

目标:把文本型日期转换为真日期

函数:替换加减负法实现文本变日期

录入:

=--SUBSTITUTE(CHOOSECOLS(TEXTSPLIT(B3,{"(";")";";"},,1),2),".","/")

解释:

这里的日期虽然是文本,但是是有一定的规律的,年月日之间用的是“.”号,根据这一特性,可以用替换函数把这个“.”替换成“/”,然后用减负运算把这个文本日期变成数值型日期。同时设置单元格格式为日期格式。效果如下图5

图5

最终效果

通过前面几步,最后只需要加上发票号的公式:

=CHOOSECOLS(TEXTSPLIT(B3,{"(";")";";"},,1),3)

同时选中日期和发票这个区域下拉填充公式,就完成了摘要的分离;效果如下图6所示:

图6

我是古哥:

从事制造行本业20年,在企业运营、供应链管理、智能制造系统等方面具有丰富的实战经验。企业智能化,柔性化计划运营管理专家,擅长通过企业流程优化规范,企业管理、导入计划运营提升企业效率;对提高企业准时交货率,降低企业库存,输出智能制造人才有丰富的经验。学习PMC生产计划,关注古哥计划!

浙江省
浏览 4732
2
7
分享
7 +1
9
2 +1
全部评论 9
 
任舟
任舟

创作者俱乐部成员

期待古哥加入创作者俱乐部! WPS创作者俱乐部招募启动中! | WPS官方社区--WPS爱好者家园https://home.wps.cn/topic/3263
· 山西省
回复
清华学弟任泽岩
清华学弟任泽岩

创作者俱乐部成员

期待+1
· 辽宁省
回复
 
墨云轩
墨云轩

创作者俱乐部成员

老版本可以用find+mid
· 河北省
回复
古哥计划
古哥计划

优秀创作者

感谢您的支持,您的支持是我坚持创作的动力。
· 浙江省
回复
 
拾光漫行
拾光漫行

WPS函数专家

格式还比较规律 =TEXTAFTER(TEXTBEFORE(A1,";"),"(") =TEXTAFTER(TEXTBEFORE(A1,")"),";")
· 重庆
回复
古哥计划
古哥计划

优秀创作者

也是可以,还需要更改为日期格式
· 浙江省
回复