Страницы: 1
RSS
Условное форматирование на основе совпадения части текста в столбце
 
С трудом собрал для себя решение по сверке кодов маркировки. Россию накрывает это несчастье, а готовых решений для всех задач просто нет. Вот я столкнулся с такой проблемой, что поставщик присылает сокращённые коды маркировки и их же в виде кодов DataMatrix на стикерах. Задача в сверке кодов, переданных в электронном виде и предоставленных фактически с товаром.

В первом столбце таблицы будут коды, представленные поставщиком. Второй столбец заполняется при помощи сканера штрихкодов. Таблица ищет первые 24 символа полного штрихкода в первом столбце и если находит совпадения, ставит пометку "Есть" в третьем столбце, а условное форматирование на основе этой пометки окрашивает ячейку с соответствующим кодом в зелёный цвет. Если совпадений нет, то в красный.

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

Я попробовал добавить ещё один столбец в начале таблицы, но мне не удалось составить формулу, чтобы она корректно работала. Прошу помощи с реализацией этого решения. В документе две вкладки с базовой версией таблицы и с отметкой галочкой строк с совпадениями, но вторая вкладка работает не корректно.
Изменено: palach-d - 26.03.2021 14:30:46
 
Можно макросом. Сравнивает левые 24 символа

Поправил код, чтобы выделял цветом еще 2 столбец и проверку на пустые строки
Изменено: artemkau88 - 26.03.2021 15:00:54
 
artemkau88,Спасибо за быстрый ответ, но, насколько я понял, макрос работает не так, как мне нужно. Мне надо, чтобы проверка проходила по всему первому столбцу. В нём будет примерно 4000 значений. Во второй столбец я буду вводить значения по одному и мне нужно, чтобы поиск совпадения происходил по всему первому столбцу после ввода значений во второй столбец. Желательно, чтобы проверка совпадений происходила после нажатия клавиши Enter.

В вашем решении проверка происходит только в пределах одной строки первого и второго столбца.
 
Вариант УФ столбца А.
Код
=ЕСЛИ(A2<>"";СЧЁТЕСЛИ(B:B;ЛЕВБ(A2;24)&"*");0)
 
Ребята, хоть кричи, хоть плачь,
но вас не напрягает ник ПАЛАЧ?
 
Посмотрите файл. На листе "Базовый", в событии листа "изменить", макрос.

Немного подредактировал код. Подправил функцию
Изменено: artemkau88 - 27.03.2021 11:33:26
 
gling, спасибо большое за помощь, очень помогли. Всё работает как надо.
 
artemkau88, файл почему-то недоступен для скачивания. Не могли бы вы его повторно выложить? Написано: Указанного файла не существует.
Изменено: palach-d - 27.03.2021 15:45:27
 
Посмотрите.  
 
artemkau88, Всё кажется работает, но немного не так. При вводе значений в первый столбец не предполагалось проводить никакие вычисления. Это столбец с исходными данными. Сравнение записей должно происходить только по факту ввода значения во второй столбец. Соответственно окрашивание совпавшей пары также должно происходить по факту ввода значения во второй столбец.

Также при очистке таблицы не происходит восстановление исходного форматирования с удалением заливки цветом и удаление значений в третьем столбце. Хотя в моём исходном варианте третий столбец был вспомогательным. В варианте с VBA он не обязателен.

Мне интересен такой вопрос. При количестве строк более 4000 какой вариант будет работать быстрее и требовать меньше вычислительной мощности компьютера, с формулами или скриптом?
 
Подправил, проверьте.
 
artemkau88, мне даже неудобно уже. Не работает подсветка зелёным в первом столбце той записи, с которой найдено совпадение.
 
Прошу прощения, не понял))

Должны подкрашиваться найденные данные в столбце 1? А несоответствие не должно, верно?
Изменено: artemkau88 - 27.03.2021 17:07:40
 
artemkau88, подкрашиваться должны в первом столбце значения, которым найдена пара во втором столбце. Во втором столбце зелёным должны подкрашиваться значения, которым найдена пара в первом столбце и красным значения, которым пары не найдены.
 
Проверьте, так?
Изменено: artemkau88 - 27.03.2021 20:14:54
 
artemkau88, да, теперь работает как надо. Огромное спасибо. Попробую завтра потестировать в работе.  
Страницы: 1
Наверх