Hallo Comunnity! Ich würde gerne Datensätze mittels VBA zusammenfügen. Ich habe bereits in meine Buch dazu die Funktion "Join" herausfinden können. Leider weiß ich nun nicht, wie ich die Schleife gestalten soll.
Ziel ist es, in der jeweiligen ersten Zeile in F, von jeder Gruppe (aus Spalte E), jeweils alle Werte, getrennt mit einem ";", aufzulisten. Entsprechend alle anderen Werte dadrunter zu löschen.
[url= Dateiupload bitte im Forum! So geht es: Klick mich! ]
Tut mir leid, dass ich das vergessen habe zu erwähne. In allen anderen Zeilen/ Zellen (inklusive A1) sind auch Werte enthalten, die jedoch nicht relevant sind.
Ich scheitere leider noch daran, den code nachzuvollziehen :/ Ich bin zwar mit F8 Schritt für Schritt den Code durchgegangen, scheitere jedoch an der Adaption.
Code:
Sub JoinDataSets()
Dim i As Long, j As Long Dim lngZ As Long Dim arr As Variant Dim varK Dim D1 As Object
Set D1 = CreateObject("Scripting.Dictionary")
Application.ScreenUpdating = False
With Worksheets("Tabelle1")
lngZ = .Cells(.Rows.Count, 1).End(xlUp).Row arr = .Range("D2:E" & lngZ) For i = 1 To UBound(arr) D1(arr(i, 1)) = D1(arr(i, 1)) & "," & arr(i, 2) Next i
29.03.2017, 13:40 (Dieser Beitrag wurde zuletzt bearbeitet: 29.03.2017, 13:40 von atilla.)
Hallo Joshua,
dann teste mal:
Code:
Sub mach_wieder() Dim i As Long, j As Long Dim lngZ As Long
Dim arr As Variant Dim varK Dim D1 As Object Set D1 = CreateObject("Scripting.Dictionary")
Application.ScreenUpdating = False
With Worksheets("Tabelle1") lngZ = .Cells(.Rows.Count, 5).End(xlUp).Row arr = .Range("E2:F" & lngZ) For i = 1 To UBound(arr) D1(arr(i, 1)) = D1(arr(i, 1)) & "," & arr(i, 2) Next i Range("H2").CurrentRegion.Offset(1, 0).Resize(, Range("D2").CurrentRegion.Columns.Count).ClearContents For Each varK In D1.Keys .Cells(j + 1, 8) = varK .Cells(j + 1, 9) = Mid(D1(varK), 2) j = j + 1 Next End With
End Sub
Ich schreibe die zusammengefügten Teile in Spalte I, und die muss als TEXT formatiert sein.
De Tabelle hat einen Umfang von A1:S400 (mit Überschriften) Ich habe versucht die Tabelle zu adaptieren, scheitere jedoch kläglich.
Anbei nochmal eine Mustertabelle, welche die Struktur besser wiedergibt.
Code:
Sub JoinDataSets()
Dim i As Long, j As Long Dim lngZ As Long Dim arr As Variant Dim varK Dim D1 As Object Set D1 = CreateObject("Scripting.Dictionary")
Application.ScreenUpdating = False
With Worksheets("tblOne") lngZ = .Cells(.Rows.Count, 5).End(xlUp).Row arr = .Range("E2:F" & lngZ) For i = 2 To UBound(arr) D1(arr(i, 1)) = D1(arr(i, 1)) & "," & arr(i, 2) Next i Range("T2").CurrentRegion.Offset(1, 0).Resize(, Range("D2").CurrentRegion.Columns.Count).ClearContents For Each varK In D1.Keys .Cells(j + 1, 21) = varK .Cells(j + 1, 22) = Mid(D1(varK), 2) j = j + 1 Next End With
End Sub
Vielleicht habe ich mal wieder das Problem zu wage beschrieben. Hier ist nochmal ein Bild, welches Ziel relativ gut erkennen lässt. [url= Dateiupload bitte im Forum! So geht es: Klick mich! ] Für jede Auswirkung in Spalte E möchte ich gerne alle Folgen in Spalte F, jeweils in der obersten Zeile, summiert haben. Die anderen entsprechend leeren.