如何在 Excel 中按分隔符自动拆分(相当于表格中的 =SPLIT)

How to automate split by delimiter in Excel (equivalent of =SPLIT in gSheets)

最近从全职 Google Sheets -> Excel 转移到 Excel,我仍然习惯了一些缺失的东西......我需要在 Excel 使用分隔符 space (" ").

我正在寻找一种使用 Excel 中的公式执行此操作的方法。 Excel 相当于 Google 表格中的 =SPLIT(#REF, " ")。我知道 Excel 有一个“文本到列”的功能,但我正在尝试完全自动化一个项目,以减少人为错误的可能性,所以会在公式之后。

此外,我需要将分割数最大化为 4,因此它会忽略第 4 次分割后的所有内容。

我尝试了一些方法,例如使用 =LEFT(#REF,FIND(" ",#REF))=RIGHT(#REF,FIND(" ",#REF))=MID(#REF, SEARCH(" ",#REF) + 1, SEARCH(" ",#REF,SEARCH(" ",#REF)+1) - SEARCH(" ",#REF) - 1)。问题是,单元格内 space 的数量可能会有所不同。请参阅下面的示例 table:

ToSplit Split #1 Split #2 Split #3 Split #4
Hello Hello
World World
Hello World Hello World
Hello World FOO BAR BAZ Hello World FOO BAR
This Data Wants To Be Different This Data Wants To

有什么方法可以在 Excel 内获得此功能吗?谢谢!

多种方式,一种是使用FILTERXML():

B2中的公式:

=TRANSPOSE(FILTERXML("<t><s>"&SUBSTITUTE(A2," ","</s><s>")&"</s></t>","//s[position()<5]"))

这假设 ms365 的溢出动态数组。但是,您也可以使用,例如:

=IFERROR(FILTERXML("<t><s>"&SUBSTITUTE($A2," ","</s><s>")&"</s></t>","//s["&COLUMN(A1)&"]"),"")

向下并向右拖动。


有关 FILTERXML() 和另一个自定义 SPLIT() 函数的更多信息,请参阅 问答。