王斌
同事前来求助,她最近在工作中遇到一个难题,如图1所示,A列都是类似于“GT01上虞一PCBA原材料仓”的内容,现在要求将其中的名称和仓库内容分别提取出来,也就是分别提取“GT01”和“上虞-PCBA原材料仓”,但A列并非所有单元格都是十分规范的数据,例如“T2607A半成品仓”并没有PCBA的内容,因此无法借助“分列”实现。由于实际的数据量十分巨大,手工提取显然不在考虑之列,该如何解决这一高难度的问题呢?
第1步:提取“名称”数据
经过分析,可以发现A列的“名称”都出现在汉字字符的前面,因此我们可以考虑利用Excel 2016的“快速填充”解决这一问题:
在B2单元格手工输入“GT01”作为填充示例,在B3单元格手工输入“A466CPCBA”作为填充示例,继续在B4单元格手工输入“T2607A”,在输入过程中会看到图2所示的填充建议,直接按下回车键即可。如果使用的是2013版本,不会看到自动提示的填充建议,但可以在B2、B3、B4单元格结束填充示例的输入之后,向下拖拽选择需要填充的单元格区域,在“编辑”功能组依次选择“填充→快速填充”,或者按下“ctrl+E”组合键,同样可以完成快速填充。
第2步:去除多余的字符
完成快速填充之后,可以发现提取出来的“名称”部分还存在“PCBA”的字符,这些内容需要被归结到“仓库”列,也就是说“名称”列并不需要。我们可以通过替换去除这些内容,按下“Ctrl+H”组合键,打开“替换”对话框,查找“PCBA”,替换为空,即可得到图3所示的效果。
第3步:提取“仓库”数据
与“名称”相比,“仓库”数据更没有统一的规律,因此这里无法借助“快速填充”进行提取。不过,由于已经将‘名称”提取出来,A列剩余的内容自然也就是我们所需要的“仓库”数据,因此可以借助公式实现:
选择c 2单元格,在编辑栏输入公式“=SUBSTITUTE(A2,B2,"")”,SUBSTITUTE函数的作用是对指定的字符串进行替换,“""”表示替换为空,上述公式的含义就是从A2单元格去除B2单元格的内容,公式执行之后向下拖拽或双击填充柄,很快就可以看到图4所示的最终效果。
也可以考虑首先提取“仓库”内容,在B2单元格手工输入“上虞-PCBA原材料仓”作为填充示例,在B3单元格手工输入“原材料仓”作为填充示例,在B4单元格继续手工输入“半成品仓”作为填充示例,输入过程中会显示图5所示的填充建议,直接按下回车键即可,但相应单元格前面的字符会出现缺失现象,需要手工添加“PCBA”,因此操作较先提取“名称”麻烦一些。不过,由于“PCBA”都是出现在“原材料仓”的前面,因此可以替换“原材料仓”为“PCBA原材料仓”,最后再利用公式提取“名称”。