Excel - обрезать текст после того, как он находит комбинацию числового, за которым следует буквенный символ - PullRequest
0 голосов
/ 17 декабря 2018

Как обрезать текст ниже, который содержит буквенно-цифровые символы, а также описание.

Пример текста: BACA-AA01A-withsomediscription, BACA-AA01BWithsomediscription

Каждый код заканчивается комбинациейЧисловое, затем Алфавитный."BACA-AA01A", "BACA-AA01B".ТАК ЧТО НУЖНА ФОРМУЛА EXCEL, ГДЕ Я МОГУ ОБРАЗИТЬ МОЙ ТЕКСТ ПОСЛЕ ТОГО, КАК НАЙТИ КОМБИНАЦИЮ ЧИСЛА И АЛФАВИТА.

Ответы [ 2 ]

0 голосов
/ 17 декабря 2018

Для этого примера мы используем Shee1 и apperas данных в столбце A. Попробуйте:

Option Explicit

 Sub Test()

    Dim Lastrow As Long, i As Long
    Dim WholeString As String, Part1 As String, Part2 As String

   'Use Sheet1
    With ThisWorkbook.Worksheets("Sheet1")

        Lastrow = .Cells(.Rows.Count, "A").End(xlUp).Row

        For i = 2 To Lastrow
            'Clean and trim the whole string
            WholeString = Application.Clean(Application.Trim(.Range("A" & i).Value))
            'Get the firts 10 characters because BACA-AA01A & BACA-AA01B has ten characters each
            Part1 = Application.Clean(Application.Trim(Left(WholeString, 10)))
            .Range("B" & i).Value = Part1
            'Get the remain characters
            Part2 = Application.Clean(Application.Trim(Mid(WholeString, 11, Len(WholeString) - 10)))
            .Range("C" & i).Value = Part2
        Next i

    End With

 End Sub

Вывод:

enter image description here

0 голосов
/ 17 декабря 2018

Вот функция - вставьте ее на страницу модуля, и вы сможете использовать эту функцию в электронных таблицах

Public Function Leftish(s As String)
'returns first n chars which fit pattern *nn?
Dim x As Long
Dim flag As Boolean
Dim a As String
For x = 1 To Len(s)
    a = a & Mid(s, x, 1)
    If IsNumeric(Right(a, 1)) Then flag = True
    If (flag And Not IsNumeric(Right(a, 1))) Then Exit For
Next x
Leftish = a

End Function
...