Excel 中的文本拆分成列函数

Excel 中的文本拆分成列函数

我有一个 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))

相关内容