2016-12-22 4 views
0

Я рассмотрел условное форматирование и, как я вижу, он должен быть открыт в excel при подсветке определенных ячеек, соответствующих правилу в диапазоне.Как выделить ячейки, содержащие текст текущей ячейки

Есть ли способ, чтобы таблица Excel использовала какое-либо правило, которое будет проверять текстовое значение текущей ячейки для всех других ячеек в определенном диапазоне и выделять все ячейки, соответствующие текстовому значению текущей ячейки?

Я создаю гигантский график встреч для мероприятия, и я хочу, чтобы люди могли нажимать на одно из своих назначений, а остальные их назначения будут подсвечены в течение всего графика. Как только вы нажмете на другую ячейку, имеющую другое название компании, будут выделены все ячейки с текстовым значением этого названия компании.

Каждая строка представляет собой компанию (около 50), и каждый столбец будет представлять собой гнездо для приема (т. Е. 9: 15-9: 30). Каждая ячейка будет содержать имя/код покупателя, который будет отвечать соответствующей компании в соответствующее время встречи. Как вы можете себе представить, это может стать очень грязным, и я считаю, что полезно будет выделить все назначения для каждого покупателя на постоянной основе.

Как это сделать вместе и возможно ли это?

+1

Да, это возможно. Вам нужно будет написать код VBA, который считывает значение щелкнутой ячейки (используйте это событие SelectionChange для рабочего листа), затем выполнил Range.Find, используя это значение во всем диапазоне ячеек, содержащих встречи) и для каждой найденной ячейки, установите свойство .interior.backgroundcolor ячейки в соответствии с вашими требованиями. Вы также хотите, чтобы все фоновые ячейки были белыми до того, как вы нарисуете, или вы оставите все щелкнутые ячейки по-разному, проходя через каждый. – Dave

+0

Этого должно быть достаточно, чтобы вы начали - обычно это было бы «показать нам, что вы пробовали», только комментарий типа, но это Xmas (почти), поэтому идите вперед и исследуйте выше. И если у вас все еще есть проблемы, вернитесь, обновите свой код, и мы увидим, не сможем ли вы убрать вас в квадрат. – Dave

+0

@Dave Хороший комментарий! Просто упомянуть, было бы быстрее, если собрать все «Найти» диапазоны в один с «Союзом» первым, а затем сделать то, что вы описали. – CommonSense

ответ

3

Как это Рождество ... обновите свое условное форматирование с помощью события Worksheet_SelectionChange.

Возможно, вы захотите добавить чек для пустых ячеек - в этом случае выделяются все пустые ячейки в диапазоне (желтый фон, красный текст).

Что-то вроде:

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 

    Dim rngAppointments As Range 

    If Target.Cells.Count = 1 Then 
     Set rngAppointments = Target.Parent.Range("A1:D50") 
     If Not Intersect(Target, rngAppointments) Is Nothing Then 
      With rngAppointments 
       With .FormatConditions 
        .Delete 
        .Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="=""" & Target.Value & """" 
       End With 
       .FormatConditions(.FormatConditions.Count).SetFirstPriority 
       With .FormatConditions(1) 
        With .Font 
         .Bold = True 
         .Color = -16776961 
        End With 
        With .Interior 
         .Color = 65535 
        End With 
       End With 
      End With 
     End If 
    End If 
End Sub 
+0

Спасибо Даррен, отлично поработал :) С Рождеством! – RubyMax

Смежные вопросы