根据字符位置在 Excel 中拆分数据

根据字符位置在 Excel 中拆分数据

我有一列数据,每行包含一组 83 个字符(例如 010203 344345 929348238482abcde33 4566),没有特定的模式需要拆分成不同长度的块(例如 6,1,6,6,4,4,...4,1,1)。以编程方式拆分这些块的最佳方法是什么?设置 VBA 列表并循环遍历可能是最好的选择吗?

答案1

这应该可以满足您的要求: 最终的

中的公式B2很特殊,因为它从以下开始:

=MID($A2, 1, B1)

但然后C2可以向下复制全部剩余的 18 列D2-> LastCol2

=MID($A2,SUM($B$1:B$1)+1, C$1)

然后复制整行下来,公式应该会自动正确填充。

答案2

Max,我想我明白你希望用逗号分隔数据。幸运的是,Excel 有一个内置工具可以做到这一点。见下文:

在此处输入图片描述

希望这是您想要的,否则请尝试使用文本到列工具,因为它比编写一堆 Excel 函数更容易。

答案3

我假设您希望数据集中的每一行都有一组不同的描绘。以下代码就是为此目的。

在数据左侧创建一列。确保没有空白。选择该列中的所有单元格并运行代码。它将在列右侧吐出 83 个字符的分隔符。顺便说一句,如果分隔符的总和大于字符长度(在本例中为 83),它将出错。

希望这能有所帮助。
凯尔

Sub SplitManyTimes()
Dim r As Range, rng As Range
Dim arr As Variant
Dim lLength As Long, lStart As Long, i As Long

Set rng = Selection
For Each r In rng
    lStart = 1
    arr = Split(r, ",")
    For i = 1 To UBound(arr) + 1
        lLength = Val(arr(i - 1))
        r.Offset(0, i + 1) = Mid(r.Offset(, 1), lStart, lLength)
        lStart = lStart + lLength
    Next i
Next r
End Sub

相关内容