簡體   English   中英

基於多列的條件格式

[英]Conditional Formatting Based On Multiple Columns

表 1

[第 1 頁

表 2 [在此處輸入圖片說明

在工作表 1 上,我有四列 Col A= 1st Adjustment,Col B= 1st Check,Col C= 2nd Adjustment,Col D= 2nd Check。

這些列中的值要么是 0,要么是非 0。總是一個數字。 對於兩個調整列,我將它們格式化為紅色(如果它們非零),對於兩個檢查列,我將它們格式化為黃色(如果它們非零)。

在工作表 2 上有一列可以提取和組合調整和檢查集,並將它們分配給正確的員工 ID #。

不知何故,如果數字來自另一頁的調整列,我需要第 2 頁中列的格式為紅色,如果數字來自另一頁的檢查列,則為黃色。 如果等於 0,則沒有顏色。

做這個的最好方式是什么? 我一直無法找到解決方案。

我有的條件格式規則都適用於C列表2。它們是:

#1- 單元格值等於 = 0(無填充)

#2 單元格值等於 =Sheet1!$E1(黃色填充)

#3 單元格值等於 =Sheet1!$C1(黃色填充)

#4 單元格值等於 =Sheet1!$D1(紅色填充)

#5 單元格值等於 =Sheet1!$B1(紅色填充)

讓我根據公式為您提供條件格式的一般方法:

首先,您嘗試設置您在某個單元格中輸入的公式。 如果您希望應用格式,則公式的結果應為TRUE ,在所有其他情況下為FALSE

請再次編輯您的問題,顯示您嘗試配置此問題的公式。

哦,您只想復制第一張紙的格式。 但是告訴我,第一張紙的格式是如何確定的? 它也是條件格式的結果嗎? 關於ADJ/Check列的數字,這只是第一張表中值的總和嗎?

假設兩個列表都從 A1 開始,將此公式放在 Sheet2 的單元格 D2 中:

=IF(C2=0,0,IF(C2=INDEX(Sheet1!$B$2:$E$7,B2,(A2-1)*2+1),1,2))

然后選擇范圍 C2:C13 並打開條件格式菜單。 根據公式添加 3 個新規則。 第一個公式是:

=D2=1

並將格式設置為紅色填充。 第二個公式是:

=D2=2

並將格式設置為黃色填充。 第三個公式是:

=D2=0

並將格式設置為未填充(這與未選擇格式不同)。 如果沒有人要手動更改范圍的格式,則最后一條規則不是絕對必要的。 仍然...

請注意,條件格式的每個公式都沒有寫入任何會鎖定引用的 $。 因此,$C$2:$C$13 范圍內的每個單元格都會將該公式轉換為相對於其自身的位置。 單元格 C2 將“查看”單元格 D2,單元格 C3 將查看單元格 D3,C4 將查看單元格 D4,依此類推。 您當然可以隱藏 D 列,條件格式仍然有效。

您也可以在不使用額外列的情況下制作它。 只需相應地編輯用於單元格 D2 的公式並在您的規則中使用它。 這樣的事情應該工作:

=IF(C2=0,0,IF(C2=INDEX(Sheet1!$B$2:$E$7,B2,(A2-1)*2+1),1,2))=1
=IF(C2=0,0,IF(C2=INDEX(Sheet1!$B$2:$E$7,B2,(A2-1)*2+1),1,2))=2
=IF(C2=0,0,IF(C2=INDEX(Sheet1!$B$2:$E$7,B2,(A2-1)*2+1),1,2))=0

公式詳細信息(如評論中所問)

B2 用於行。 在 INDEX 函數的上下文中,它表示 INDEX 函數必須“查看”范圍的哪一行(我們在這里看到的公式中的$B$2:$E$7 )。 如果 B2 是 1,它將考慮范圍的第一行(在我們的例子中是第 2 行)。 如果是 2,它會考慮第二行(在我們的例子中是第 3 行)。

(A2-1)*2+1代表列。 在 INDEX 函數的上下文中,它表示 INDEX 函數必須在范圍的哪一列(我們在這里看到的公式中的$B$2:$E$7 )。 如果結果為 1,它將考慮范圍的第一列(在我們的例子中是 B 列)。 如果是 2,它會考慮第二列(在我們的例子中是 C 列)。

關於(A2-1)*2+1 :讓我們稍微改變一下,以便在我解釋時更容易形象化:

1+(A2-1)*2

我們可以將公式分為兩部分:作為起點的1 (第一列)和(A2-1)*2+1處理根據周數變化的列數變化。 在單元格 A2 中,我們找到星期幾。 在第一張表中,我們每周有 2 列。 因此,當周移動 1 時,我們的目標列將不得不移動 2。我們不能只是將周表乘以 2,因為 2 是從第一周開始的移動,而不是實際值。 在第一周,我們將沒有輪班。 因此,我們的班次必須為 0; 但我們不能只使用 0,因為范圍中沒有“零列”。 因此,我們需要將初始值 1 與移位相加。 這樣,第一周我們將有:

1+(1-1)*2

1+(0)*2

1+0

1

$B$2:$E$7 范圍的第一列(即 B 列)。 第二周我們將有:

1+(2-1)*2

1+(1)*2

1+2

3

$B$2:$E$7 范圍的第三列(即 D 列)。

整個公式IF(C2=INDEX(Sheet1!$B$2:$E$7,B2,(A2-1)*2+1),1,2)基本上檢查 C2 中的值是否與第一個相同給定周的列。 如果它是相同的值,則返回 1,否則返回 2(基本上假設該值將等於給定周的第二列中的值)。

報告您遇到的任何問題或錯誤。 如果根據您的判斷,此答案(或任何其他答案)是您問題的最佳解決方案,則您有權接受它(鏈接)。

暫無
暫無

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

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