Как разделить слово там, где есть число с помощью MS Excel Delimiter - PullRequest
0 голосов
/ 22 февраля 2019

Итак, у меня есть список комбинаций, как упомянуто ниже, который мне нужно было разделить с помощью алфавита и цифры после него.

Combined

Iхотите, чтобы он был разделен, как показано ниже, с помощью MS Excel;Функция разделения текста на столбцы или любая другая эффективная функция -

Split

Я пытался использовать фиксированную ширину, которая не работает, если есть 2 или более цифрзначение после алфавитного символа.Есть ли способ сделать это, поскольку я должен повторить это для 13000 комбинаций?

Ответы [ 3 ]

0 голосов
/ 22 февраля 2019

Так как текст является константой, создайте строку заголовка констант и со своими значениями, начинающимися с A1, поместите эту формулу в B2 и скопируйте снова и вниз:

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

enter image description here

0 голосов
/ 22 февраля 2019

Я нашел способ, но он будет ресурсоемким.

Сначала добавьте на лист все свои строки в столбце и убедитесь, что у вас есть свободные столбцы прямо к этому столбцу.

Затем сделайте новую пустую первую строку и вставьте буквы 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 цифры, для трех это будет

=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) увеличиваться, как указано выше.

Один развсе формулы были оценены, вы можете скопировать и вставить их как значения, если вы хотите избавиться от формул.

Пример листа (Dutch Excel):

example

0 голосов
/ 22 февраля 2019

Вставьте символ разделителя, где бы ни был найден шаблон, затем разбейте измененную строку на новые столбцы.

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
...