Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1320to1324
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

VBA Code für Excel-Sortierung

VBA Code für Excel-Sortierung
18.07.2013 13:48:38
bolleeee
Hallo,
ich habe eine Liste einer Struktur in Excel bekommen, die in der ersten Spalte bspw. folgende Einträge hat. In der zweiten steht dann der Name zu dieser Kennung. Siehe auch Beispieldatei Tabelle1. https://www.herber.de/bbs/user/86444.xlsx
Da die Liste ungefähr 4500 Einträge hat, bin ich auf der Suche nach einem Code, der mir diese Einträge wie in Tabelle2 dargestellt sortiert. Also alles mit einem Buchstaben in die erste Zeile, zwei Buchstaben in die zweite Spalte usw.
Es wird mit der Beispieldatei anschaulich.
Als besondere Herausforderung sollten die leeren Zellen wie im Beispiel gefüllt werden.
Hat jemand eine Idee?
Vielen Dank
Bolleeee

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Code für Excel-Sortierung
18.07.2013 14:14:03
Luschi
Hallo Bolleeee,
wie soll man Dir helfen, wenn die Ausgangsdaten von der 'Soll-perfekt'-Ansicht so abweichen.
-A und -AA tauchen da garnicht auf und die Kennung AABC gibt es in den Ausgangsdaten nicht.
Ein bischen mehr Mühe wirst Du Dir da schon geben müssen.
Gruß von Luschi
aus klein-Paris

AW: VBA Code für Excel-Sortierung
18.07.2013 14:27:46
bolleeee
Was für ein Fauxpas...Danke für den Hinweis! Das habe ich vor lauter As und Bs kopieren am Ende wohl nicht mehr im Kopf gehabt :) Habe es jetzt noch einmal verbessert. Die Datei bezieht sich auf die anfängliche Fragestellung.
https://www.herber.de/bbs/user/86446.xlsx
Gruß
Bolleeee

Anzeige
AW: VBA Code für Excel-Sortierung
18.07.2013 16:23:11
Rudi
Hallo,
Sub aaa()
Dim arr(), rngC As Range, lMax As Integer, i As Integer
For Each rngC In Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
lMax = WorksheetFunction.Max(lMax, Len(rngC))
Next
ReDim arr(1 To WorksheetFunction.CountA(Columns(1)), 1 To lMax + 1)
For Each rngC In Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
arr(rngC.Row, Len(rngC)) = rngC.Offset(, 1)
arr(rngC.Row, UBound(arr, 2)) = rngC
Next
With Sheets(2)
.Cells.ClearContents
.Cells(2, 1).Resize(UBound(arr), UBound(arr, 2)) = arr
.Cells(1, UBound(arr, 2)) = "Kennung"
For i = 1 To lMax
.Cells(1, i) = i
On Error Resume Next
With .Range(.Cells(1, i).End(xlDown), _
.Cells(UBound(arr) + 1, 1)).SpecialCells(xlCellTypeBlanks)
.FormulaR1C1 = "=R[-1]C"
.Value = .Value
End With
On Error GoTo 0
Next
End With
End Sub

Gruß
Rudi

Anzeige
AW: VBA Code für Excel-Sortierung
19.07.2013 09:04:31
bolleeee
Hallo,
danke für den Code. Er funktioniert, aber leider nicht ganz so wie ich es benötige. Ich habe mal in der angehängten Datei markiert (2. Tabelle), wo es problematisch ist.
https://www.herber.de/bbs/user/86451.xlsm
Gruß und Danke
Bolleeee

AW: VBA Code für Excel-Sortierung
19.07.2013 13:03:41
Rudi
Hallo,
so?
Sub aaa()
Dim arr(), rngC As Range, lMax As Integer, i As Integer
For Each rngC In Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
lMax = WorksheetFunction.Max(lMax, Len(rngC))
Next
ReDim arr(1 To WorksheetFunction.CountA(Columns(1)), 1 To lMax + 1)
For Each rngC In Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
arr(rngC.Row, Len(rngC)) = rngC.Offset(, 1)
arr(rngC.Row, UBound(arr, 2)) = rngC
Next
With Sheets(2)
.Cells.ClearContents
.Cells(2, 1).Resize(UBound(arr), UBound(arr, 2)) = arr
.Cells(1, UBound(arr, 2)) = "Kennung"
For i = 1 To lMax
.Cells(1, i) = i
On Error Resume Next
With .Range(.Cells(1, i).End(xlDown), _
.Cells(UBound(arr) + 1, i)).SpecialCells(xlCellTypeBlanks)
.FormulaR1C1 = "=R[-1]C"
End With
On Error GoTo 0
Next
With .Cells(1, 1).CurrentRegion
.Copy
.PasteSpecial xlPasteValues
End With
Application.CutCopyMode = False
End With
End Sub

Gruß
Rudi

Anzeige
AW: VBA Code für Excel-Sortierung
19.07.2013 14:59:17
bolleeee
Hallo,
leider noch nicht. Ich habe die Felder, die nicht da sein dürften wieder grau markiert.
Es dürften quasi nur so viele Spalten einen Inhalt haben, so lang der Buchstabe ist (bspw. bei "B", kann dieser nur in der ersten Spalte stehen, weil es die "Modul2"- der Zeile müsste leer sein (bis auf Kennung natürlich).
https://www.herber.de/bbs/user/86459.xlsm
Gruß und Danke
Bolleeee

AW: VBA Code für Excel-Sortierung
19.07.2013 15:54:11
bolleeee
Hallo,
leider noch nicht. Ich habe die Felder, die nicht da sein dürften wieder grau markiert.
Es dürften quasi nur so viele Spalten einen Inhalt haben, so lang der Buchstabe ist (bspw. bei "B", kann dieser nur in der ersten Spalte stehen, weil es die "Modul2"- der Zeile müsste leer sein (bis auf Kennung natürlich).
https://www.herber.de/bbs/user/86459.xlsm
Gruß und Danke
Bolleeee

Anzeige
AW: VBA Code für Excel-Sortierung
22.07.2013 10:36:26
Rudi
Hallo,
jetzt hab ich's kapiert.
Sub aaa()
Dim arr(), rngC As Range, lMax As Integer, i As Integer
Dim arrTmp()
For Each rngC In Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
lMax = WorksheetFunction.Max(lMax, Len(rngC))
Next
ReDim arr(1 To WorksheetFunction.CountA(Columns(1)), 1 To lMax + 1)
ReDim arrTmp(1 To 1, 1 To lMax)
For Each rngC In Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
arrTmp(1, Len(rngC)) = rngC
For i = Len(rngC) + 1 To lMax
arrTmp(1, i) = ""
Next
For i = 1 To Len(rngC)
arr(rngC.Row, i) = arrTmp(1, i)
Next
arr(rngC.Row, UBound(arr, 2)) = rngC
Next
With Sheets(2)
.Cells.ClearContents
.Cells(2, 1).Resize(UBound(arr), UBound(arr, 2)) = arr
For i = 1 To lMax
.Cells(1, i) = i
Next
.Cells(1, lMax + 1) = "Kennung"
End With
End Sub

Gruß
Rudi
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige