Как обрезать приведенный ниже текст, содержащий буквенно-цифровые символы, а также описание.
Пример текста: BACA-AA01A-withsomediscription, BACA-AA01Bс некоторым описанием
Каждый код заканчивается комбинацией цифр и букв. «BACA-AA01A», «BACA-AA01B». ПОЭТОМУ МНЕ НУЖНА ФОРМУЛА EXCEL, ГДЕ Я МОГУ ОБРЕЗАТЬ ТЕКСТ ПОСЛЕ НАЙДЕНИЯ КОМБИНАЦИИ ЦИФРОВЫХ И АЛФАВНЫХ.
Я могу обрезать или использовать формулу LEFT, если код заканчивается той же фиксированной длиной, но длина кода составляет от 9 до 16. и да, он всегда будет заканчиваться одним символом после числа.
Вот функция - вставьте это на страницу модуля, и вы можете использовать функцию в электронных таблицах.
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
превосходный мужчина, невероятный, это именно то, что я ищу. Спасибо. После этого я хочу изучить VBA. Не могли бы вы предложить мне учебные ресурсы или онлайн-курс, где я могу получить прочную основу для VBA?
Приведенный выше код по-прежнему помогает мне без каких-либо проблем, продолжая задавать тот же вопрос, могу ли я получить описание или что-то еще после кода продукта в отдельную ячейку рядом с кодом продукта, который ваш VBA обрезает в соответствии с приведенным выше кодом. Пример. У меня есть код продукта «BACA-AA01Bwithsomediscription», и теперь ваш код VBA может извлекать «BACA-AA01B», но мне также нужна следующая оставшаяся часть без пробела в начале, если таковая имеется в следующем столбце «withsomediscription»
Если у вас есть указанная выше функция в ячейке D1 и текст в C1, то в ячейке E1 вы можете использовать = RIGHT (C1, LEN (C1) -Len (D1)), чтобы получить остаток
В этом примере мы используем Shee1, и данные отображаются в столбце 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
Вывод:
Всегда ли в коде стоит один символ после числа? Это фиксированная длина? Не могли бы вы просто вырезать код, используя команду «Данные, текст в столбцы» и выбрав фиксированную длину?