Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1180to1184
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

zwei Spalten vergleichen und ggf. kopieren

zwei Spalten vergleichen und ggf. kopieren
Maxel
Hallo zusammen,
ich habe folgendes Problem, welches mich schon einiges an Zeit gekostet hat. Mir liegt eine sehr große Tabelle vor mit knapp 120.000 Einträgen. Datensatz 1 liegt in den Spalten A-Z, Datensatz 2 befindet sich in den Spalten AA-AW.
Verbunden sind diese "Datensätze" über jeweils einen Produktschlüssel, der sich in der Spalte A und AA befindet. Für den Fall, dass die Produktschlüssel übereinstimmen, möchte ich 5 Spalten vom Datensatz 2 in den Datensatz 1 kopieren.
Da meine VBA-Kenntnisse noch sehr bescheiden sind, habe ich nur folgenden Code hinbekommen, der _
einfach zu lange braucht um das Problem zu lösen.

Sub Combine_Produktschlüssel_()
Application.ScreenUpdating = False
For i = 2 To 120000
For j = 2 To 109200
If Cells(i, 1) = Cells(j, 27) Then
Cells(i, 8) = Cells(j, 29)
Cells(i, 9) = Cells(j, 30)
Cells(i, 10) = Cells(j, 32)
Cells(i, 11) = Cells(j, 35)
Cells(i, 12) = Cells(j, 37)
End If
Next j
Next i
Application.ScreenUpdating = True
End Sub

Wenn jemand einen Tipp hätte, wie ich das schneller hinbekommen könnte, wäre ich sehr dankbar.
Grüße Maxel

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: zwei Spalten vergleichen und ggf. kopieren
12.10.2010 11:25:37
Rudi
Hallo,
im Array dürfte das schneller gehen.
Sub Combine_Produktschlüssel_()
Dim i As Long, j As Long, vntArr1, vntArr2
Application.ScreenUpdating = False
vntArr1 = Range("A2:Z120000")
vntArr2 = Range("AA2: AW120000")
For i = 1 To UBound(vntArr1)
For j = 1 To UBound(vntArr2)
If vntArr1(i, 1) = vntArr2(j, 1) Then
vntArr1(i, 8) = vntArr2(j, 3)
vntArr1(i, 9) = vntArr2(j, 4)
vntArr1(i, 10) = vntArr2(j, 6)
vntArr1(i, 11) = vntArr2(j, 9)
vntArr1(i, 12) = vntArr2(j, 11)
End If
Next j
Next i
Range("A2:Z120000") = vntArr1
Application.ScreenUpdating = True
End Sub

Gruß
Rudi
Anzeige
AW: zwei Spalten vergleichen und ggf. kopieren
12.10.2010 11:57:40
Maxel
vielen Dank Rudi,
im Array braucht das ganze nun nur noch 20% der Zeit :)
AW: zwei Spalten vergleichen und ggf. kopieren
12.10.2010 12:23:23
Rudi
Hallo,
da der Schlüssel ja einmalig sein sollte, ohne 2. Schleife:
Sub Combine_Produktschlüssel_()
Dim i As Long, j, vntArr1, vntArr2
Application.ScreenUpdating = False
vntArr1 = Range("A2:Z120000")
vntArr2 = Range("AA2: AW120000")
For i = 1 To UBound(vntArr1)
j = Application.Match(vntArr1(i, 1), Columns(27), 0)
If Not IsError(j) Then
vntArr1(i, 8) = vntArr2(j - 1, 3)
vntArr1(i, 9) = vntArr2(j - 1, 4)
vntArr1(i, 10) = vntArr2(j - 1, 6)
vntArr1(i, 11) = vntArr2(j - 1, 9)
vntArr1(i, 12) = vntArr2(j - 1, 11)
End If
Next j
Next i
Range("A2:Z120000") = vntArr1
Application.ScreenUpdating = True
End Sub

Gruß
Rudi
Anzeige

312 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige