Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1692to1696
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zeilen durchlaufen und Zellen neu sortieren

Zeilen durchlaufen und Zellen neu sortieren
27.05.2019 08:53:35
Mike
Hallo,
Spalte A1 bis Axx beinhaltet die Fachnummer und in den nachfolgenden Zellen der selben Zeile befinden sich die dort abgelegten Gegenstände. Die Menge der Artikel pro Fach varieren daher sollte die Zeile solange durchlaufen werden bis Zelle leer.
In der Zieltabelle soll pro Artikel eine Zeile genutzt werden wobei in A immer die Fachnummer steht und B der Artikel.
Beispiel:
QuelleDatei
A1=Fach1 B1=Artikel1 C1=Artikel2
B1=Fach2 B2=Artikel3 C2=Artikel4 D2=Artikel5
usw.
ZielDatei
A1=Fach1 B1=Artikel1
A2=Fach1 B2=Artikel2
A3=Fach2 B3=Artikel3
A4=Fach2 B4=Artikel4
usw.
Kann mir da bitte jemand eine Schleife zu schreiben.
Gruß
Mike

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: einfacher mit PowerQuery ...
27.05.2019 09:32:04
neopa
Hallo Mike,
... dazu aktiviere eine Datenzelle Deiner Daten und danach:
- unter Daten die Funktion "Aus Tabelle"
- ok (Tabelle hat im Beispiel keine Überschriften)
- rechte Maustaste auf Spalte "Spalte1" und da "andere Spalten entpivotieren"
- entferne Spalte "Attribut"
- benenne die die Überschriften nach Deinen Vorstellungen um
- aktiviere "schließen & laden" und da "... in" und dies z.B. in "neues Arbeitsblatt"
Gruß Werner
.. , - ...
AW: einfacher mit PowerQuery ...
27.05.2019 09:52:02
Mike
Hallo Werner,
Danke für deine Antwort.
Grundsätzlich ist das eine Lösung die sicherlich auch funktioniert allerdings benötige ich eine VBA Lösung da dies nur ein Teil des großen ganzen sein ist.
Gruß
Mike
Anzeige
AW: ok, ist aber schon nicht mehr offen owT
27.05.2019 09:55:53
neopa
Gruß Werner
.. , - ...
AW: ok, ist aber schon nicht mehr offen owT
27.05.2019 10:05:01
Mike
Hallo Werner,
Lösung ist bereits gefunden. Habe durch deinen Beitrag aber dennoch etwas dazu gelernt. Daher Danke :-)
Gruß
Mike
AW: Zeilen durchlaufen und Zellen neu sortieren
27.05.2019 09:38:40
Nepumuk
Hallo Mike,
so ok?
Public Sub Fachliste()
Dim lngRow As Long, lngColumn As Long
Dim lngOutputRow As Long
With Worksheets("QuelleDatei")
For lngRow = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
For lngColumn = 2 To .Cells(lngRow, Columns.Count).End(xlToLeft).Column
lngOutputRow = lngOutputRow + 1
Worksheets("ZielDatei").Cells(lngOutputRow, 1).Value = _
.Cells(lngRow, 1).Value
Worksheets("ZielDatei").Cells(lngOutputRow, 2).Value = _
.Cells(lngRow, lngColumn).Value
Next
Next
End With
End Sub

Gruß
Nepumuk
Anzeige
AW: Zeilen durchlaufen und Zellen neu sortieren
27.05.2019 10:03:31
Mike
Hallo Nepumuk,
funktioniert hervorragend. Vielen Dank
Gruß
Mike
AW: Zeilen durchlaufen und Zellen neu sortieren
27.05.2019 09:40:40
Bernd
Servus Mike,
so in der Art?

Sub test()
Dim intLZ As Integer
Dim intLS As Integer
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim ws As Worksheet
Dim wsz As Worksheet
Set ws = ThisWorkbook.Sheets("Tabelle1")
Set wsz = ThisWorkbook.Sheets("Tabelle2")
With ws
intLZ = .Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To intLZ
intLS = .Cells(i, Columns.Count).End(xlToLeft).Column
k = wsz.Cells(Rows.Count, 1).End(xlUp).Row + 1
For j = 2 To intLS
ws.Cells(i, j).Copy Destination:=wsz.Cells(k, 2)
ws.Cells(i, 1).Copy Destination:=wsz.Cells(k, 1)
k = k + 1
Next j
Next i
End With
Set ws = Nothing
Set wsz = Nothing
End Sub
Grüße, Bernd
Anzeige
AW: Zeilen durchlaufen und Zellen neu sortieren
27.05.2019 10:15:41
Mike
Hallo Bernd,
auch dir vielen Dank für deine Hilfe.
Bei deiner Lösung fehlt in der Zieldatei allerdings die erste Zeile der Quelldatei und im Vergleich zu der Lösung von Nepumuk läuft das Makro spürbar langsamer.
Das mit der fehlenden Zeile habe ich bereits behoben aber die Durchlaufzeit ist um einiges höher.
Trotzdem Danke für deine Hilfe.
Gruß
Mike
mit Dictionary
27.05.2019 11:16:35
Daniel
Hi
diese Aufgabe lässt sich in VBA am einfachsten und schnellsten über das Dictionary-Objekt lösen.
hier mal in der Einfachsten Variante für den Fall, dass jede Artikelnummer nur 1x vorkommt.
Sub test()
Dim arr
Dim z As Long, s As Long
Dim dic As Object
Set dic = CreateObject("Scripting.dictionary")
arr = Sheets("Quelltabelle").Cells(1, 1).CurrentRegion.Value
For z = 1 To UBound(arr, 1)
For s = 2 To UBound(arr, 2)
If arr(z, s) = "" Then Exit For
dic(arr(z, s)) = arr(z, 1)
Next
Next
With Sheets("Zieltabelle").Cells(1, 1).Resize(dic.Count, 2)
.Columns(1).Value = WorksheetFunction.Transpose(dic.items)
.Columns(2).Value = WorksheetFunction.Transpose(dic.keys)
End With
End Sub

Gruß Daniel
Anzeige
AW: mit Dictionary
28.05.2019 07:31:29
Mike
Hallo Daniel,
die Artikel kommen öfter als einmal vor und befinden sich auch an unterschiedlichen Lagerorten.
Dennoch ein interessanter Ansatz den ich im Hinterkopf behalten werde.
Danke und Gruß
Mike
AW: mit Dictionary
28.05.2019 08:59:24
Daniel
Auch das geht, da die Kombination aus Ort und Artikel eindeutig sein sollte:
Die Zeile dic(arr(z, s)) = arr(z, 1)
So abändern: dic(arr(z, 1) & ";" & arr(z, s)) = 0
Beim zurückschreiben nur die Keys zurück schreiben:
Sheets("Zieltabelle").Cells(1, 1).Resize(dic.Count, 1).Value = WorksheetFunction.Transpose(dic.keys)
Und hinterher mit text-in-Spalten Ort und Artikel trennen.
Wie das per Makro geht, zeigt dir der Recorder.
Gruß Daniel
Anzeige

68 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige