【Excel】找出跟指定座標吻合的儲存格並上色(公式版和VBA版)

繁縷
Mar 10, 2022

--

如果你希望為某些儲存格填上顏色,除了逐一手動填色這一方法,如何透過公式和Excel的功能達到效果呢?

這次的課題是,如何在工作表1輸入儲存格位置後,在工作表2的相應儲存格上反映出來?

方法很簡單,只需要在工作表2使用格式化的條件就可以了。

  1. 在工作表2全選(可以按Ctrl + A全選,或者按A和1之間的位置全選等等)
  2. 在常用>設定格式化的條件>新增規則

3. 選擇「使用公式來決定要格式化哪些儲存格」

4. 公式的部分輸入︰

=COUNTIF(工作表1!$1:$1048576,ADDRESS(ROW(),COLUMN(),4))>0

格式則按個人喜好選取背景顏色等等就可以了

5. 之後在工作表1裡任何位置填寫儲存格位址,工作表2便會在相應地方著色。

公式說明︰

目標是為了在工作表2中找出該儲存格的位址是否在工作表1被提到,
如果有出現過,為True,則依格式設定反映(=著色),
所以使用countif來判斷,如果該位址有出現在工作表1,便會大於0。

而儲存格的位置便利用row()和column()來判斷,便會隨位置不同而自動改變。Address是把列和行的數值換成儲存格位址的文字,而4是以相對參照的形式輸出,而預設下會以A1樣式呈現。

VBA版︰

如果不是追求即時取得,或者因為某些因素而選擇用VBA顯示的話,可以參考這個寫法︰

Sub colorcell()

Sheets(“工作表2”).Cells.ClearFormats

For Each cell In Range(“A1”, “G7”)

If cell <> vbNullString Then
Sheets(“工作表2”).Range(cell).Interior.Color = RGB(255, 0, 255)
End If

Next

End Sub

這個做法比較暴力,先把所有格式清除(Cells.clearformats)
再用for each cell來指定範圍裡每個儲存格,如果那個儲存格不是空白(vbnullstring),那就把儲存格內的文字當成位址,為它著色

以上。

--

--

繁縷

Excel分享已遷移到Buy me a coffee (ExcelOD)。努力發掘其他興趣中。