Vergleich in VBA
#1
Hallo Forumsfreunde,

ich stehe gerade auf der Leitung.
Dieser Code läuft auf der Tabelle2 ohne Probleme:

Sub werte_uebertragen()
 Dim i As Integer
 Dim zeilemax As Integer
 
 
 zeilemax = ActiveSheet.Cells(1048576, 1).End(xlUp).Row
'Dieser Befehl bestimmt die Länge der Einträge in der aktiven Tabelle

    For i = 1 To zeilemax
 
        wert = Range("A" & i).Value

        myVar = Application.WorksheetFunction.Match(wert, Range("A:A"), 0)
   
    MsgBox myVar

    Next i
 End Sub

Jetzt will ich, dass match einen Bereich auf der Tabelle1 überprüft ob der gleiche wert in der Spalte A steht:

Sub werte_uebertragen()
 Dim i As Integer
 Dim zeilemax As Integer
 
 
 zeilemax = ActiveSheet.Cells(1048576, 1).End(xlUp).Row
'Dieser Befehl bestimmt die Länge der Einträge in der aktiven Tabelle

    For i = 1 To zeilemax
 
        wert = Range("A" & i).Value

        myVar = Application.WorksheetFunction.Match(wert, Worksheets("Tabelle1").Range("A:A"), 0)
   
    MsgBox myVar

    Next i
 End Sub

Dabei läuft mir der Code auf einen Fehler:
Die match-Eigenschaften des worksheetFunctionObjekts kann nicht zugeordnet werden.

Wie spreche ich die Tabelle 1, Bereich Spalte A denn nun richtig an?

Vielen Dank für eure Ideen
Es ist nicht genug, zu wissen. Man muss es auch anwenden.
Es ist nicht genug, zu wollen. Man muss es auch tun.
Top
#2
Hallo Heinz,

Zitat:        myVar = Application.WorksheetFunction.Match(wert, Worksheets("Tabelle1").Range("A:A"), 0)

so ganz auf die Schnelle sehe ich, daß Du mit wert eine Range eingibst, die Du in der gleichen Zeile schon wieder veränderst.
Da fragt das Excel meiner Meinung nach, was denn nun gemacht werden soll.

Ich bin dann erst mal weg.de ... Arzttermin
Top
#3
Hallo Käptn,

auf der Tabelle 1 stehen Begriffe, die auch auf der Tabelle 2 stehen.

ich will nun die Begriffe der Reihe nach auf der Tabelle 2 aufnehmen und mit vergleich prüfen lassen, wo sie auf der Tabelle 1 stehen.

Wenn ich die Zeilennummer weis, kann ich ja den Betrag, der neben dem Wert in der Tabelle 2 steht neben den Wert in der Tabelle 1 kopieren.
Es ist nicht genug, zu wissen. Man muss es auch anwenden.
Es ist nicht genug, zu wollen. Man muss es auch tun.
Top
#4
Hi Heinz,

(07.04.2016, 14:22)Heinz Ulm schrieb: Wenn ich die Zeilennummer weis, kann ich ja den Betrag, der neben dem Wert in der Tabelle 2 steht neben den Wert in der Tabelle 1 kopieren.

und warum nicht mit SVERWEIS?
Top
#5
Hi Ralf,

daran hatte ich auch schon gedacht, meine Firma möchte dies aber nicht.

Es sind mehrere Preistabellen, die in eine eingepflegt werden sollen, so nach dem Stil:

Die neue Preistabelle in die Übergabetabelle kopieren und dann das Makro laufen lassen, damit die insgesamt 5000 Artikel von 30 Lieferanten jeweils angepasst werden.

Den optimalen Arbeitsweg müssen wir erst noch besprechen.

Gruß Heinz
Es ist nicht genug, zu wissen. Man muss es auch anwenden.
Es ist nicht genug, zu wollen. Man muss es auch tun.
Top
#6
Hallo Heinz,

Bin am Handy, deswegen nur Kurz:

Statt Worksheetfunction Application.Match( ) nehmen,

Dann die Funktion mit If IsNumeric(Applications.Match()) abfragen 
Je nach Wahr kannst Du dann die auf Abfrage mit Else verzweigen.

Beispiele hattest Du vor langem bei anderer Gelegenheit schon bekommen
Gruß Atilla
[-] Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:
  • Heinz Ulm
Top
#7
Hallo Heinz,

so jetzt kann ich Dir eine Funktionierende Lösung vorstellen:

Code:
Sub werte_uebertragen()
Dim i As Long
Dim zeilemax As Long
Dim myVar As Variant
Dim wert  'selber dimensionieren
zeilemax = ActiveSheet.Cells(1048576, 1).End(xlUp).Row
'Dieser Befehl bestimmt die Länge der Einträge in der aktiven Tabelle

   For i = 1 To zeilemax
       wert = Range("A" & i).Value
       myVar = Application.Match(wert, Worksheets("Tabelle1").Range("A:A"), 0)
   If IsNumeric(myVar) Then
     MsgBox wert & " ist in Zeile " & myVar & " der Tabelle1 vorhanden)"
   Else
     MsgBox wert & " ist in Tabelle1 nicht vorhanden"
   End If

   Next i
End Sub
Schau Dir die Variablen an.
Gruß Atilla
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste