簡體   English   中英

Excel:將單元格的條件格式顏色復制到具有相同值的所有單元格

[英]Excel: copy cell' conditional formatting colour to all cells with same value

參考圖像

目標:圖像顯示左側的“鍵”,其中單元格將使用鼠標輸入手動着色。 A(紅色背景) B(綠色背景) C(藍色背景) 在右側,您會看到“數據” ,其中內容匹配單元格應被格式化以匹配它們的鍵(正如我已經為圖像中的表示目的所做的那樣)

初始情況:沒有單元格以任何方式着色或格式化。 Excel 電子表格的 A 列具有某些值,並且列的 rest(從 C 開始)具有相同/不同的值以隨機方式(某些單元格甚至為空)。 並非“關鍵”區域中的所有值都會在“數據”區域中找到,反之亦然。 任何區域都沒有添加新數據。 用戶只會根據自己的意願為“鍵”區域中的某些值着色。

因此,當關鍵區域中的“C”為藍色時,數據區域中的所有“C”單元格都應為藍色。 此外,如果我將 Key 中“C”的格式更改為紫色背景,則所有“C”單元格都應從藍色變為紫色。 另外,如果我向鍵添加更多內容(例如,帶有黃色背景的“D”),那么任何“D”單元格都應該變成黃色; 如果我刪除一個鍵條目,那么數據區域中的匹配值應該恢復為默認樣式。

我對不同的觸發技術持開放態度,例如通過快捷方式手動運行宏等。我懷疑如果有任何可能,它將需要 VBA,但我從未使用過它,所以我不知道從哪里開始案子。 這里找到了與我的問題最接近的答案,但並不完全適合我:

首先,我想使用 Worksheet.Change 事件,將這樣的內容放入工作表中:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim area As Range, c As Range
If Not Intersect(Target, Range("A:A")) Is Nothing And Target.Count = 1 Then
    Set area = Range("B1:F20")
    For Each c In area
        If c.Value = Target.Value Then c.Interior.Color = Target.Interior.Color
    Next c
End If
End Sub

這只是一個非動態的草稿,但它“有點”有效。
問題是顏色的變化不會觸發 change 事件,有趣的是,將字母更改為相同的字母 - 所以根本沒有變化 - 會觸發事件,如下圖所示:

在此處輸入圖像描述

我們可以改用Worksheet_SelectionChange事件,但是直到下次我們選擇要更新的單元格時它才會更新。

我們可以改為強制它在下一次選擇時更新。 這也不是最佳的:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim reference As Range, refCell As Range, area As Range, areaCell As Range
Set reference = Range("A1:A3")      'Reference range
Set area = Range("B1:F20")          'Search range
    For Each refCell In reference   'Loop through the references
        For Each areaCell In area   'Loop through search range for each reference
            If areaCell.Value = refCell.Value Then areaCell.Interior.Color = refCell.Interior.Color
        Next areaCell
    Next refCell
End Sub

在此處輸入圖像描述

顯然,使用按鈕或類似工具來運行相同的代碼也可以,但我不完全確定我們是否可以讓它立即運行。

要手動運行它,請將其作為模塊中的普通 sub 放置。 (雖然它仍然在工作表中工作)。

Sub fillColor()
Dim reference As Range, area As Range, areaCell As Range
Application.ScreenUpdating = False
Set reference = Range("A1")
Set area = Range("B1:E25")
        For Each areaCell In area
            If areaCell.Value = reference.Value Then
                areaCell.Interior.Color = reference.Interior.Color
                areaCell.Interior.Pattern = reference.Interior.Pattern
            End If
        Next areaCell
Application.ScreenUpdating = True
End Sub

不過,您可能想添加一個關於要更新什么的選項,因此它不會全部更新。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM