大数跨境
0
0

又是一个活生生的拆分列问题(看起来复杂,实际并不难)

又是一个活生生的拆分列问题(看起来复杂,实际并不难) Excel数据分析之道
2023-07-04
0

上一篇文章介绍的是拆分地址和电话号码,该案例的思路,也可以用到很多问题中。

例如,有下面一个例子,要求将品名和规格拆分:

首先要弄明白,品名和规格有什么区别?也就是说,品名和规格的界限是什么?

如果某个字符是文本(汉字或者字母等),然后下一个字符就是数字了,那么下一个字符开始就是规格,该字符之前的就是品名,因为在本案例中,规格都是以数字开头的字符串。

那么,如何判断每个字符是否文本或者是否数字呢?

我们可以使用MID函数将品名规格中的每个字符取出来,然后将每个字符乘以数字1,如果是数字(MID函数取出来的实际上是文本型数字),将其乘以1还是数字,但如果是文本,就会出现错误,根据这个思路,我们就可以解决这个拆分品名和规格的问题了。

MID函数将品名规格中的每个字符取出来的表达式如下:

MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1)

以第三个单元格数据为例(这个字符串短点,看起来更清楚),该表达式的结果是如下的数组:

{"甘";"草";"片";"0";".";"2";"g";"*";"1";"0";"0";"T"}

将这个数组的每个元素乘以1,表达式如下:

MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1)*1

这个表达式的结果就是:

{#VALUE!;#VALUE!;#VALUE!;0;#VALUE!;2;#VALUE!;#VALUE!;1;0;0;#VALUE!}

使用ISNUMBER函数进行判断的表达式为:

ISNUMBER(MID(A4,ROW(INDIRECT("1:"&LEN(A4))),1)*1)

其结果是如下的数组:

{FALSE;FALSE;FALSE;TRUE;FALSE;TRUE;FALSE;FALSE;TRUE;TRUE;TRUE;FALSE}

那么,使用MATCH函数从这个数组中查找第一个TRUE出现的位置:

MATCH(TRUE,ISNUMBER(MID(A4,ROW(INDIRECT("1:"&LEN(A4))),1)*1),0)

MATCH的这个结果,就是规格数字第一次出现的位置,那么,这个位置右侧的全部字符就是品名了,该位置右侧的全部字符就是规格了。

这样,提取品名的公式如下(以第三个单元格数据为例):

=LEFT(A4,MATCH(TRUE,ISNUMBER(MID(A4,ROW(INDIRECT("1:"&LEN(A4))),1)*1),0)-1)

提取规格的公式如下(以第三个单元格数据为例

=MID(A4,LEN(D4)+1,100)

----------------------------------

Excel是持之以恒的逻辑思维训练,转变观念,把主要精力放到逻辑思路上,才是你最需要去做的!

----------------------------------

100多小时的系列课程,扫描下图的二维码了解:


【声明】内容源于网络
0
0
Excel数据分析之道
全面介绍Excel在企业数据分析中的各种应用,实际案例模板分享,经验心得,帮助个人和企业提升Excel应用能力。
内容 1106
粉丝 0
Excel数据分析之道 全面介绍Excel在企业数据分析中的各种应用,实际案例模板分享,经验心得,帮助个人和企业提升Excel应用能力。
总阅读54
粉丝0
内容1.1k