Hi Leute,
ich habe ein Problem in VBA und ich hoffe ihr könnt mir helfen.
Ich mochte Zwei Listen miteinander vergleichen. Auf dem ersten Arbeitsblatt kommen die Nummern die umgerechnet werden sollen.
In dem zweiten Arbeitsblatt stehen alle Nummern in zwei Spalten (jede Nr. kommt nur 1 mal vor und hat eine einmalige zweite Nr.).
Ich habe es bereits geschafft das die Listen miteinander zu vergleichen jedoch wird die Liste sortiert ausgegeben und nicht in der Reihenfolge wie es auf ersten Liste eingeben worden ist.
Anbei mal der Code.
Im ersten Arbeitsblatt wird z.B. eingeben.
1
1
2
3
4
4
2
1
In den 2. Arbeitsblatt steht die einmalige Beziehung zu einander
1 11
2 12
3 13
4 14 usw.. (ist nur ein Beispiel die Nr. können nicht mit +10 addiert werden)
Wunsch Ausgabe wäre also.
1 11
1 11
2 12
3 13
4 14
4 14
2 12
1 11
CodeTags gesetzt und Thema verschoben; Das Thema wird automatisch dort erstellt, wo man sich befindet, wenn man auf [* Neues Thema] klickt. ~VaporiZed
Post wiederhergestellt, da vom User inhaltlich geleert ~VaporiZed
ich habe ein Problem in VBA und ich hoffe ihr könnt mir helfen.
Ich mochte Zwei Listen miteinander vergleichen. Auf dem ersten Arbeitsblatt kommen die Nummern die umgerechnet werden sollen.
In dem zweiten Arbeitsblatt stehen alle Nummern in zwei Spalten (jede Nr. kommt nur 1 mal vor und hat eine einmalige zweite Nr.).
Ich habe es bereits geschafft das die Listen miteinander zu vergleichen jedoch wird die Liste sortiert ausgegeben und nicht in der Reihenfolge wie es auf ersten Liste eingeben worden ist.
Anbei mal der Code.
Visual Basic-Quellcode
- Public Sub TabelleVergleichen()
- Dim VarDatUmr As Variant
- Dim VarDatMar As Variant
- Dim VarDatErg As Variant
- Dim lngZeile As Long
- Dim lngZeileMax As Long
- Dim lngZErg As Long
- Dim lngSpalteMax As Long
- Dim lngZ As Long
- Dim lngZMax As Long
- Dim i As Long
- Debug.Print "Start: " & Now
- 'Tabellen in Datenfelder packen
- With tblUmrechner
- lngZeileMax = .Cells(.Rows.Count, 1).End(xlUp).Row
- lngSpalteMax = .Cells(1, .Columns.Count).End(xlToLeft).Column
- VarDatUmr = .Range(.Cells(1, 1), .Cells(lngZeileMax, lngSpalteMax + 1))
- End With
- With tblMarktliste
- lngZeileMax = .Cells(.Rows.Count, 1).End(xlUp).Row
- lngSpalteMax = .Cells(1, .Columns.Count).End(xlToLeft).Column
- VarDatMar = .Range(.Cells(1, 1), .Cells(lngZeileMax, lngSpalteMax + 1))
- End With
- ReDim VarDatErg(1 To lngZeileMax, 1 To lngSpalteMax + 1)
- 'Vergleichen der beiden Datenfelder
- lngZErg = 1
- lngZMax = UBound(VarDatUmr, 1)
- For lngZeile = 1 To lngZeileMax
- For lngZ = 1 To lngZMax
- If VarDatUmr(lngZ, 1) = VarDatMar(lngZeile, 1) Then
- VarDatErg(lngZErg, 1) = VarDatMar(lngZeile, 2)
- lngZErg = lngZErg + 1
- End If
- Next lngZ
- Next lngZeile
- 'Ausgabe des Ergebnis-Datenfelds
- With tblUmrechner
- .Cells(1, 8).Resize(UBound(VarDatErg, 1), UBound(VarDatErg, 2)) = VarDatErg
- End With
- End Sub
Im ersten Arbeitsblatt wird z.B. eingeben.
1
1
2
3
4
4
2
1
In den 2. Arbeitsblatt steht die einmalige Beziehung zu einander
1 11
2 12
3 13
4 14 usw.. (ist nur ein Beispiel die Nr. können nicht mit +10 addiert werden)
Wunsch Ausgabe wäre also.
1 11
1 11
2 12
3 13
4 14
4 14
2 12
1 11
CodeTags gesetzt und Thema verschoben; Das Thema wird automatisch dort erstellt, wo man sich befindet, wenn man auf [* Neues Thema] klickt. ~VaporiZed
Post wiederhergestellt, da vom User inhaltlich geleert ~VaporiZed
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „VaporiZed“ ()