chimred
Goto Top

Excel - VBA - Tabellen kombinieren

Weiß jemand, wie man folgendes Thema, via VBA oder Excel, löst:

Ich habe mehrere hundert Keys, die verschiedene Werte beinhalten. (Bild 1)

Diese Werte referenzieren auf den Inhalt einer weiteren Tabelle - und behalten n-Datensätze. (Bild 2)

Bild 1
bild 1
Bild 2
bild 2

Um die Daten besser strukturieren zu können, sollen diese Datensätze den Keys zugeordnet werden.
Folgende Tabelle soll daher erstellt werden :D

bild 3

Gibt es eine Möglichkeit, so etwas mit Excel rasch zu machen? Gerne auch via VBA.

Falls möglich wäre eine Schritt für Schritt-Anleitung super.

Vielen Dank im Voraus!

Content-ID: 622982

Url: https://administrator.de/forum/excel-vba-tabellen-kombinieren-622982.html

Ausgedruckt am: 03.04.2025 um 03:04 Uhr

Printe
Lösung Printe 16.11.2020 aktualisiert um 17:33:33 Uhr
Goto Top
Gähn ...
Sub Kombiniere()
    Set ws1 = Sheets(1) ' Sheet 1 (Bild 1)  
    Set ws2 = Sheets(2) ' Sheet 2 (Bild 2)  
    Set ws3 = Sheets(3) ' Sheet 3 (Bild 3)  
    For Each cell In ws1.Range("A2:A" & ws1.Cells(Rows.Count, "A").End(xlUp).Row)  
        With ws2.Range("E:E")  
            Set f = .Find(cell.Offset(0, 1).Value, LookIn:=xlValues, LookAt:=xlWhole)
            If Not f Is Nothing Then
                fStart = f.Address
                Do
                    Set nFree = ws3.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)  
                    f.Resize(1, 3).Copy nFree.Offset(0, 1)
                    nFree.Value = cell.Value
                    Set f = .FindNext(f)
                Loop While Not f Is Nothing And f.Address <> fStart
            End If
        End With
    Next
End Sub
spinnifex
spinnifex 16.11.2020 aktualisiert um 18:05:37 Uhr
Goto Top
und jetzt noch ein Option Explicit oben drüber - und der Mops kot... face-wink Von wegen "gähn" ... Guter Code!
ChimRed
ChimRed 27.11.2020 um 15:32:19 Uhr
Goto Top
Hi,

danke der Code ist wirklich gut und ich hab daraus einiges Lernen können. Danke dafür!

Ich hab den Code jetzt ein wenig umgeschrieben, bin mir aber nicht sicher, ob die Variablendefinition so Sinn macht oder ob man hier durch eine bessere Definition bspw. ggf. Ladezeiten reduzieren kann?

Dim ws1 As Variant 'Variable definiert
Dim ws2 As Variant 'Variable definiert
Dim ws3 As Variant 'Variable definiert
Dim cell As Variant 'Variable definiert
Dim f As Variant 'Variable definiert
Dim fstart As Variant 'Variable definiert
Dim nfree As Variant 'Variable definiert