如何使用MS Excel分隔符在任何有数字的地方拆分单词

时间:2019-02-22 19:18:32

标签: excel ms-office

因此,我有一个如下所述的组合列表,需要将其与字母和数字分开。

Combined

我希望使用MS Excel将其拆分如下;文本到列分隔功能或任何其他有效功能-

Split

我尝试使用固定宽度,如果字母字符后有2个或更多位数的数字值,则该宽度将不起作用。有一种方法可以执行此操作,因为我必须对13000个组合重复此操作?

3 个答案:

答案 0 :(得分:3)

由于Text是常量,因此请创建常量的标题行,并将您的值从A1开头,将此公式放入B2并上下复制:

=MID($A2,FIND(B$1,$A2),IF(ISNUMBER(--MID($A2,FIND(B$1,$A2)+2,1)),3,2))

enter image description here

答案 1 :(得分:1)

在找到模式的地方插入定界符,然后将修改后的字符串分成新的列。

Option Explicit

Sub makeSplit()

    Dim i As Long, j As Long, str As String, arr As Variant

    'set the worksheet
    With Worksheets("sheet5")

        'step throughj the cells in column A
        For i = .Cells(.Rows.Count, "A").End(xlUp).Row To 2 Step -1

            'put the cell value into a variable
            str = .Cells(i, "A").Value2

            'step through the characters in the sting backwards
            For j = Len(str) - 1 To 3 Step -1

                'is the current character alphabetic and the previous character a digit?
                If Not IsNumeric(Mid(str, j, 1)) And IsNumeric(Mid(str, j - 1, 1)) Then

                    'insert a space
                    str = Left(str, j - 1) & Space(1) & Mid(str, j)

                End If

            Next j

            'split the string using the space as delimiter
            .Cells(i, "A").Resize(1, UBound(Split(str, Space(1))) + 1) = Split(str, Space(1))

        Next i

    End With

End Sub

答案 2 :(得分:1)

我找到了一种方法,但是会占用大量资源。

首先,在工作表中将所有字符串放在一列中,并确保该列具有自由的列。

然后在第一行添加一个新的空行,并在字母R,C,P,D,O,S中输入字母,因为您说的是它们始终按该顺序排列。这些是公式所需的识别字母。

现在在每个字母下方,每个字符串的右边,在公式中输入

=C$1&MAX(IFERROR(VALUE(MID($A2,SEARCH(C$1,$A2)+1,2)),0),VALUE(MID($A2,SEARCH(C$1,$A2)+1,1)),0)

仅当数字不再是2位数字时才有效,因为3位数字将是

=C$1&MAX(IFERROR(VALUE(MID($A2,SEARCH(C$1,$A2)+1,3)),0),IFERROR(VALUE(MID($A2,SEARCH(C$1,$A2)+1,2)),0),VALUE(MID($A2,SEARCH(C$1,$A2)+1,1)),0)

对于四个,继续添加一个IFERROR(),使)),2))),3)像上面那样增加。

所有公式都经过求值后,如果要摆脱公式,可以将其复制并粘贴为值。

示例表(荷兰语Excel):

example