我有一个 Excel 电子表格,其中有几行数据,如下所示。其中有一个带有产品名称的代码,后面跟着一个数字。
QA32 Product One (Large) 23
AZ63 Product Two 96
PR65 Product Three 149
如何将每个字段拆分成一列?
我尝试在 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
非常感谢您的帮助!
答案1
使用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))
<-数组公式!
D2:=MID(A2,1,B2-1)
E2:=MID(A2,B2+1,C2-B2-1)
F2:=MID(A2,C2+1,LEN(A2))
结果屏幕
答案2
如果合适的算法返回:
- 代码 = 第一个字
- 产品 = 第一个字和最后一个字之间的所有内容
- 数字 = 最后一个字
那么以下公式应该可以起作用。
假设您的数据在 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))