2015-04-17 34 views
-1

各種值我必須創建宏,其將:搜索並比較使用VBA

  1. 從小區A1獲取值搜索中列此值C.
  2. 如果在單元中的值A1存在於列C,宏需要將單元格B1中的值與列D中的值進行比較。
  3. 如果單元格A1中的值存在於列C中並且單元格B1中的值存在於列D中,則會查找「找到值「應該出現在單元格E1中。

上述需要發生的所有非空行A列中

我試着用下面的公式:

=IF(ISERROR(MATCH(A2,$C$2:$C$138,0)),"Load number not found","Load number found") 

但它不工作,因爲我想要的。我限制訪問互聯網,所以我無法檢查所有網站。你能幫我嗎?非常感謝。

回答

1

要檢查是否A1是在C列如果B1是在列d(在同一行A1在C列發現),那麼你需要做到以下幾點:

=IF(ISERROR(MATCH(A1,$C:$C,0)),"Load number not found",IF(B1=INDEX($D:$D,MATCH(A1,$C:$C,0),1),"Load number found","Load number not found")) 

第一IF檢查A1是在C列中,第二IF檢查是否B1是在列d(同一行A1在列C發現)

它將返回「裝載數目發現」​​僅當這兩個條件都是真的。否則,它將返回「未找到負載號碼」。

你可以寫一個宏來做同樣的事情。但更簡單的方法是僅鎖定列E中的單元格並保護表單,以便用戶不會意外更改公式中的任何公式。


更新:

由於C列可以有重複,需要使用以下數組公式:

=IF(ISERROR(MATCH(1,(A1=$C:$C)*(B1=$D:$D),0)),"Load number not found","Load number found") 

當您粘貼此公式E1,確保按CTRL + Shift + 輸入而不是隻按輸入 ke年。

+0

好,所以如果兩個條件都是真的,那麼從邏輯的角度來看,IF是TRUE。但讓我解釋一下。例如:在A列中,我有列B中的姓名,我有電話號碼。我想確定列A和列B的值是否與列C和列D的值匹配。我可以在C列中找到Samntha,但這並不意味着在列D上找到的Samantha的電話將在列中反駁到Samantha C.在你的解釋中,這兩個條件都是真的,因爲這兩個值都可以在某處找到(例如,Samantha可以在C1460行找到,而她的手機在D13) – LukeJ

+0

確定它在文件開頭的許多行中工作,但是稍後停止。 – LukeJ

+0

我已經更新了答案中的代碼。正在處理你的配方。那只有列選擇了138行。我已經包括整個列現在 – slayernoah

0

如果我明白了,帶公式的常規解決方案是連接C和D列數據,然後搜索它。如果你插入一個新columnC有:

複製下來,以適應您可以應用(但在ColumnF而非ColumnE說)你現有的公式,只有輕微的修改:

=IF(ISERROR(MATCH(A1&B1,$C$2:$C$138,0)),"Load number not found","Load number found") 

受到相當什麼在哪一行。

+1

謝謝。這是一種想法。但是我需要一些防止不熟悉Excel的人做出錯誤的事情。這就是爲什麼我需要宏觀。我們有很多這樣的文件,有上千行。 – LukeJ