如何在 MS-Excel 中根据“:”拆分字符串?

如何在 MS-Excel 中根据“:”拆分字符串?

我的excel表里都填满了这样的字:

1.) ABC:DCF
2.) DCF:FED

我想根据以下条件拆分每个单词“ : “并将结果放在相邻的列中,这样单元格“A:1”中的“ABC:DCF”在单元格“B:1”中变为“ABC”,在单元格“C:1”中变为“DCF”,并且每列中都有相应的值。如何做到这一点?

答案1

转到“数据”选项卡,然后选择“文本到列”选项。之后,选择“分隔符”选项,然后选择“其他”并输入您想要的任何分隔符。

答案2

文本到列即可。如果您想保留原始值,另一个选项是使用公式:
在 B1

=left(a1,find(":",a1)-1) 

在 C1

=mid(a1,find(":",a1)+1,len(a1))

答案3

如果您可以使用 VBA,那么您可以使用该Split()函数。这是一个用户定义函数 (UDF),您可以在单元格中使用。它根据您选择的字符进行拆分并返回n拆分列表的第个元素。

如何在 MS Office 中添加 VBA? 有关如何定义 UDF 的信息。

Function STR_SPLIT(str, sep, n) As String
    Dim V() As String
    V = Split(str, sep)
    STR_SPLIT = V(n - 1)
End Function

因此您需要输入:

=STR_SPLIT(A1, ":", 1) // for the first half
=STR_SPLIT(A1, ":", 2) // for the second half

答案4

您也可以使用数组公式来执行此操作。

如果单元格 A1 中有 ABC:DEF:GHI,那么如果您在 B1:D1 中输入以下公式,它将通过冒号字符分割出 A1 中的文本。

=IFERROR(MID(":"&$A1&":",SMALL(IF(MID(":"&$A1&":",ROW($1:$999),1)=":",ROW($1:$999),""),COLUMN()-1)+1,SMALL(IF(MID(":"&$A1&":",ROW($1:$999),1)=":",ROW($1:$999),""),(COLUMN()))-SMALL(IF(MID(":"&$A1&":",ROW($1:$999),1)=":",ROW($1:$999),""),COLUMN()-1)-1),"")

您需要按 CTRL+ENTER 才能输入公式。重复 3 次的主要部分是这个... IF(MID(":"&$A1&":",ROW($1:$999),1)=":",ROW($1:$999),"") 它获取冒号位置的数组(使用 1 到 999 行,尽管您可以使用更多行)。这将返回数组

1;"";"";"";5;"";"";"";9;"";"";"";13;"";"";""

使用 SMALL 函数,您可以得到第一个和第二个最小值,结果分别为 1 和 5。然后,它使用 MID 函数获取第一个和第五个字符之间的字符串(请记住,字符串是“:ABC:DEF:FHI:”,因为我们在开头和结尾添加了分隔符)。然后在下一列中,您将得到第五个和第九个字符之间的文本,等等。

相关内容