2017-07-27 172 views
1

我试图很容易地表示活动单元格和一组其他单元格之间的关系,最好使用条件格式。excel基于活动单元格的条件格式化

我实质上是制作甘特图,并希望能够为单元格遮蔽不同的颜色以识别依赖关系。所以这个想法是,在列A中我有一组任务ID,在列B中我有描述,而列C是一组依赖关系。

当我选择了'B3'之类的东西时,它会查看C3中的值(列A中包含的ID的逗号分隔列表),以确定哪些匹配行由列A中的ID标识,都是依赖关系 - 然后以不同的颜色着色。

这将基于活动单元切换。

我猜这不适用条件格式,可能需要做一些VBA或想出一个不同的方式来识别这些关系。有人做过类似的事吗?

比方说,我有我的简单的表设置是这样的:

Task ID | Description | Dependencies 
--------|-------------|------------- 
1  | Task One |  
2  | Task Two | 1 
3  | Task Three | 
4  | Task Four | 1, 3 
5  | Task Five | 1, 2, 4 

时,我有“1,3”小区选择(旁边任务四)我愿意任务一和任务三突出显示。

我添加了一些VBA代码来实时更新一些条件格式。

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
    Target.Calculate 
    End Sub 

我有一些条件格式工作要突出同一行中不同的细胞正如我已经得到了作为活动单元格:

=CELL("address")=CELL("address",$C2) 

适用于我要强调的立柱,立柱B

但我不想总是突出显示相邻的单元格......我想根据“依赖性”列中的值找到适当的任务。

+0

这将需要VBA在Worksheet_SelectionChange事件。 –

+0

添加了一个,但无法弄清楚如何执行vlookup的东西。 – Dave

+0

使用[编辑] –

回答

1

使用此事件在工作表中的代码:

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
Dim str As Variant 
Dim strarr() As String 
Dim j As Long 
If Not Intersect(Target, Range("C:C")) Is Nothing Then 
    Range("B:B").Interior.Pattern = xlNone 
    If Target <> "" Then 
     strarr = Split(Target, ",") 
     For Each str In strarr 
      j = 0 
      On Error Resume Next 
      j = Application.WorksheetFunction.Match(CLng(Application.Trim(str)), Range("A:A"), 0) 
      On Error GoTo 0 
      If j <> 0 Then 
       Cells(j, 2).Interior.Color = 65535 
      End If 
     Next str 
    End If 
End If 

End Sub 

enter image description here

+0

这个作品相当不错!只有我能看到的是,当我点击它们时它不会取消突出显示细胞(所以它会让它们突出显示),但我想我可以弄清楚。谢谢!! – Dave

+0

我想你不希望它在它点击C列中的另一个单元之前将它们取消标记。将'Range(“B:B”)。Interior.Pattern = xlNone'向上移动两行,每当新单元格被选中。请记住在答案上点击复选标记以标记为正确。 –

+0

完美的作品!非常感谢! – Dave

相关问题