Как извлечь серию цифр вместе с одной буквой, за которой следует другая серия цифр? - PullRequest
1 голос
/ 24 апреля 2019

Проблема, с которой я сталкиваюсь, заключается в том, что у меня есть весь столбец, в котором текст отделен _, который содержит размер в пикселях, который я хочу иметь возможность извлечь, но в настоящее время не могу.Например:

           A                                  
Example_Number_320x50_fifty_five
Example_Number_One_300x250_hundred
Example_Number_two_fifty_728x49

Я пытался использовать функцию замены, чтобы получить числа, которые работают, но только числа, когда мне нужно что-то вроде: 320x50 вместо этого я получаю 0, поскольку я 'Я не уверен, как именно извлечь что-то подобное.Если бы это было непротиворечиво, я мог бы легко сделать формулы LEFT или RIGHT, чтобы получить их, но, как вы можете видеть, данные различаются.

Результат, который я ищу, - это что-то вроде:

           A                        |          B   
Example_Number_320x50_fifty_five    |       320x50
Example_Number_One_300x250_hundred  |       300x200
Example_Number_two_fifty_728x49     |       728x49

Любая помощь будет высоко ценится!Если понадобятся какие-либо дополнительные разъяснения, пожалуйста, дайте мне знать, и я постараюсь объяснить как можно лучше!

-Maykid

Ответы [ 2 ]

3 голосов
/ 24 апреля 2019

Я бы, вероятно, использовал бы UDF регулярных выражений для этого.

  • Сначала откройте VBE, нажав Alt + F11 .
  • Щелкните правой кнопкой мыши по VBAProject > Вставьте > Модуль

Затем вы можете вставить следующий код в свой модуль:

Option Explicit

Public Function getPixelDim(RawTextValue As String) As String

    With CreateObject("VBScript.RegExp")
        .Pattern = "\d+x\d+"
        If .Test(RawTextValue) Then
            getPixelDim = .Execute(RawTextValue)(0)
        End If
    End With

End Function

На своем рабочем листе вы будете использовать следующую формулу:

=getPixelDim(A1)

enter image description here


Lookingв шаблоне \d+x\d+ экранированный d (\d) означает любую цифру , + означает одну или несколько из \d и x это просто буквенная буква х.Это шаблон, который вы хотите захватить как возвращаемое значение вашей функции.

2 голосов
/ 24 апреля 2019

Гоша, К Дэвис был просто так быстр!Вот альтернативный метод с похожей концепцией.

Создайте модуль и создайте пользовательскую функцию, подобную этой.

Public Function GetPixels(mycell As Range) As String

    Dim Splitter As Variant
    Dim ReturnValue As String
    Splitter = Split(mycell.Text, "_")

    For i = 0 To UBound(Splitter)
        If IsNumeric(Mid(Splitter(i), 1, 1)) Then
            ReturnValue = Splitter(i)
            Exit For
        End If
    Next

    GetPixels = ReturnValue

End Function

В листе Excel введите B1 формулу =GetPixels(A1), и выполучит 320x50.

Как создать пользовательскую функцию?

Вкладка разработчика

Используйте этот URL для добавления вкладки Разработчик, если вы неhttps://www.addintools.com/documents/excel/how-to-add-developer-tab.html

Нажмите на выделенные области, чтобы открыть окно Visual Basic для приложений (VBA).

enter image description here

Создать модуль

Нажмите Вставить> Модуль и введите код.

enter image description here

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

enter image description here

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

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