2015-07-21 136 views
0

如何實現宏或條件格式設置規則,以便根據列中的值對兩張單獨的圖紙進行比較?如何根據VBA中的某些列值突出顯示不匹配的值

基本上,我需要做的是在每張表格中搜索匹配的值(例如,單元格A10將是「項目10」,而在另一張表格上它可能是單元格A6作爲「項目10」)。

然後,它會查看一個單獨的列,並與日期相匹配(即,單元格A10將具有日期「11/12/15」,單元格A6在另一個表格上將具有「11/11/15「)突出顯示單元格,如果它不同於第一張表格上的日期。

這裏棘手的事情是項目在每張紙上的順序不同(如上所述)。我嘗試了幾個代碼建議,但還沒有到任何地方。

+0

什麼版本的Excel?您需要2010或更高版本才能在CF規則中的其他工作表上引用值(或者使用命名區域進行變通)。將樣本數據與預期結果結合起來可以很好地解決問題。 – Jeeped

回答

0

讓我們使用條件格式解決。

正如您可能知道的那樣,條件格式化的工作原理是設置一個規則來管理您應用的單元格。如果該規則生成TRUE,則應用規則(比較顏色等)。因此,這裏的目標是制定一個公式,當滿足所有條件時,結果爲TRUE。我們在這裏關心兩個條件。首先,sheet1的A列中的項目是否存在於sheet2的A列?

=not(iserror(match($A1,sheet2!$A:$A,0))) 

首先,它使用MATCH函數來檢查,如果A1(與列絕對引用,這樣,當你將規則應用於列A & B檢查不會在B列,看看所有)存在在sheet2 columnA上。如果它確實存在,它會將其出現的行號吐出。如果它不存在,它會產生一個錯誤。所以這是包裹在ISERROR中,它說「如果這個參數返回一個錯誤,吐出TRUE」。但是,當沒有錯誤時,我們希望它返回TRUE。所以,我們用NOT來包裝它,它將TRUE變爲FALSE,反之亦然。

現在你真正關心的是,如果A1存在於sheet2中,那麼sheet2上的列B中的那一行是否與sheet1上的B1中的值相匹配?

因此,我們通過使用指數函數,像這樣發現在塔B,其中有A列中的匹配值:

=Index(sheet2!$B:$B,match($A1,sheet2!$A:$A,0)) 

這給出了從塔B中片2。所以該值,請檢查:該值是否等於B1,sheet1中的值? [我們實際檢查該值是否與B1不同,因此我們使用「<>」而不是「=」。

=Index(sheet2!$B:$B,match($A1,sheet2!$A:$A,0))<>$B1 

現在我們只需要用「」替換錯誤(如果匹配返回不匹配)。

=Iferror(Index(sheet2!$B:$B,match($A1,sheet2!$A:$A,0)),"")<>$B1 

就是這樣。如果在sheet2 columnA [使用MATCH函數]中存在匹配項,它會爲列B [使用INDEX]函數提供日期。如果不匹配,則返回「」[使用IFERROR功能]。然後,如果該值不等於B1,那麼結果爲TRUE,這會觸發條件格式。

相關問題