如何将数据拆分为多个列,仅在 Excel 中第一个冒号后分隔

如何将数据拆分为多个列,仅在 Excel 中第一个冒号后分隔

我有一个巨大的 Excel 列表(20k+ 行),我想将一列列表拆分成多列。以前我使用过数据|文本到列向导,但它似乎有一个限制:我无法指定在多少次“拆分”后停止拆分。示例数据:

type: abds : das
files: asdfs:jgkd

目标是:

|type|abds : das|
|files|asdfs:jgkd|

谢谢你的时间 :)!

答案1

VBA对于完成这类一次性小任务来说,这是一个很棒的工具。

假设数据在列中A并且与相邻A1。如果不是这种情况,只需调整行Set rng = ...以适合您的数据。

Sub SplitColumn()
    Dim rng As Range
    Dim dat As Variant
    Dim i As Long, j As Long

    Set rng = Range([a1], [a1].End(xlDown)).Resize(, 2)
    dat = rng
    For i = 1 To UBound(dat, 1)
        j = InStr(dat(i, 1), ":")
        If j > 0 Then
            dat(i, 2) = Mid$(dat(i, 1), j + 1)
            dat(i, 1) = Left$(dat(i, 1), j - 1)
        End If
    Next
    rng = dat
End Sub

答案2

您可以将第一个冒号替换为“|”或其他不会出现在您的数据中的字符:

=SUBSTITUTE(A1,":","|",1)

然后将结果复制并粘贴为值,并对这些值执行“文本到列”操作。

答案3

通常情况下,您会编写一些 vbscript 来完成此任务,但如果它是单列工作表,您可以将其保存为文本(制表符分隔),然后再次打开它。Excel 会询问您这是什么类型的文本文件。告诉它它是file with Separators,单击Next并勾选Other,然后在编辑字段中键入冒号。

答案4

我能想到的最简单的方法是从您已经做过的事情开始:数据|文本到列向导。

然后重新连接那些意外分割的字段。

相关内容