Сопоставление содержимого ячеек Excel посимвольно (макрос)
Как сопоставить содержимое ячеек в эксель отдельными символами и вывести в отдельную ячейку какие символы не совпадают. Возможности встроенных функций ПСТР, ПОИСК и пр. Пользовательский макрос - сопоставление каждого символа через цикл.
Работая с большими массивами данных в таблицах Excel, рано или поздно, приходится прибегать к сопоставлению содержимого двух и более таких таблиц.
Практически любой аналитик знает о существовании формул ЕСЛИ() или ВПР(), поэтому ему не составляет большого труда сопоставить различные ячейки таблиц или прямыми ссылками или по критериям. В таких ситуацих на просторах интернет еще можно встретить рекомендации по использованию функций СОВПАД(), а для сопоставления по множеству критериев - ИНДЕКС() вместе с ПОИСКПОЗ().
Ситуация осложняется, когда нужно сопоставить значение не целой ячейки, а каждого символа в такой ячейке с аналогичными символами в другой ячейке.
Зачем такое вообще может понадобиться? Самый банальный пример исключение человеческого фактора при заполнении файла:
"Сигарета" - "Cигaрeтa" - визуально эти оба слова выглядят одинаково, но на самом деле это не так и эксель, как и любое другое приложение это поймет. Выделенные буквы во втором слове "Cигaрeтa" написаны латиницей или буквами английского алфавита. Русская буква "С" и английская "C" определяются как различные потому, что для каждой из них есть свое соответсвие ANSI-кодировки
Да, безусловно, Excel обладает вооружением и на такой случай. Арсенал функций ПСТР(), ПОИСК(), ДЛСТР(), ЛЕВСИМВ() и ПРАВСИМВ() помогут разложить любую ячейку на составляющие символы, чтобы затем их сопоставить. Но если перед вами стоит задача сопоставить КАЖДЫЙ символ, то формула будет настолько массивной, что уже при необходимости сопоставить ячейки с 10-тью символами, вы сами безнадежно запутаетесь в логике вложений и условий.
Как быть в таком случае? Здесь бы выручили встроенные функции, которые бы работали по принципу цикла с рядом переменных. Будь бы такие функции они бы очень упростили и облегчили формулу на примере посимвольного сопоставления ячеек.
К счастью у нас есть VBA (макросы). Файл-вложение к статье содержит макрос, который позволяет сопоставить ячейки в двух таблицах и вывести в третьей через спец-символы, что именно в этих ячейках не совпадает.
Доступ к исходному коду макроса не закрыт, в коде для простоты понимания добавлены комментарии.
Добавлять комментарии могут только зарегистрированные пользователи.
[
Регистрация |
Вход ]