![如何在 MS-Excel 中根据“:”拆分字符串?](https://linux22.com/image/1331979/%E5%A6%82%E4%BD%95%E5%9C%A8%20MS-Excel%20%E4%B8%AD%E6%A0%B9%E6%8D%AE%E2%80%9C%EF%BC%9A%E2%80%9D%E6%8B%86%E5%88%86%E5%AD%97%E7%AC%A6%E4%B8%B2%EF%BC%9F.png)
我的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:”,因为我们在开头和结尾添加了分隔符)。然后在下一列中,您将得到第五个和第九个字符之间的文本,等等。