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

Вход

Регистрация

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

 

= Мир MS Excel/Подсветка значений на листе, согласно списка с другого листа - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Подсветка значений на листе, согласно списка с другого листа
sanpai Дата: Среда, 02.10.2019, 11:00 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 31
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте!
Ежемесячно вынужден вручную проверять таблицу от коллег.
Таблица заполняется людьми далекими от Excel еще больше, чем я, в результате чего постоянно возникают трудности.
Суть:
имеется артикулы разбросанные на листе1 в произвольном порядке, в их наименованиях часто путают rus и eng символы. У меня есть список с артикулами, по которым все готово, его я размещаю на 2-м листе. Далее нужно подсветить на 1-м листе артикулы, присутствующие в списке на 2-м листе.
Вроде все просто, но условное форматирование не различает 2-й список по нормальному, т.к. часть его разбита через Alt+Enter, часть символов на 1-м листе не в той раскладке и сам артикул может находиться в середине текста, размещенного в одной ячейке. В итоге каждый артикул я вбиваю в поиске через "*", чтобы избежать проблем с латиницей и вручную подсвечиваю все.
В VBA не силен, вполне вероятно достаточно скорректировать список на втором листе записав его на каждой новой строке через "*" в нужных местах? Не уверен, что формулы тут помогут - как через формулы менять цвет заливки я не знаю. Так же не представляю, как возможно реализовать решение через макросы.
Буду благодарен за Ваши идеи.
К сожалению, на работе аврал и убить 2-3 часа ну гугл поиск возможности нет, вынужден писать сюда.
К сообщению приложен файл: 6718487.xls (56.0 Kb)
 
Ответить
СообщениеЗдравствуйте!
Ежемесячно вынужден вручную проверять таблицу от коллег.
Таблица заполняется людьми далекими от Excel еще больше, чем я, в результате чего постоянно возникают трудности.
Суть:
имеется артикулы разбросанные на листе1 в произвольном порядке, в их наименованиях часто путают rus и eng символы. У меня есть список с артикулами, по которым все готово, его я размещаю на 2-м листе. Далее нужно подсветить на 1-м листе артикулы, присутствующие в списке на 2-м листе.
Вроде все просто, но условное форматирование не различает 2-й список по нормальному, т.к. часть его разбита через Alt+Enter, часть символов на 1-м листе не в той раскладке и сам артикул может находиться в середине текста, размещенного в одной ячейке. В итоге каждый артикул я вбиваю в поиске через "*", чтобы избежать проблем с латиницей и вручную подсвечиваю все.
В VBA не силен, вполне вероятно достаточно скорректировать список на втором листе записав его на каждой новой строке через "*" в нужных местах? Не уверен, что формулы тут помогут - как через формулы менять цвет заливки я не знаю. Так же не представляю, как возможно реализовать решение через макросы.
Буду благодарен за Ваши идеи.
К сожалению, на работе аврал и убить 2-3 часа ну гугл поиск возможности нет, вынужден писать сюда.

Автор - sanpai
Дата добавления - 02.10.2019 в 11:00
Kostya_Ye Дата: Среда, 02.10.2019, 12:34 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 271
Репутация: 228 ±
Замечаний: 0% ±

Excel 2016
sanpai, добрый день,
исходя из того, что вы описали, я бы начал с организации справочника артикулов на Листе 2 в виде один артикул=одна ячейка, без всяких Alt-Enter.
Далее неясно как ваши пользователи заполняют значения на лист, возможно стОит сделать защищенную форму с выбором значений из выпадающего списка. Тогда необходимость проверки либо совсем отпадет, либо значительно упростится.
 
Ответить
Сообщениеsanpai, добрый день,
исходя из того, что вы описали, я бы начал с организации справочника артикулов на Листе 2 в виде один артикул=одна ячейка, без всяких Alt-Enter.
Далее неясно как ваши пользователи заполняют значения на лист, возможно стОит сделать защищенную форму с выбором значений из выпадающего списка. Тогда необходимость проверки либо совсем отпадет, либо значительно упростится.

Автор - Kostya_Ye
Дата добавления - 02.10.2019 в 12:34
sanpai Дата: Среда, 02.10.2019, 13:58 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 31
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Kostya_Ye, создал лист 3, в котором разбил список на отдельные ячейки, убрал лишние надписи.
Условным форматированием удалось добиться подсветки всех значений, которые на 100% совпадают с значением в ячейке. Но, к примеру, 05с1255-48 и 05с125501-48 это одно и то же. Если через Ctrl+F вбивать, я просто вбиваю "05*1255*-48", условное форматирование же, видимо, воспринимает значения в ячейке буквально и не подсвечивает подобное. Можно, конечно, вбить на 3-м листе все варианты, но т.к. артикулов куча, а окончания 01,02,03 и т.п. на конце артикулов могут добавляться постоянно, этот вариант не подходит.
К сообщению приложен файл: 9313548.xls (67.5 Kb)
 
