2016-12-22 97 views
0

我已经查看了条件格式,并且从中可以看到它必须在Excel中打开时突出显示符合规则的特定单元格。如何突出显示包含当前单元格文本的单元格

Excel电子表格有没有办法让某种形式的规则检查当前单元格的文本值与特定范围内的所有其他单元格并突出显示与当前单元格的文本值匹配的所有单元格?

我正在为一个活动创建一个巨大的预约时间表,我希望人们能够点击他们的某个约会,其他约会将在整个时间表中突出显示。只要您点击不同公司名称的其他单元格,将会突出显示具有该公司名称文本值的所有单元格。

每一行代表一家公司(约50个),每列将代表一个预约时段(即9:15-9:30)。每个单元格将保存将在匹配预约时间与相应公司会面的买方的名称/代码。您可以想象这会变得非常混乱,我相信能够持续突出显示每位买家的所有约会将很有用。

我如何把它放在一起,甚至有可能?

+1

是的,它是可能的。你将不得不编写读取被单击单元格值的VBA代码(使用工作表的SelectionChange事件),然后在包含约会的整个单元格范围内使用该值执行Range.Find)并找到每个单元格,设置单元格的.interior.backgroundcolor属性以满足您的要求。您还希望在执行查找之前将所有单元格背景设置为白色,或者在每次查看时将所有单击的单元格留为彩色。 – Dave

+0

这应该足以让你开始 - 通常这只是一个“向我们展示你所尝试过的”类型注释,但它是Xmas(差不多),所以继续研究以上内容。如果您仍然有麻烦,请回来,更新您的代码,我们会看看我们是否无法让您摆脱困境。 – Dave

+0

@Dave好评!只要提一下,如果首先用'Union'将所有'Find'范围收集到一个范围,然后执行你所描述的操作就会更快。 – 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

相关问题