在Excel中将文本拆分为列功能


3

我有一个excel电子表格,其中包含如下所示的数据行。有一个代码包含产品名称,然后是一个数字。

QA32 Product One (Large) 23
AZ63 Product Two 96
PR65 Product Three 149

如何将每个字段拆分为一列?

我尝试使用delimited选项在excel上“拆分文本到列”并用空格分隔但事实上一些产品名称只有一个单词导致某些数字在错误的列中。例如,

Code     Name       Number       
QA32    Product      One       (Large)    23
AZ63    Product      Two         96
PR65    Product      Three       149

这是期望的结果:

Code        Name                Number
QA32    Product One (Large)       23
AZ63    Product Two               96
PR65    Product Three             149

感谢帮助!


Answers:


2

使用FIND-function以确定您的第一个和最后空间的位置。之后,使用将MID-function数据拆分为三个部分。如果您知道空间的位置,则拆分很容易。找到第一个空间也是微不足道的,因为FIND从左到右。不幸的是,没有办法告诉Excel从右到左搜索。

所以困难的部分是,确定最后的空间!这里我们使用数组公式。
要输入数组公式,请将公式粘贴到单元格中,不要点击Enter
相反,你按Ctrl+ Shift+ Enter

{=MAX((MID(A2,ROW(A:A),1)=" ")*ROW(A:A))}

如果成功完成,Excel将附加一个开始和结束的花括号。


在给定单元格中插入所有公式并使用 autofill down

A2:你的数据在这里
B2:=FIND(" ",A2,1)
C2:=MAX((MID(A2,ROW(A:A),1)=" ")*ROW(A:A)) <-array formula!
D2:=MID(A2,1,B2-1)
E2:=MID(A2,B2+1,C2-B2-1)
F2:=MID(A2,C2+1,LEN(A2))

结果屏幕
在此输入图像描述


=MAX((MID(A2,ROW(A:A),1)=" ")*ROW(A:A)) <-array formula!是一个很酷的公式
SIslam 2016年

0

如果要返回合适的算法:

  • Code =第一个单词
  • Product =第一个和最后一个单词之间的所有内容
  • 数字=最后一个字

那么下面的公式应该有效。

假设您的数据在A1中:

Code:     =LEFT(TRIM(A1),FIND(" ",TRIM(A1))-1)
Product:  =TRIM(MID(SUBSTITUTE(TRIM(A1)," ",REPT(" ",99)),100,LEN(SUBSTITUTE(TRIM(A1)," ",REPT(" ",99)))-198))
Number:   =TRIM(RIGHT(SUBSTITUTE(TRIM(A1)," ",REPT(" ",99)),99))
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.