Ответить
СообщениеKostya_Ye, создал лист 3, в котором разбил список на отдельные ячейки, убрал лишние надписи.
Условным форматированием удалось добиться подсветки всех значений, которые на 100% совпадают с значением в ячейке. Но, к примеру, 05с1255-48 и 05с125501-48 это одно и то же. Если через Ctrl+F вбивать, я просто вбиваю "05*1255*-48", условное форматирование же, видимо, воспринимает значения в ячейке буквально и не подсвечивает подобное. Можно, конечно, вбить на 3-м листе все варианты, но т.к. артикулов куча, а окончания 01,02,03 и т.п. на конце артикулов могут добавляться постоянно, этот вариант не подходит.

Автор - sanpai
Дата добавления - 02.10.2019 в 13:58
sanpai Дата: Среда, 02.10.2019, 15:43 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 31
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Тут нашел нечто похожее, но от обратного. К сожалению, в VBA разобраться не смог. Сам файл с примером с того сайта, вложил.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range
    If Target.Cells.Count > 1 Then Exit Sub
    'Для столбцов C,  М...
    If Not Intersect(Target, Range("C3:C1000, M3:M1000")) Is Nothing Then
        Application.EnableEvents = False
        With Target.Offset(0, -1)
            If Target = "" Then
                .Value = ""
                .Interior.ColorIndex = xlNone
            Else
                Set Rng = Sheets("Остатки").Range("MyRange").Find(what:=Target, LookIn:=xlValues, lookAt:=xlWhole)
                If Not Rng Is Nothing Then
                    .Value = "Есть"
                    .Interior.Color = 5287936
                Else
                    .Value = "Нет"
                    .Interior.ColorIndex = 3
                End If
            End If
        End With
    End If
    'Для возврата (столбцы G, Q...)
    If Not Intersect(Target, Range("G3:G1000, Q3:Q1000")) Is Nothing Then
        Application.EnableEvents = False
        With Target
            Set Rng = Sheets("Остатки").Range("MyRange").Find(what:=Target, LookIn:=xlValues, lookAt:=xlWhole)
                If Not Rng Is Nothing Then
                    .Font.ColorIndex = 1
                Else
                    .Font.ColorIndex = 3
                End If
        End With
    End If
    Application.EnableEvents = True
End Sub
[/vba]
К сообщению приложен файл: __01.xlsm (95.7 Kb)
 
Ответить
СообщениеТут нашел нечто похожее, но от обратного. К сожалению, в VBA разобраться не смог. Сам файл с примером с того сайта, вложил.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range
    If Target.Cells.Count > 1 Then Exit Sub
    'Для столбцов C,  М...
    If Not Intersect(Target, Range("C3:C1000, M3:M1000")) Is Nothing Then
        Application.EnableEvents = False
        With Target.Offset(0, -1)
            If Target = "" Then
                .Value = ""
                .Interior.ColorIndex = xlNone
            Else
                Set Rng = Sheets("Остатки").Range("MyRange").Find(what:=Target, LookIn:=xlValues, lookAt:=xlWhole)
                If Not Rng Is Nothing Then
                    .Value = "Есть"
                    .Interior.Color = 5287936
                Else
                    .Value = "Нет"
                    .Interior.ColorIndex = 3
                End If
            End If
        End With
    End If
    'Для возврата (столбцы G, Q...)
    If Not Intersect(Target, Range("G3:G1000, Q3:Q1000")) Is Nothing Then
        Application.EnableEvents = False
        With Target
            Set Rng = Sheets("Остатки").Range("MyRange").Find(what:=Target, LookIn:=xlValues, lookAt:=xlWhole)
                If Not Rng Is Nothing Then
                    .Font.ColorIndex = 1
                Else
                    .Font.ColorIndex = 3
                End If
        End With
    End If
    Application.EnableEvents = True
End Sub
[/vba]

Автор - sanpai
Дата добавления - 02.10.2019 в 15:43
sanpai Дата: Среда, 02.10.2019, 16:11 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 31
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
А тут тема еще более похожа на мою, но VBA не понял...
 
Ответить
СообщениеА тут тема еще более похожа на мою, но VBA не понял...

Автор - sanpai
Дата добавления - 02.10.2019 в 16:11
  • Страница 1 из 1
  • 1
Поиск:

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