VBA Liste - wird nur sortiert ausgegeben.

  • Excel

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von blablubb.

    VBA Liste - wird nur sortiert ausgegeben.

    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.

    Visual Basic-Quellcode

    1. Public Sub TabelleVergleichen()
    2. Dim VarDatUmr As Variant
    3. Dim VarDatMar As Variant
    4. Dim VarDatErg As Variant
    5. Dim lngZeile As Long
    6. Dim lngZeileMax As Long
    7. Dim lngZErg As Long
    8. Dim lngSpalteMax As Long
    9. Dim lngZ As Long
    10. Dim lngZMax As Long
    11. Dim i As Long
    12. Debug.Print "Start: " & Now
    13. 'Tabellen in Datenfelder packen
    14. With tblUmrechner
    15. lngZeileMax = .Cells(.Rows.Count, 1).End(xlUp).Row
    16. lngSpalteMax = .Cells(1, .Columns.Count).End(xlToLeft).Column
    17. VarDatUmr = .Range(.Cells(1, 1), .Cells(lngZeileMax, lngSpalteMax + 1))
    18. End With
    19. With tblMarktliste
    20. lngZeileMax = .Cells(.Rows.Count, 1).End(xlUp).Row
    21. lngSpalteMax = .Cells(1, .Columns.Count).End(xlToLeft).Column
    22. VarDatMar = .Range(.Cells(1, 1), .Cells(lngZeileMax, lngSpalteMax + 1))
    23. End With
    24. ReDim VarDatErg(1 To lngZeileMax, 1 To lngSpalteMax + 1)
    25. 'Vergleichen der beiden Datenfelder
    26. lngZErg = 1
    27. lngZMax = UBound(VarDatUmr, 1)
    28. For lngZeile = 1 To lngZeileMax
    29. For lngZ = 1 To lngZMax
    30. If VarDatUmr(lngZ, 1) = VarDatMar(lngZeile, 1) Then
    31. VarDatErg(lngZErg, 1) = VarDatMar(lngZeile, 2)
    32. lngZErg = lngZErg + 1
    33. End If
    34. Next lngZ
    35. Next lngZeile
    36. 'Ausgabe des Ergebnis-Datenfelds
    37. With tblUmrechner
    38. .Cells(1, 8).Resize(UBound(VarDatErg, 1), UBound(VarDatErg, 2)) = VarDatErg
    39. End With
    40. 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“ ()