Microsoft Excel

Herbers Excel/VBA-Archiv

Daten aus gleichen Werten zusammenführen

Betrifft: Daten aus gleichen Werten zusammenführen von: Tobaren
Geschrieben am: 12.10.2020 13:16:16

Hallo Miteinander,

ich habe folgendes Problem:

Ich muss mehrere verschiedene Spalten, die jedoch zum gleichen Namen gehören, in eine Zeile zusammenfassen. Ich stehe dabei komplett auf den Schlauch und weiß nicht, wie ich das anfangen soll.

Ich würde es ja händisch machen, es handelt sich aber um insgesamt 7500 Zeilen mit 1400 verschiedenen Namen, so dass es ein wenig anstrengend werden würde!

Hier die Datei, wie die Ausgangslage ist:
https://www.herber.de/bbs/user/140821.xlsx

Gibt's Ideen, wie ich das Ganze bewerkstelligen kann??

MfG

Betrifft: AW: Daten aus gleichen Werten zusammenführen
von: Günther
Geschrieben am: 12.10.2020 14:07:31

Moin,
das geht sehr schön über Daten | Abrufen und transformieren aka Power Query. => https://my.hidrive.com/lnk/1UgGjTmM
 
Gruß
Günther  |  mein Excel-Blog

-.-.-.-

Da ich mich nicht mehr über den "eigenwilligen" Hindernislauf beim Foren-Upload ärgern will, stelle ich meine Uploads hier nur noch in meiner DE-Cloud zur Verfügung. Den Link findest du im Beitrags-Text. Abrufe sind natürlich freiwillig und werden selbstredend nicht ausgewertet.



Betrifft: AW: Daten aus gleichen Werten zusammenführen
von: Tobaren
Geschrieben am: 12.10.2020 15:06:03

Super, vielen Dank!!!! Ich denke, mit dem PowerQuery bekomme ich das hin :-)

Muss mich da zwar kurz reinfuchsen, aber damit komme ich defintiv zum Ergebnis.

Vielen Vielen Dank euch beiden!

Betrifft: AW: Daten aus gleichen Werten zusammenführen
von: Nepumuk
Geschrieben am: 12.10.2020 14:10:35

Hallo Tobias,

per VBA so:

Option Explicit

Public Sub Summe()
    Dim avntValues As Variant, avntSumm() As Variant
    Dim ialngIndex As Variant, ialngRow As Long, ialngTemp As Long
    Dim objDicitionary As Object
    Set objDicitionary = CreateObject(Class:="Scripting.Dictionary")
    With Worksheets("Tabelle1")
        avntValues = .Range(.Cells(2, 1), .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row, 7)).Value
    End With
    With objDicitionary
        For ialngRow = LBound(avntValues, 1) To UBound(avntValues, 1)
            If Not .Exists(Key:=avntValues(ialngRow, 1)) Then
                Call .Add(Key:=avntValues(ialngRow, 1), Item:=ialngIndex)
                Redim Preserve avntSumm(6, ialngIndex)
                avntSumm(0, ialngIndex) = IIf(IsEmpty(avntValues(ialngRow, 1)), Empty, avntValues(ialngRow, 1))
                avntSumm(1, ialngIndex) = IIf(IsEmpty(avntValues(ialngRow, 2)), Empty, avntValues(ialngRow, 2))
                avntSumm(2, ialngIndex) = IIf(IsEmpty(avntValues(ialngRow, 3)), Empty, avntValues(ialngRow, 3))
                avntSumm(3, ialngIndex) = IIf(IsEmpty(avntValues(ialngRow, 4)), Empty, avntValues(ialngRow, 4))
                avntSumm(4, ialngIndex) = IIf(IsEmpty(avntValues(ialngRow, 5)), Empty, avntValues(ialngRow, 5))
                avntSumm(5, ialngIndex) = IIf(IsEmpty(avntValues(ialngRow, 6)), Empty, avntValues(ialngRow, 6))
                avntSumm(6, ialngIndex) = IIf(IsEmpty(avntValues(ialngRow, 7)), Empty, avntValues(ialngRow, 7))
                ialngIndex = ialngIndex + 1
            Else
                ialngTemp = .Item(Key:=avntValues(ialngRow, 1))
                avntSumm(1, ialngTemp) = IIf(Not IsEmpty(avntValues(ialngRow, 2)), _
                    avntSumm(1, ialngTemp) + avntValues(ialngRow, 2), avntSumm(1, ialngTemp))
                avntSumm(2, ialngTemp) = IIf(Not IsEmpty(avntValues(ialngRow, 3)), _
                    avntSumm(2, ialngTemp) + avntValues(ialngRow, 3), avntSumm(2, ialngTemp))
                avntSumm(3, ialngTemp) = IIf(Not IsEmpty(avntValues(ialngRow, 4)), _
                    avntSumm(3, ialngTemp) + avntValues(ialngRow, 4), avntSumm(3, ialngTemp))
                avntSumm(4, ialngTemp) = IIf(Not IsEmpty(avntValues(ialngRow, 5)), _
                    avntSumm(4, ialngTemp) + avntValues(ialngRow, 5), avntSumm(4, ialngTemp))
                avntSumm(5, ialngTemp) = IIf(Not IsEmpty(avntValues(ialngRow, 6)), _
                    avntSumm(5, ialngTemp) + avntValues(ialngRow, 6), avntSumm(5, ialngTemp))
                avntSumm(6, ialngTemp) = IIf(Not IsEmpty(avntValues(ialngRow, 7)), _
                    avntSumm(6, ialngTemp) + avntValues(ialngRow, 7), avntSumm(6, ialngTemp))
            End If
        Next
    End With
    Set objDicitionary = Nothing
    Worksheets("Tabelle1").Cells(2, 9).Resize(ialngIndex, 7) = Application.Transpose(avntSumm)
End Sub

Gruß
Nepumuk