Уважаемые форумчане ! Во-первых, всех поздравляю с прошедшими праздниками. Желаю, здоровья, успехов и интересных проектов.
К сожалению, не разбираюсь в VBA, поэтому прошу помощи у знатоков в решении следующей задачи.
Суть задачи.
1. Лист 1 "Массив" содержит информацию (время от времени редактируется пользователем и вносится только в столбец "А"), которая проверяется (сопоставляется) со значениями эталонного справочника - см. Лист 2 "Эталон".
Если хотя бы одно значение листа 1 не совпадает (хотя бы на один символ, пробел до и после значения не учитывается) со всеми значениями эталонного справочника (по столбцам от А до J), тогда такое ложное значение (слово) в листе 1 подсвечивается красным цветом, а если такое значение совпадает со значением эталонного справочника, тогда значение (слово) листа 1 станет зеленого цвета.
Пример того, каким должен быть результат при работе макроса, содержится в файле "Как должно работать".
Пожалуйста, макрос пропишите в файле задача таким образом, чтобы макрос запускался при нажатии кнопки "запустить".
Заранее благодарю за содействие.
Уважаемые форумчане ! Во-первых, всех поздравляю с прошедшими праздниками. Желаю, здоровья, успехов и интересных проектов.
К сожалению, не разбираюсь в VBA, поэтому прошу помощи у знатоков в решении следующей задачи.
Суть задачи.
1. Лист 1 "Массив" содержит информацию (время от времени редактируется пользователем и вносится только в столбец "А"), которая проверяется (сопоставляется) со значениями эталонного справочника - см. Лист 2 "Эталон".
Если хотя бы одно значение листа 1 не совпадает (хотя бы на один символ, пробел до и после значения не учитывается) со всеми значениями эталонного справочника (по столбцам от А до J), тогда такое ложное значение (слово) в листе 1 подсвечивается красным цветом, а если такое значение совпадает со значением эталонного справочника, тогда значение (слово) листа 1 станет зеленого цвета.
Пример того, каким должен быть результат при работе макроса, содержится в файле "Как должно работать".
Пожалуйста, макрос пропишите в файле задача таким образом, чтобы макрос запускался при нажатии кнопки "запустить".
Вчера-позавчера давал ответ на подобный вопрос. Условное форматирование вам в помощь. УФ не поможет.
Вот макрос. [vba]
Код
Sub proverka() Dim x, i& Dim txt$ Dim Etalon, r&, c&, st& Etalon = Sheets("Эталонный справочник").[A1:J1000].Value x = Range("A1:A" & [A65535].End(xlUp).Row).Value For i = 1 To UBound(x) txt = CStr(x(i, 1)) If txt <> "" Then Cells(i, 1).Font.Color = vbRed For r = LBound(Etalon) To UBound(Etalon) For c = 1 To 10 If Trim(Etalon(r, c)) <> "" And Len(Trim(Etalon(r, c))) > 1 Then st = InStr(1, txt, Trim(Etalon(r, c))) If st > 0 Then Cells(i, 1).Characters(Start:=st, Length:=Len(Trim(Etalon(r, c)))).Font.Color = vbGreen st = 0 End If End If Next Next End If Next End Sub
[/vba]
Вчера-позавчера давал ответ на подобный вопрос. Условное форматирование вам в помощь. УФ не поможет.
Вот макрос. [vba]
Код
Sub proverka() Dim x, i& Dim txt$ Dim Etalon, r&, c&, st& Etalon = Sheets("Эталонный справочник").[A1:J1000].Value x = Range("A1:A" & [A65535].End(xlUp).Row).Value For i = 1 To UBound(x) txt = CStr(x(i, 1)) If txt <> "" Then Cells(i, 1).Font.Color = vbRed For r = LBound(Etalon) To UBound(Etalon) For c = 1 To 10 If Trim(Etalon(r, c)) <> "" And Len(Trim(Etalon(r, c))) > 1 Then st = InStr(1, txt, Trim(Etalon(r, c))) If st > 0 Then Cells(i, 1).Characters(Start:=st, Length:=Len(Trim(Etalon(r, c)))).Font.Color = vbGreen st = 0 End If End If Next Next End If Next End Sub
SkyPro, добрый день ! Последняя редакция макроса (см. вложение), безусловно лучше, чем предыдущая, но имеются недочеты. В эталонном справочнике ввел новые значения (графа "проверка") для сопоставления.
Макрос не подсвечивает значения зеленым, которые должны были совпасть.
Для значения "АВТОНОМНА РЕСПУБЛІКА КРИМ" в листе "Массив" не сработала зеленая подсветка для массива под № 37, 41, 48.
Для значения "МІСТО" в листе "Массив" пропущена зеленая подсветка для массива под № 40.
Для значения "ВУЛИЦЯ" в листе "Массив" пропущена зеленая подсветка для массива под № 41, 47.
Для значения "СЕЛИЩЕ" в листе "Массив" пропущена зеленая подсветка для массива под № 44.
Для значения "29.10.2013" (возможно и для других дат) в листе "Массив" проигнорированы все строки.
SkyPro, добрый день ! Последняя редакция макроса (см. вложение), безусловно лучше, чем предыдущая, но имеются недочеты. В эталонном справочнике ввел новые значения (графа "проверка") для сопоставления.
Макрос не подсвечивает значения зеленым, которые должны были совпасть.
Для значения "АВТОНОМНА РЕСПУБЛІКА КРИМ" в листе "Массив" не сработала зеленая подсветка для массива под № 37, 41, 48.
Для значения "МІСТО" в листе "Массив" пропущена зеленая подсветка для массива под № 40.
Для значения "ВУЛИЦЯ" в листе "Массив" пропущена зеленая подсветка для массива под № 41, 47.
Для значения "СЕЛИЩЕ" в листе "Массив" пропущена зеленая подсветка для массива под № 44.
Для значения "29.10.2013" (возможно и для других дат) в листе "Массив" проигнорированы все строки.
Pelena, в справочнике всё указано было правильно. Количество пробелов между словами справочника в значении "ТОВАРИСТВО З ОБМЕЖЕНОЮ ВІДПОВІДАЛЬНІСТЮ" было идентично как и на первом листе (а значение листа 1 полностью соответствовало словарю). Только в справочник вводилось значение вручную и не копировалось. Однако, я сейчас попробовал скопировать значение, которое не подсветилось в справочник и всё действительно заработало. Может быть какой-то был глюк... Пока что всё ОК.
Pelena, в справочнике всё указано было правильно. Количество пробелов между словами справочника в значении "ТОВАРИСТВО З ОБМЕЖЕНОЮ ВІДПОВІДАЛЬНІСТЮ" было идентично как и на первом листе (а значение листа 1 полностью соответствовало словарю). Только в справочник вводилось значение вручную и не копировалось. Однако, я сейчас попробовал скопировать значение, которое не подсветилось в справочник и всё действительно заработало. Может быть какой-то был глюк... Пока что всё ОК.Taurus
Да, при распозновании текста, как оказалось действительно не буква, а цифра. Не учел этот фактор. SKYPRO ещ' раз спасибо за труд . Буду прогонять макрос на большом количестве строк, но думаю, что всё будет ОК.
Да, при распозновании текста, как оказалось действительно не буква, а цифра. Не учел этот фактор. SKYPRO ещ' раз спасибо за труд . Буду прогонять макрос на большом количестве строк, но думаю, что всё будет ОК. Taurus