2017-07-27 239 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

相關問題