Excel: удалить последнее слово в строке, если это число - PullRequest
0 голосов
/ 09 ноября 2018

Извините, если раньше об этом спрашивали, но я нигде не могу найти ответы, которые делают то, что мне нужно ...: (

В основном у меня есть несколько названий продуктов, некоторые с номером (SKU) в конце, некоторые без.

Все SKUS оканчиваются цифрой. В псевдо: Если последний символ последнего слова является числом, удалите последнее слово. - На самом деле это не слово, а число.

Вот пример: «Средний верх гонщика и короткий лаунж-сет 7091 » (я хочу удалить часть, выделенную жирным шрифтом, если последний символ - число)

Как всегда, заранее спасибо за любую помощь:)

D

1 Ответ

0 голосов
/ 09 ноября 2018

Вы можете использовать регулярные выражения для замены конечных чисел. Используйте шаблон "\s\d+$", чтобы избавиться от пробелов в конце.

Option Explicit

Public Sub test()

    Debug.Print GetString("Medium Racer Back Top And Short Lounge Set 7091")

End Sub

Public Function GetString(ByVal inputString As String) As Variant
    With CreateObject("vbscript.regexp")
        .Global = True
        .MultiLine = True
        .IgnoreCase = True
        .Pattern = "[^\s]\d+$"    '<==  \s\d+$   '<==to remove white space at end as well
        If .test(inputString) Then
            GetString = .Replace(inputString, vbNullString)
        Else
            GetString = inputString
        End If
    End With
End Function

Используется как пользовательская функция на листе:

enter image description here


Regex:

Попробуйте

[^\s]\d+$

Соответствует одному символу, отсутствующему в списке ниже [^ \ s]

\s соответствует любому пробелу (равен [\ r \ n \ t \ f \ v])

\d+ соответствует цифре (равно [0-9])

+ Квантификатор - сопоставляет от одного до неограниченного количества раз, столько раз, сколько возможно, возвращая при необходимости (жадный)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...