2016-08-03 141 views
2

我需要Excel VBA幫助。Excel將多個單元格與vba進行比較

我想知道如何比較同一行,但不同列中的多個單元格。

我需要比較特定單元格E3,G3,I3之類的東西,並確定是否有任何重複項,並刪除先前放置的重複項。

注意:拖放功能用於填寫數據。

Image of Spreadsheet

我試圖用這樣的

Dim R1, R2, R3 As Range 
Set R1 = Range("E3") 
Set R2 = Range("G3") 
Set R3 = Range("I3") 

If (R1 = R2 Or R1 = R3) Then 
MsgBox "Room Already Used!" 
      With Application 
       .EnableEvents = False 
       .Undo 
       .EnableEvents = True 
      End With 
End If 

但我需要更多的行和列進行比較。

回答

3

第一件事第一件事。

Dim R1, R2, R3 As Range 

您可以在VB.Net這樣做,所有三個將被宣佈爲Range但在VBA中,你必須明確地聲明爲Range否則前兩個將被宣佈爲Variant

Dim R1 As Range, R2 As Range, R3 As Range 

要比較多行和多列,可以使用循環。例如

With Sheet1 '<~~ Change this to the relevant sheet 
    For i = 3 To 8 '<~~ You actual row numbers 
     If .Range("E" & i).Value = .Range("G" & i).Value Or _ 
      .Range("E" & i).Value = .Range("I" & i).Value Then 
      '~~> do something 
     End If 
    Next i 
End With 

而且不是將&對於降,我會建議使用數據驗證列表,這樣你就不必使用.Undo。您可以簡單地清除單元格的內容。

+0

我試了一下,它發現,如果它不是拖放,但客戶希望工作表是一個拖放類型。 – user6670582

0

這裏不需要VBA。設置E3單元格的自定義數據驗證規則用下面的公式:

=OR(ISBLANK(E3),COUNTIF($E3:$I3,E3)=1) 

然後將細胞複製到G3和I3,以及複製排3倒至於你所需要的。然後,您可以使用「數據驗證」嚮導設置自定義錯誤消息。

上面的公式假定您只需要檢查同一行中的值(如您所述)。

相關問題