Hallo,
ich habe folgendes Problem, bei dem ich nicht genau weiß, wonach ich suchen muss, um eine Lösung zu finden. Ich hoffe, dass ihr mir helfen könnt.
Ich habe einen Datenexport, der folgendermaßen aussieht: externer Link entfernt
Ich hätte nun gerne eine Tabelle, bei denen die ganzen Daten in einer Zeile hinter dem jeweiligen Artikel und dessen Namen stehen. Die Anzahl ist eigentlich erstmal irrelevant.
In etwa so: externer Link entfernt
Gibt es da eine einfache Möglichkeit oder wisst ihr, wonach ich für eine Lösung suchen muss?
Beste Grüße!
*Edit: Bilder wurde nicht angezeigt. Habe sie nun als Link hinzugefügt.
Bei dem Stand des Beitrags, meine allgemeine Antwort
Powerquery
Moin,
wenn Du Bilder hochlädst, musst Du sie erst mit "Attachment hinzufügen" hochladen und anschließend noch mit dem anderen Button "in den Beitrag einfügen"
Ansonsten so:
Arbeitsblatt mit dem Namen 'Tabelle2' |
| A | B | C | D | E |
1 | Artikel1 | Datum1 | Name1 | Datum2 | Name2 |
2 | Datum1 | Name1 | | | |
3 | Datum2 | Name2 | | | |
Zelle | Formel |
B1 | =INDEX($A:$B;1+ABRUNDEN(SPALTE(A1)/2;)+REST(SPALTE(A1);2);1+REST(SPALTE(B1);2)) |
C1 | =INDEX($A:$B;1+ABRUNDEN(SPALTE(B1)/2;)+REST(SPALTE(B1);2);1+REST(SPALTE(C1);2)) |
D1 | =INDEX($A:$B;1+ABRUNDEN(SPALTE(C1)/2;)+REST(SPALTE(C1);2);1+REST(SPALTE(D1);2)) |
E1 | =INDEX($A:$B;1+ABRUNDEN(SPALTE(D1)/2;)+REST(SPALTE(D1);2);1+REST(SPALTE(E1);2)) |
Verwendete Systemkomponenten: [Windows (32-bit) NT 10.00] MS Excel 2016 |
Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg |
Vielen Dank schonmal für die rasche Antwort.
Ich habe versucht, die Formel nachzuvollziehen. Allerdings bei einem kurzen Test besteht das Problem. dass diese Formeln alle Daten in eine Zeile schreibt.
Ich hätte ja aber gerne, dass sobald ein neuer Artikel anfängt, dieser auch wieder in einer neuen Zeile steht und nur die Daten und Namen dieses Artikels in einer Zeile auftauchen.
Übersehe ich etwas?
Hallöchen,
im Prinzip so. Du musst dann praktisch noch die Zeile berücksichtigen wo die Formel steht - vergleich die alte und diese Variante mal, dann siehst Du es.
Die Formel ziehst Du immer so weit nach rechts wie nötig. Wenn automatisch keine weiteren Ergebnisse kommen sollen, könnte man das auch noch verarbeiten. Oder man löst das mit VBA ...
Ich hab die auch nur in B1 eingegeben und dann nach B5 kopiert …
Arbeitsblatt mit dem Namen 'Tabelle2' |
| A | B | C | D | E |
1 | Artikel1 | Datum1 | Name1 | Datum2 | Name2 |
2 | Datum1 | Name1 | | | |
3 | Datum2 | Name2 | | | |
4 | | | | | |
5 | Artikel2 | Datum3 | Name3 | Datum4 | Name4 |
6 | Datum3 | Name3 | | | |
7 | Datum4 | Name4 | | | |
Zelle | Formel |
B1 | =INDEX($A:$B;1+ZEILE(A1)-1+ABRUNDEN(SPALTE(A1)/2;)+REST(SPALTE(A1);2);1+REST(SPALTE(B1);2)) |
B5 | =INDEX($A:$B;1+ZEILE(A5)-1+ABRUNDEN(SPALTE(A5)/2;)+REST(SPALTE(A5);2);1+REST(SPALTE(B5);2)) |
Verwendete Systemkomponenten: [Windows (32-bit) NT 10.00] MS Excel 2016 |
Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg |
Die Sache bzgl händisch machen ist unmöglich, da es sich um 3.000-4.000 Artikel handelt zwischen 0-30 Daten(Bestellungen).
Ich vermute, dass man dann mit einem VBA Skript vorgehen müssten. Da ich aber erst die kleinen Standards beherrsche, dachte ich, dass es vielleicht schon eine Lösung in Excel gibt.
Also hier nochmal das gesamte Problem mit Datei.
Tabelle 1 zeigt die Beschaffenheit des Exports. Und wie bereits gesagt, handelt es sich um unzählige Artikel. Mein wunsch wäre auf Tabelle 2 gezeigt, wo alle Lieferungen (Datum und Menge) eines Artikels je Zeile aufgeführt sind.
Ich hoffe es gibt eine schnelle Lösung für die Konvertierung.
Beste Grüße
Hallöchen,
hier mal ein Zwischenschritt, eventuell reicht das schon. Der trägt Dir die Formeln automatisch ein. Als nächstes kann man dann z.B. nach Spalte C filtern, dadurch die leeren ausblenden und die gefüllten Zeilen kopieren und mit Inhalte einfügen - Werte (Taste 123) an andere Stelle einfügen.
Alternativ könnte ich auch gleich im Code die Formeln durch Werte ersetzen. Dann könntest Du auch gleich andersrum filtern und die leeren anzeigen und diese Zeilen dann löschen.
Hier mal eine Variante, die schon die Formeln durch die Ergebnisse ersetzt. Das Löschen ist noch auskommentiert.
Statt dem Löschen kannst Du, wie gesagt, die Daten auch an andere Stelle kopieren. Ich weiß nur nicht, ob Du das andere Blatt nur wegen der Veranschaulichung hast oder die Daten wirklich auf ein anderes Blatt sollen...
Code:
Option Explicit
Sub SenkWaag()
'Zelle A2 aktivieren
Cells(2, 1).Activate
'Ausf?hren solange in der aktiven Zellle was steht
Do While ActiveCell.Value <> ""
'Im Bereich neben der aktiven Zelle
With ActiveCell.Offset(, 1).Resize(1, (ActiveCell.End(xlDown).Row - ActiveCell.Row) * 2)
'Formel eintragen
.FormulaR1C1 = _
"=INDEX(C1:C2,1+ROW(RC[-1])-1+ROUNDDOWN(COLUMN(RC[-1])/2,)+MOD(COLUMN(RC[-1]),2),1+MOD(COLUMN(RC),2))"
'Formel durch Ergebnisse ersetzen
.Value = .Value
'Ende Im Bereich neben der aktiven Zelle
End With
'Weiter zum Ende und dann zum n?chsten Anfang
'--> setzt min eine Leerzeile zwischen den Bereichen voraus
ActiveCell.End(xlDown).Activate
ActiveCell.End(xlDown).Activate
'Ende Ausf?hren solange in der aktiven Zellle was steht
Loop
'Loeschen aufrufen
'Call loeschen
'A2 aktivieren
Cells(2, 1).Activate
End Sub
Sub Loeschen()
'Mit der Spalte C
With Columns("C:C")
'Autofilter anschalten
.AutoFilter
'leere anzeigen
.AutoFilter Field:=1, Criteria1:="="
'gefilterte Zeilen loeschen (und ein paar mehr)
.Range("A2:A20000").Delete Shift:=xlUp
'Autofilter ausschalten
.AutoFilter
'Ende Mit der Spalte C
End With
End Sub
Das andere Blatt war nur wegen der Veranschaulichung.
Das passt so, dass die Daten umgetragen werden und im gleichen Blatt bleiben.
Das Problem scheint momentan allerdings zu sein, dass wenn keine Lieferung eines Artikel vorgenommen wurde (100008) funktioniert das Skript nicht mehr. Ab da kommt es durcheinander und scheint die Formel hinter das letzte Datum einer Lieferung zu kopieren....
Bild des Problems im Anhang.
Vielen Dank schonmal für die Mühe!
*EDIT: Gibt es eine Möglichkeit, entweder das neueste Datum (die letzte Zeile unter jedem Artikel) als erste Spalte zu haben, sodass man die neuesten Lieferungen sofort sieht?
Oder ist es leichter nacher alle Spalten zu "vertauschen"
Hallöchen,
erst mal zum Thema keine Lieferung ein Ersatz für das Sub SenkWaag (ungetestet)
Code:
Sub SenkWaag()
'Zelle A2 aktivieren
Cells(2, 1).Activate
'Ausf?hren solange in der aktiven Zellle was steht
Do While ActiveCell.Value <> ""
'Wenn in der Folgezelle auch was steht, dann
If ActiveCell.Offset(1, 0).Value <> "" Then
'Im Bereich neben der aktiven Zelle
With ActiveCell.Offset(, 1).Resize(1, (ActiveCell.End(xlDown).Row - ActiveCell.Row) * 2)
'Formel eintragen
.FormulaR1C1 = _
"=INDEX(C1:C2,1+ROW(RC[-1])-1+ROUNDDOWN(COLUMN(RC[-1])/2,)+MOD(COLUMN(RC[-1]),2),1+MOD(COLUMN(RC),2))"
'Formel durch Ergebnisse ersetzen
.Value = .Value
'Ende Im Bereich neben der aktiven Zelle
End With
'Ende Wenn in der Folgezelle auch was steht, dann
End If
'Weiter zum Ende und dann zum n?chsten Anfang
'--> setzt min eine Leerzeile zwischen den Bereichen voraus
ActiveCell.End(xlDown).Activate
ActiveCell.End(xlDown).Activate
'Ende Ausf?hren solange in der aktiven Zellle was steht
Loop
'Loeschen aufrufen
'Call loeschen
'A2 aktivieren
Cells(2, 1).Activate
End Sub