Страницы: 1
RSS
Сравнить значения в двух столбцах и выделить ячейку(и) или строку(и) одинаковые по значению
 
Здравствуйте, ни где не могу найти ответ.
Есть таблица:





Возможно ли, чтобы при выделении мышью ячейки, к примеру ААА ,  в столбце С (только С) , выделение перешло к соответствующей ячейке в столбце А (не важно какой по счёту), или выделить цветом, а лучше выделить всю строку. А ещё лучше все ячейки или строки ? :(
То есть при клике на С2 курсор переходит на А1 или А4, ну или если С4, то на А2, А6.
А ещё чтобы без макросов (что- то я совсем обнаглел  :oops:  ).
Формулами это возможно ?
Чтобы пользователь не парился с сообщениями о макросах и условном форматировании вручную.
На VBA я б сам написал, а вот с формулами как- то не очень.
 
 
Цитата
Caa2000 написал:
На VBA я б сам написал
Самое разумное решение в данной ситуации  :)  
Формулы не умеют делать Select, и УФ не умеет реагировать на Select
 
Что, всё так грустно ?
А что- нибудь типа VLOOKUP  ->  координаты соответствующей ячейки -> INDEX или CELL (извиняюсь, что правда нельзя выделить ?)
Cell.Activate
Нету ?  :(  
 
Цитата
Caa2000 написал:
Cell.ActivateНету ?    
формулой? нету
только если в С гиперссылки запихать
Соблюдение правил форума не освобождает от модераторского произвола
 
Жалко...
Дело в том, что там сортировать надо...
Прийдётся на VBA  :cry:

Спасибо.
Изменено: Caa2000 - 13.03.2021 10:49:40
 
Если кому интересно, то как-то так

Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Range_C, Range_A, Cell_ As Range

Set Range_A = Range("a1:a10")
Set Range_C = Range("c1:c10")

Range_A.EntireRow.Interior.ColorIndex = 0
If Intersect(ActiveCell, Range_C) Is Nothing Then Exit Sub

For Each Cell_ In Range_A
    If Cell_.Value = Target Then Cell_.EntireRow.Interior.ColorIndex = 39
Next
End Sub

Извиняюсь, если где- то коряво (я вообще- то VB6- ист). Зато работает. Только сообщения о макросах достали.
Спасибо всем, кто ответил.
 
Range_C, Range_A типа Variant. Типы в VBA указывать для каждой переменной.
Присвоение диапазона переменной Range_C и сама переменная лишние, ведь используется только раз.
При любом выделении на листе срабатывает очистка заливки в Range("a1:a10"). Так надо?
EntireRow - зачем красить всю строку? Достаточно ограничиться данными таблицы.
Код
Cell_.Resize(1, 2).Interior.ColorIndex = 39

Желательно очищать память после использования переменных:
Код
Set Range_A = Nothing


Цитата
Caa2000 написал: сообщения о макросах достали
Файл-Параметры-Центр управления безопасностью-Параметры центра-Параметры макросов-Включить все макросы
 
Спасибо, vikttur за замечания.
А заливку чистить, чтоб потом весь лист одного цвета не получился.  :)  
 
Так чистить-то можно после
Код
If Intersect(ActiveCell, Range_C) Is Nothing Then Exit Sub
Страницы: 1
Наверх