Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Сравнение двух массивов информации - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сравнение двух массивов информации (Макросы Sub)
Сравнение двух массивов информации
Taurus Дата: Пятница, 10.01.2014, 15:21 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Уважаемые форумчане !
Во-первых, всех поздравляю с прошедшими праздниками. Желаю, здоровья, успехов и интересных проектов.

К сожалению, не разбираюсь в VBA, поэтому прошу помощи у знатоков в решении следующей задачи.

Суть задачи.

1. Лист 1 "Массив" содержит информацию (время от времени редактируется пользователем и вносится только в столбец "А"), которая проверяется (сопоставляется) со значениями эталонного справочника - см. Лист 2 "Эталон".

Если хотя бы одно значение листа 1 не совпадает (хотя бы на один символ, пробел до и после значения не учитывается) со всеми значениями эталонного справочника (по столбцам от А до J), тогда такое ложное значение (слово) в листе 1 подсвечивается красным цветом, а если такое значение совпадает со значением эталонного справочника, тогда значение (слово) листа 1 станет зеленого цвета.

Пример того, каким должен быть результат при работе макроса, содержится в файле "Как должно работать".

Пожалуйста, макрос пропишите в файле задача таким образом, чтобы макрос запускался при нажатии кнопки "запустить".

Заранее благодарю за содействие.
К сообщению приложен файл: 7028324.xls (35.5 Kb) · 5948573.xls (34.0 Kb)
 
Ответить
СообщениеУважаемые форумчане !
Во-первых, всех поздравляю с прошедшими праздниками. Желаю, здоровья, успехов и интересных проектов.

К сожалению, не разбираюсь в VBA, поэтому прошу помощи у знатоков в решении следующей задачи.

Суть задачи.

1. Лист 1 "Массив" содержит информацию (время от времени редактируется пользователем и вносится только в столбец "А"), которая проверяется (сопоставляется) со значениями эталонного справочника - см. Лист 2 "Эталон".

Если хотя бы одно значение листа 1 не совпадает (хотя бы на один символ, пробел до и после значения не учитывается) со всеми значениями эталонного справочника (по столбцам от А до J), тогда такое ложное значение (слово) в листе 1 подсвечивается красным цветом, а если такое значение совпадает со значением эталонного справочника, тогда значение (слово) листа 1 станет зеленого цвета.

Пример того, каким должен быть результат при работе макроса, содержится в файле "Как должно работать".

Пожалуйста, макрос пропишите в файле задача таким образом, чтобы макрос запускался при нажатии кнопки "запустить".

Заранее благодарю за содействие.

Автор - Taurus
Дата добавления - 10.01.2014 в 15:21
SkyPro Дата: Пятница, 10.01.2014, 16:07 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
Вчера-позавчера давал ответ на подобный вопрос.
Условное форматирование вам в помощь.
УФ не поможет.

Вот макрос.
[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]
К сообщению приложен файл: 0651385.xls (55.0 Kb)


skypro1111@gmail.com

Сообщение отредактировал SkyPro - Пятница, 10.01.2014, 16:37
 
Ответить
СообщениеВчера-позавчера давал ответ на подобный вопрос.
Условное форматирование вам в помощь.
УФ не поможет.

Вот макрос.
[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]

Автор - SkyPro
Дата добавления - 10.01.2014 в 16:07
Taurus Дата: Суббота, 11.01.2014, 14:06 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
SkyPro, добрый день !
Последняя редакция макроса (см. вложение), безусловно лучше, чем предыдущая, но имеются недочеты.
В эталонном справочнике ввел новые значения (графа "проверка") для сопоставления.

Макрос не подсвечивает значения зеленым, которые должны были совпасть.

Для значения "АВТОНОМНА РЕСПУБЛІКА КРИМ" в листе "Массив" не сработала зеленая подсветка для массива под № 37, 41, 48.

Для значения "МІСТО" в листе "Массив" пропущена зеленая подсветка для массива под № 40.

Для значения "ВУЛИЦЯ" в листе "Массив" пропущена зеленая подсветка для массива под № 41, 47.

Для значения "СЕЛИЩЕ" в листе "Массив" пропущена зеленая подсветка для массива под № 44.

Для значения "29.10.2013" (возможно и для других дат) в листе "Массив" проигнорированы все строки.

К сообщению приложен файл: 123.xlsm (33.1 Kb)
 
Ответить
СообщениеSkyPro, добрый день !
Последняя редакция макроса (см. вложение), безусловно лучше, чем предыдущая, но имеются недочеты.
В эталонном справочнике ввел новые значения (графа "проверка") для сопоставления.

Макрос не подсвечивает значения зеленым, которые должны были совпасть.

Для значения "АВТОНОМНА РЕСПУБЛІКА КРИМ" в листе "Массив" не сработала зеленая подсветка для массива под № 37, 41, 48.

Для значения "МІСТО" в листе "Массив" пропущена зеленая подсветка для массива под № 40.

Для значения "ВУЛИЦЯ" в листе "Массив" пропущена зеленая подсветка для массива под № 41, 47.

