Registriert seit: 28.08.2022
Version(en): 365
Hi, deine neue Liste ist auch nicht viel besser als deine alte. Du denkst immer noch zu sehr in Papier und Bleistift. Lass die Routine von snb über deine ursprüngliche Tabelle laufen. Das sieht dann zwar für den Menschen nicht besonders übersichtlich aus, aber für Maschinen gut zum Auswerten geeignet. Code: ArtikelNr KundenNr Datum Preis 12345 6789 01.01.23 1,23 12345 6789 03.01.23 1,25 12345 1234 01.10.22 11,55 11111 1245 31.08.20 0,99
Je nach Bedarf sollte die Liste ev. z.B. nach Datum sortiert sein.
Gruß, Helmut
Win10 - Office365 / MacOS - Office365
Folgende(r) 1 Nutzer sagt Danke an HKindler für diesen Beitrag:1 Nutzer sagt Danke an HKindler für diesen Beitrag 28
• BenBrix77
Registriert seit: 15.07.2021
Version(en): 2010
Ich habe es dann so gelöst. Musste nur vorher die Zeilen nach den ersten 3 Spalten sortieren da der Code nur zusammenhängende Zeilen erkennt. Zitat:VBA
Zitat:Sub CombineRows() Dim i As Long Dim j As Long Dim lastRow As Long 'Determine the last row of data lastRow = Cells(Rows.Count, 1).End(xlUp).Row 'Loop through rows starting from the bottom For i = lastRow To 2 Step -1 'Compare the values in the first three columns If Cells(i, 1).Value = Cells(i - 1, 1).Value And _ Cells(i, 2).Value = Cells(i - 1, 2).Value And _ Cells(i, 3).Value = Cells(i - 1, 3).Value Then 'If the values are identical, combine the rows For j = 4 To 52 'Combine non-empty cells in columns D through AY If Cells(i, j).Value <> "" Then Cells(i - 1, j).Value = Cells(i - 1, j).Value & " " & Cells(i, j).Value End If Next j 'Delete the duplicate row Rows(i).Delete End If Next i End Sub Grüße
Registriert seit: 29.09.2015
Version(en): 2030,5
Wenn du meinen Vorschlag benützt hätte, wäre ein Pivottable die Lösung gewesen.
Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:1 Nutzer sagt Danke an snb für diesen Beitrag 28
• BenBrix77
Registriert seit: 26.09.2022
Version(en): 2019
Hallo auch von mir, ich würde das natürlich mit Powerquery lösen. Das ist quasi gemacht dafür, Datenhaltung aus Kreuztabellen zu normalisieren: Code: let Quelle = Excel.CurrentWorkbook(){[Name="tbKundenUmsätze"]}[Content], #"Geänderter Typ" = Table.TransformColumnTypes(Quelle,{{"Artikelnummer", Int64.Type}, {"Kundennummer", Int64.Type}, {"Menge Januar 2022", Int64.Type}, {"Preis Januar 2022", type number}, {"Menge Februar 2022", Int64.Type}, {"Preis Februar 2022", type number}}), #"Entpivotierte Spalten" = Table.UnpivotOtherColumns(#"Geänderter Typ", {"Artikelnummer", "Kundennummer"}, "Attribut", "Wert"), #"Spalte nach Trennzeichen teilen" = Table.SplitColumn(#"Entpivotierte Spalten", "Attribut", Splitter.SplitTextByEachDelimiter({" "}, QuoteStyle.Csv, false), {"Attribut.1", "Attribut.2"}), #"Geänderter Typ1" = Table.TransformColumnTypes(#"Spalte nach Trennzeichen teilen",{{"Attribut.1", type text}, {"Attribut.2", type date}}) in #"Geänderter Typ1"
VIele Grüße derHöpp
Folgende(r) 1 Nutzer sagt Danke an derHoepp für diesen Beitrag:1 Nutzer sagt Danke an derHoepp für diesen Beitrag 28
• BenBrix77
|