在 Excel 中将文本分成几列

在 Excel 中将文本分成几列

如何将文本从右到左分成几列?我的数据每行的空格数不一致,例如:

Hernandez Landscaping Gus Hernandez 1 Neurys Lane Newark, DE 19702
Hershey's Mill Golf Club Steve Friedell 1000 Mill Road West Chester, PA 19380
Hershey Country Club 1000 E.Derry Rd Hershey, PA 17033
Hershey Gardens 170 Hotel Road Hershey PA 17033

答案1

试试这个... 在这个例子中,我假设您将数据粘贴到单元格 A2 中,因此标题为第 1 行。按列拆分时,数据填充 A 至 M 列;其中 N 为第一个空白列;根据您的数据调整列引用。

  • 使用数据,文本到列按分隔符拆分,选择空格(正常从左到右)
  • 在最后一列(即 N)之后的列中输入=countblanks(A2:M2)第 2 行;然后将此公式复制到所有行(Excel 将根据需要自动增加行号)。
  • O1型2
  • 在 P1 中输入公式=O2+2
  • O2型=IF($N2+O$1>COLUMN(N2),"",INDIRECT(CONCATENATE("C[-",$N2+O$1,"]"),FALSE))
  • 复制所有列的 N2 和 O2(行号应自动更新)
  • 将 O 列复制到右侧,这样您就可以将相同的公式(带有更新的引用)重复到 AA 列(或超出范围,如果您的数据需要)。
  • 现在您应该看到 O 到 AA 列中的数据就像被反向拆分一样
  • 选择 O 至 AA 列,右键单击,然后选择复制(或按 ctrl+c)
  • 在新工作表上单击单元格 A2,右键单击,然后选择“粘贴值”(也可在“选择性粘贴”下找到)。现在,您拥有的工作表只包含您想要的结果,而不包含您用于创建它的公式。

结果

    19702   DE  Newark, Lane    Neurys  1   Hernandez   Gus Landscaping Hernandez           
    19380   PA  Chester,    West    Road    Mill    1000    Friedell    Steve   Club    Golf    Mill    Hershey's
    17033   PA  Hershey,    Rd  E.Derry 1000    Club    Country Hershey             
    17033   PA  Hershey Road    Hotel   170 Gardens Hershey                 

解释

  • 拆分列以您熟悉的方式将数据分开。
  • CountBlanks 告诉我们有多少列是空白的;也就是说,在遇到包含数据的单元格之前,我们必须向左移动多少列(+1);这是我们反向拆分中的第一个单元格。
  • O1 中的 2 表示从 O 列开始向左移动到第一个数据的行数是该行在第 N 列中定义的值加上 2。
  • 每次我们向 O 的右边移动 1 列时,我们就需要向左移动另外 2 列才能遇到反向分割中的下一列(P1 是 O1+2,因为 P 位于 O 的右边 1 处,而我们要找的数据位于 O 中我们要找的数据左边 1 处;所以 1+1=>2)。
  • O2 有点复杂。
    • 检查我们是否没有超出第一行;如果超出则返回空白。
    • 创建相对公式;即,我们不用定义命名单元格(例如“A1”),而是指定要移动多少行/列。R[-1] 表示向上移动 1 行,C[5] 表示向右移动 5 列,R[2]C[-3] 表示向下移动 2 行,向左移动 3 列。在我们的例子中,我们仅使用列,返回由 N2 + O1 确定的列数(或根据我们所在的单元格确定)。
    • False 只是表示我们正在使用这种相对功能,而不是正常的绝对单元格引用方法。
  • 复制所有行/列的公式只会填充其余数据(即,而不是仅仅 O2)。
  • 复制和粘贴数据意味着您可以摆脱公式,只需获得干净的数据即可。

答案2

如果您的数据开始于A2-

在 B2 中使用 -=LEFT(A2,MIN(FIND({1,2,3,4,5,6,7,8,9,0},A2&1234567890))-1)获取客户

在 C2 中使用 -=REPLACE(A2,1,LEN(B2),"")获取完整地址

相关内容