Для значения "СЕЛИЩЕ" в листе "Массив" пропущена зеленая подсветка для массива под № 44.

Для значения "29.10.2013" (возможно и для других дат) в листе "Массив" проигнорированы все строки.


Автор - Taurus
Дата добавления - 11.01.2014 в 14:06
SkyPro Дата: Воскресенье, 12.01.2014, 03:45 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
Для значения "СЕЛИЩЕ" в листе "Массив" пропущена зеленая подсветка для массива под № 44.

Такого слова нет на втором листе.
К сообщению приложен файл: 123-2-.xlsm (35.2 Kb)


skypro1111@gmail.com
 
Ответить
Сообщение
Для значения "СЕЛИЩЕ" в листе "Массив" пропущена зеленая подсветка для массива под № 44.

Такого слова нет на втором листе.

Автор - SkyPro
Дата добавления - 12.01.2014 в 03:45
Taurus Дата: Воскресенье, 12.01.2014, 17:53 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Такого слова нет на втором листе.


Здесь я ошибся и прикрепил другой файл без данного значения, но дело не в этом.

Решил минимизировать количество слов эталонного справочника, чтобы можно было сразу увидеть пробелы. Очень странно, но опять не хватает немного (((.

В этот раз значение "ТОВАРИСТВО З ОБМЕЖЕНОЮ ВІДПОВІДАЛЬНІСТЮ " не подсветилось в массивах под № 47, 78.

См. вложение.
К сообщению приложен файл: 227.xlsm (44.5 Kb)
 
Ответить
Сообщение
Такого слова нет на втором листе.


Здесь я ошибся и прикрепил другой файл без данного значения, но дело не в этом.

Решил минимизировать количество слов эталонного справочника, чтобы можно было сразу увидеть пробелы. Очень странно, но опять не хватает немного (((.

В этот раз значение "ТОВАРИСТВО З ОБМЕЖЕНОЮ ВІДПОВІДАЛЬНІСТЮ " не подсветилось в массивах под № 47, 78.

См. вложение.

Автор - Taurus
Дата добавления - 12.01.2014 в 17:53
Pelena Дата: Воскресенье, 12.01.2014, 18:26 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 19195
Репутация: 4423 ±
Замечаний: ±

Excel 365 & Mac Excel
У Вас что-то написано не точно. Попробовала скопировать эту фразу из "правильной" строчки и запустить макрос - подсветилось


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеУ Вас что-то написано не точно. Попробовала скопировать эту фразу из "правильной" строчки и запустить макрос - подсветилось

Автор - Pelena
Дата добавления - 12.01.2014 в 18:26
Taurus Дата: Воскресенье, 12.01.2014, 18:41 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Pelena, в справочнике всё указано было правильно. Количество пробелов между словами справочника в значении "ТОВАРИСТВО З ОБМЕЖЕНОЮ ВІДПОВІДАЛЬНІСТЮ" было идентично как и на первом листе (а значение листа 1 полностью соответствовало словарю). Только в справочник вводилось значение вручную и не копировалось. Однако, я сейчас попробовал скопировать значение, которое не подсветилось в справочник и всё действительно заработало. Может быть какой-то был глюк... Пока что всё ОК.
 
Ответить
СообщениеPelena, в справочнике всё указано было правильно. Количество пробелов между словами справочника в значении "ТОВАРИСТВО З ОБМЕЖЕНОЮ ВІДПОВІДАЛЬНІСТЮ" было идентично как и на первом листе (а значение листа 1 полностью соответствовало словарю). Только в справочник вводилось значение вручную и не копировалось. Однако, я сейчас попробовал скопировать значение, которое не подсветилось в справочник и всё действительно заработало. Может быть какой-то был глюк... Пока что всё ОК.

Автор - Taurus
Дата добавления - 12.01.2014 в 18:41
Taurus Дата: Понедельник, 13.01.2014, 00:12 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010

Да, при распозновании текста, как оказалось действительно не буква, а цифра. Не учел этот фактор.
SKYPRO ещ' раз спасибо за труд hands . Буду прогонять макрос на большом количестве строк, но думаю, что всё будет ОК. :)
 
Ответить
Сообщение
Да, при распозновании текста, как оказалось действительно не буква, а цифра. Не учел этот фактор.
SKYPRO ещ' раз спасибо за труд hands . Буду прогонять макрос на большом количестве строк, но думаю, что всё будет ОК. :)

Автор - Taurus
Дата добавления - 13.01.2014 в 00:12
Taurus Дата: Среда, 29.01.2014, 22:22 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Прошу помощи в рамках данной темы :pray:. После очередного копирования информации произошел сбой. Подскажите, с чем это может быть связано ?
К сообщению приложен файл: 123-2-2-.xlsm (32.6 Kb) · 4157617.png (42.4 Kb)
 
Ответить
СообщениеПрошу помощи в рамках данной темы :pray:. После очередного копирования информации произошел сбой. Подскажите, с чем это может быть связано ?

Автор - Taurus
Дата добавления - 29.01.2014 в 22:22
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сравнение двух массивов информации (Макросы Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!