Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1280to1284
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Funktionen in VBA

Funktionen in VBA
13.10.2012 11:27:38
Gordon
Guten Tag!
Momentan begegnet mir folgendes Problem:
Ich will zwei Werte aus einer Tabelle, mit zwei Werten aus einer anderen Tabelle vergleichen.
Generell, würde es sich ja nur um die Funktion =WENN(UND(Tabelle1!A1=Tabelle1!B1;Tabelle2!A1=Tabelle2!B1);1;0)
In Tabelle 1 stehen etwa 70.000 verschiedene Werte die redundant sind und mit etwa 350 anderen Werten aus Tabelle 2 verglichen werden sollen.
Wie stelle ich das ganze in VBA dar? Besonders in hinsicht auf die gewaltigen Datenmengen und unter dem Aspekt das die die zu vergleichenden Werte aus 4 verschiedenen Spalten kommen?
Vielen Dank für eure Hilfe.
Lg Gordon Gekko

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Funktionen in VBA
13.10.2012 12:02:02
Hajo_Zi
für VBA muss schon klar sein Woher die Werte komme. benutze Find() da die Werte immer untereinander stehen. Brauchst Du nur nach dem ersten Wert suchen.

AW: Funktionen in VBA
13.10.2012 12:16:16
Tino
Hallo,
am schnellsten wird es wohl mit einer Hilfspalte gehen wo diese Formel eingesetzt wird.
Danach die Formeln durch den Wert ersetzen.
Wenn Du das Ergebnis im VBA benötigst und nicht im Excel,
diese Hilfsspalte in eine Array ablegen und die Hilfspalte löschen.
Hier eine verkürzte Variante
https://www.herber.de/bbs/user/82104.xls
Gruß Tino

Anzeige
anders verstanden ...
13.10.2012 13:31:23
Erich
Hi Gordon,
... habe ich deine Aufgabe.
Probier mal

Option Explicit
Sub vglZweiSpalten()
Dim arQA, arQB, arA, arB, arE, zz As Long, valB, vv As Long
arQA = Sheets(2).Cells(1, 1).CurrentRegion.Value2
arQB = Sheets(1).Cells(1, 1).CurrentRegion.Value2
ReDim arA(1 To UBound(arQA))
ReDim arB(1 To UBound(arQB))
ReDim arE(1 To UBound(arQB))
For zz = 2 To UBound(arQA)
arA(zz) = arQA(zz, 1) & "||" & arQA(zz, 2)
Next zz
For zz = 2 To UBound(arQB)
valB = arQB(zz, 1) & "||" & arQB(zz, 2)
For vv = 2 To UBound(arQA)
If valB = arA(vv) Then
arE(zz) = "ja"
Exit For
End If
Next vv
Next zz
arE(1) = "gefunden"
Sheets(1).Cells(1, 4).Resize(zz - 1) = Application.Transpose(arE)
End Sub
Hier ist eine BeiSpielMappe: https://www.herber.de/bbs/user/82105.xls
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
Version 2
13.10.2012 13:35:12
Erich
Hi Gordon,
da war noch überflüssiges Zeug drin (arB) - sorry!

Option Explicit
Sub vglZweiSpalten()
Dim arQA, arQB, arA, arE, zz As Long, valB, vv As Long
arQA = Sheets(2).Cells(1, 1).CurrentRegion.Value2
arQB = Sheets(1).Cells(1, 1).CurrentRegion.Value2
ReDim arA(1 To UBound(arQA))
ReDim arE(1 To UBound(arQB))
For zz = 2 To UBound(arQA)
arA(zz) = arQA(zz, 1) & "||" & arQA(zz, 2)
Next zz
For zz = 2 To UBound(arQB)
valB = arQB(zz, 1) & "||" & arQB(zz, 2)
For vv = 2 To UBound(arQA)
If valB = arA(vv) Then arE(zz) = "ja":  Exit For
Next vv
Next zz
arE(1) = "gefunden"
Sheets(1).Cells(1, 4).Resize(zz - 1) = Application.Transpose(arE)
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: Version 2
13.10.2012 13:50:48
GordonGekko
Vielen Dank an alle die sich die Mühe gemacht haben mir weiterzuhelfen!
Ja Erich, du hast mein Problem gelöst, dein Code funktioniert wunderbar - vielen Dank dafür & noch ein angenehmes Wochenende.
LG Gordon Gekko

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige