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
|