5

Я хочу использовать подстановочные знаки в диалоговом окне «Найти и заменить» в Excel, чтобы заменить ячейки сопоставлением с образцом. Составлен пример колонки:

_4
_44
_13
...

Я хочу заменить эти значения на:

(4)
(44)
(13)
...

Поэтому я попытался с _* который успешно находит шаблон, но я не смог найти нигде, если функции Excel соответствуют заполнителю. Например, с регулярным выражением я бы использовал скобки и \1 качестве заполнителя соответствия. Есть ли в Excel эта функция вообще?

2 ответа2

5

Возможности сопоставления с образцом в Excel чрезвычайно ограничены: буквенные символы, * для соответствия любому количеству неуказанных символов, и? соответствовать одному неуказанному символу. Отсутствует встроенная возможность подстановки совпадений ни в функциях рабочего листа, ни в VBA.

Однако, как отмечает Excellll, вы можете использовать регулярные выражения в VBA и разрабатывать пользовательские функции, основанные на регулярных выражениях.

Чтобы получить доступ к регулярному выражению в своем коде, добавьте ссылку на библиотеку «Microsoft VBScript Regular Expression 5.5» через пункты « Tools -> « References в главном меню редактора кода Visual Basic.

Я не нашел никакой исчерпывающей документации для библиотеки, но вы можете найти много кусочков и примеров кода с помощью поиска Google.

3

Хотя это очень поздний ответ, у меня был успех с надстройкой RegEx Find/Replace, которая делает именно то, что вы хотите. Но я не знаю каких-либо встроенных возможностей для этого в Excel.

Надстройка создает кнопку на ленте, которая запускает диалоговое окно, которое очень похоже на поиск / замену в Excel. Большинство из них работает так же - вы можете искать по листу или рабочей книге, по столбцам или строкам, регистру совпадений и т.д. (Однако формат не соответствует.)

Однако обратите внимание, что в надстройке используются регулярные выражения, реализованные в VBScript, и они работают иначе, чем стандартный поиск и замена Excel. Например, ваша строка поиска _* не будет работать. Он соответствует любой ячейке с нулевым или большим количеством подчеркиваний, что угодно. Для вашего примера мне удалось найти _(\d+) и заменить на '($1) . (Апостроф просто запрещает Excel интерпретировать (4) как отрицательное значение.)

Я никоим образом не связан с веб-сайтом или разработчиком - просто нашел его через веб-поиск. Кроме того, я использую Excel 2007 и не могу сказать, работает ли это в более поздних версиях. Я успешно использовал его как в Windows 7, так и в Windows 10.

Дополнительный модуль поиска / замены RegEx можно найти по адресу http://www.codedawn.com/excel-add-ins.php.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .