Excel:在條件格式方程式中使用儲存格中的文字作為工作表的名稱

Excel:在條件格式方程式中使用儲存格中的文字作為工作表的名稱

標題確實完全表達了我想做的事情,但它有點複雜和神秘,所以我將用一個用例來解釋:

如果我有一個 Excel 工作簿,其中有兩張彼此非常接近的工作表(SheetA 和 SheetB),並且我希望差異能夠在視覺上突出顯示,那麼典型的方法可能是這樣的:

  • 在 SheetA 中,反白顯示所有儲存格
  • 輸入條件格式、新規則、使用公式
  • 在公式框中輸入:

    =a1<>工作表B!a1

  • 應用所需的格式並點擊“確定”

基本上,它的作用是將 SheetA 中的每個單元格與 SheetB 中的對應單元格進行比較,如果它們不相等,則會套用格式設定。如果工作表名稱很複雜(特別是如果它們包含空格,因此需要引號),則在公式輸入期間單擊選項卡名稱會很有幫助。

但現在假設在 SheetA 的某個單元格中,我已輸入包含 SheetB 名稱的文字表達式,並且我想在上面的條件格式公式中引用該儲存格。

(為什麼?我可能有 100 個電子表格,並且希望透過更改儲存格中的文字來比較 1 到 2、然後是 1 到 3、然後是 1 到 55,而不是每次都手動更改條件格式。)

我怎樣才能做到這一點?

我知道 INDIRECT 函數用於將文字轉換為工作表名稱,並嘗試了該主題的多種變體,使用 INDIRECT 函數作為條件格式公式的一部分,但似乎沒有任何效果。

答案1

使用以下條件格式公式:

= A1 <> INDIRECT(ADDRESS(ROW(A1), COLUMN(A1),,, aSheet), TRUE)

替換aSheet為對儲存要比較的工作表名稱的儲存格的參考。

ADDRESS()函數將單元格引用組裝為文字字串,使用ROW()COLUMN()函數計算正在計算的單元格的行和列。

您可以跳過該ADDRESS()函數,只使用字串連接以 R1C1 格式建立單元格引用,但上面的公式可能更容易閱讀和理解。等價的是:

= A1 <> INDIRECT(aSheet & "!R" & ROW(A1) & "C" & COLUMN(A1), FALSE)

相關內容