251 WPS新函数案例:对客户快速分列并统计

古哥计划
古哥计划

2024年03月优秀创作者

某工厂的业务部门各员工负责的客户都是人工登记在一张表上面的,格式如下图1中的表1,如果一名员工对应多个客户,则用顿号顿开,这样的的登记方法优点就是看起来比较直观,缺点也非常明显,数据集中在一个单元格内,后续如果需对客户进行数据分析与引用就非常不方便。

这个工厂的统计员的需求就是:设计一个函数公式,把每名员工对应的客户分开后,统计总客户的数量(客户有重复数据),最终效果如下图1中标记红色框框所示;

图1

需求分析

现在的需求是根据源表员工对应客户明细转换成分开的员工对应客户表,需要把C列中的客户分开成独立的元素,并转换成行(垂直)方向的一维表,并根据这个一维表统计出客户的需求。

要完成这个需求,先观察一下源数据,发现一个关键符号“、”号,可以利用这个符号创建一个中转的虚拟内存数组来完成。先文本连接→替换文本→合并文本→分列文本→条件统计;就基本可以完成这个需求了;

逻辑树如下图2所示:

图2

连接文本

文本连接是表格中经常需要用到的技巧,不需要录入函数,只需要录入“&”号,这个符号可以叫连接符号也可以叫与号,它的功能就是连接两个元素并成为新的元素(一个单元格内);

在单元格E3处录入="@"&B3:B6&"、" ,这是一个辅助列,等下要作为内在数组在替换函数中使用,看不明白这个辅助列的,先别急,照着录入就可以了;

图3

替换文本

刚刚通过观察C列中的客户数据规律,可以明显发现不同的客户之间是用逗号来分隔的。所以我们需要把这个顿号替换成上面的辅助列,替换的目的是什么呢?相当于把B列员工的信息关联上来了,并且用符号“@”作了标记。录入函数:

F3 =SUBSTITUTE(C3:C6,"、","@"&B3:B6&"、")

G3 =B3:B6&"、"&SUBSTITUTE(C3:C6,"、","@"&B3:B6&"、")

函数释义:

通过逗号替换,把B列的数据与C列连接到一起来,再次用符号“&”把B列的数据连接起来,这样就可以发现B列和C列的数据有规律了,就是用符号“@”把客户分开了。

完成后如下图4所示:

图4

合并文本

上面用了三处辅助列,目的就是为了合并的时候有规律,有了规律才好再次分列,把上面的G3录入的辅助列数据再次合并到一个单元格内,并用符号“@”来合并,录入函数:

E3 =TEXTJOIN("@",,B3:B6&"、"&SUBSTITUTE(C3:C6,"、","@"&B3:B6&"、"))

合并完成后如下图5所示;

图5

分列文本

把一个单元格内的数据再次分列,用到函数就是TEXTSPLIT,录入函数:

E3=TEXTSPLIT(TEXTJOIN("@",,B3:B6&"、"&SUBSTITUTE(C3:C6,"、","@"&B3:B6&"、")),"、","@")

函数释义:

对合并后的数据分别按行符号“@”和列符号“、”进行分列;也就是同时进行行列分列,效果如下图6所示:

图6

统计客户

通过上面的几个步骤已经把一个标准的二维合并数据转换成了标准的一维数据。统计客户数量就不是难事了。录入函数:

E3=ROWS(UNIQUE(TAKE(E3#,,-1)))

函数释义:

先用TAKE函数对E3#保留最后第1列,参数为-1,也就是客户这一列,再对这一列进行删除重复项,得到的结果用ROWS判断行数,行数就是客户数;

完成后效果如下图7

图7

我是古哥:

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

安徽省
浏览 428
2
5
分享
5 +1
1
2 +1
全部评论 1
 
Boyuan
用这种方法挺好, 不用另外的辅助列, 用Lambda定义个函数名称, 很有通用性. reDimension=LAMBDA(a_rng,sep_rng,sep,TEXTSPLIT(TEXTJOIN(":",,a_rng&sep&SUBSTITUTE(sep_rng,sep,":"&a_rng&sep)),sep,":")) 用的时候这样子: =reDimension(B3:B6,C3:C6,"、")
· 河南省
回复