2016-08-03 12 views
2

Ich brauche Hilfe hier mit Excel VBA.Excel vergleicht mehrere Zellen mit VBA

Ich möchte wissen, wie man mehrere Zellen in der gleichen Zeile, aber in verschiedenen Spalten vergleicht.

Ich muss etwas wie bestimmte Zellen E3, G3, I3 vergleichen und herausfinden, ob es sich um Duplikate handelt, und das Duplikat von dem, was zuerst eingefügt wurde, entfernen.

Hinweis: Zum Eingeben der Daten wird eine Drag & Drop-Funktion verwendet.

Image of Spreadsheet

Ich habe versucht, so etwas wie dieses

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 

Aber ich brauche vergleichen noch mehr Zeilen und Spalten verwenden.

Antwort

3

Erste Dinge zuerst.

Dim R1, R2, R3 As Range 

Sie können dies in VB.Net tun und alle drei werden als Range deklariert werden, aber in VBA, man muss sie explizit als Range erklären sonst die ersten beiden als Variant

Dim R1 As Range, R2 As Range, R3 As Range 
erklärt werden

Um mehrere Zeilen und Spalten zu vergleichen, können Sie eine Schleife verwenden. Zum Beispiel

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 

auch statt Drag & Tropfen, würde ich empfehlen eine Data Validation Liste mit, so dass Sie nicht .Undo verwenden müssen. Sie können den Inhalt der Zelle einfach löschen.

+0

Ich habe es ausprobiert und es hat funktioniert, wenn es nicht Drag & Drop ist, aber der Client möchte, dass das Arbeitsblatt ein Drag & Drop-Typ ist. – user6670582

0

Keine Notwendigkeit für VBA hier. Legen Sie eine benutzerdefinierte Datengültigkeitsregel für Zelle E3 mit der folgenden Formel:

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

Dann die Zelle G3 und I3 kopieren, und kopieren Sie Zeile 3 nach unten so weit wie Sie benötigen. Sie können dann eine benutzerdefinierte Fehlermeldung mithilfe des Datenüberprüfungsassistenten festlegen.

Die obige Formel setzt voraus, dass Sie nur Werte über die gleiche Zeile überprüfen müssen (wie Sie angeben).

Verwandte Themen