Excel подстановочный знак для любой цифры?

Вопрос или проблема

Я пытаюсь использовать CRTL + F (Найти) и искать любые цифры в таблице. В Word можно использовать подстановочный знак ^#, который находит любую цифру. Я использую это для поиска элементов в листах, которые подходят под определенный формат, но у меня нет конкретного номера. Например, если я ищу номер телефона в документе Word, я могу ввести

^#^#^#-^#^#^#-^#^#^#^#

Это найдет все номера телефонов в документе. Мне нужно использовать функцию поиска для того, что у меня настроено.

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

Если вы программист, то решение, вероятно, находится в пределах ваших навыков. Не в моих, но в ваших, безусловно.

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

https://stackoverflow.com/questions/22542834/how-to-use-regular-expressions-regex-in-microsoft-excel-both-in-cell-and-loops

Затем используйте VBA для выполнения работы.

Регулярные выражения, похоже, были созданы именно для ваших нужд.

Ответ или решение

Для поиска любых цифр в Excel с использованием специальных символов (wildcards) встроенные функции не могут удовлетворить ваши требования так, как это делает Microsoft Word с использованием регулярных выражений. Однако, вы можете использовать VBA (Visual Basic for Applications) для создания макроса, который будет искать цифры в нужном формате.

Вот шаги, которые вам нужно выполнить:

  1. Откройте редактор VBA.

    • Нажмите ALT + F11, чтобы открыть редактор VBA.
  2. Создайте новый модуль.

    • В редакторе VBA щелкните правой кнопкой мыши на любой из объектов вашего проекта, выберите Insert и затем Module.
  3. Вставьте код макроса.

    • Скопируйте и вставьте следующий код в модуль:
Sub FindPhoneNumbers()
    Dim ws As Worksheet
    Dim cell As Range
    Dim regex As Object
    Dim matches As Object
    Dim pattern As String
    Dim found As Boolean

    ' Определение регулярного выражения для поиска телефонных номеров
    pattern = "^\d{3}-\d{3}-\d{4}$" ' формát: XXX-XXX-XXXX

    ' Создание объекта регулярных выражений
    Set regex = CreateObject("VBScript.RegExp")
    With regex
        .Global = True
        .IgnoreCase = True
        .Pattern = pattern
    End With

    ' Проход по всем листам в книге
    For Each ws In ThisWorkbook.Worksheets
        found = False
        ' Проход по каждой ячейке на листе
        For Each cell In ws.UsedRange
            If regex.Test(cell.Value) Then
                found = True
                ' Выделение ячейки, где найден номер
                cell.Interior.Color = RGB(255, 255, 0) ' Выделить желтым
            End If
        Next cell

        ' Вывод сообщения, если номера найдены
        If found Then
            MsgBox "Номера телефонов найдены на листе: " & ws.Name
        End If
    Next ws

    ' Очистка объекта регулярных выражений
    Set regex = Nothing
End Sub
  1. Запуск макроса.
    • Вернитесь в Excel, нажмите ALT + F8, выберите FindPhoneNumbers и нажмите кнопку Run.

Этот код ищет номера телефонов в формате XXX-XXX-XXXX и выделяет ячейки, в которых они найдены. Вы можете изменить регулярное выражение в строке pattern в зависимости от формата, который вам нужен.

Не забудьте включить макросы в настройках Excel, чтобы этот код работал. Обратите внимание, что VBA может быть неподходящим решением, если у вас нет доступа к редактированию кода или если ваша организация ограничивает использование макросов.

Таким образом, используя VBA и регулярные выражения, вы сможете эффективно искать нужный формат с любыми цифрами в вашем рабочем файле Excel.

Оцените материал
Добавить комментарий

Капча загружается...