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

Bereich zu Liste!

Bereich zu Liste!
25.10.2022 10:11:27
Andreas
Hallo zusammen!
Ich habe einen Bereich und will aus den darin befindlichen Werten ein Liste machen, die nicht nur spaltenweise sondern auch nach Datum sortiert sind.
Kokrete Unterscheidungsmerkmale:
Wert beginnt mit "B" dann in Spalte B, Wert beginnt mit "A" dann in Spalte C
Der Versuch die Datei hochzuladen ist leider mißlungen - ich versuche mit der Datei auf meinen eigenen Beitrag zu antworten
Vielen Dank einstweilen
lg Andreas

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: da besteht aber ein Widerspruch ...
25.10.2022 11:56:49
neopa
Hallo Andreas,
... denn Du schreibst: ".... Wert beginnt mit "B" dann in Spalte B, Wert ..." Jedoch "B/30 Nov 22" steht in C16 und nicht in B16.
Gruß Werner
.. , - ...
AW: da besteht aber ein Widerspruch ...
25.10.2022 13:43:56
Andreas
Hallo Werner!
Die Excel-Datei hat zwei Tabellenblätter: im ersten names "Ausgangssituation" findet sich die Form, wie mir die Daten vorliegen.
Das zweite Tabellenblatt namens "Ziel" ist mein Wunschtraum und dort sind alle Bs in der Spalte B und alle As in der Spalte C und nach Datum sortiert
lg Andreas
Anzeige
AW: aber nicht in Deiner eingestellten Datei ...
25.10.2022 15:21:46
neopa
Hallo Andreas,
... denn da stehen Deine Zielvorgaben in F:H.
Gruß Werner
.. , - ...
AW: aber nicht in Deiner eingestellten Datei ...
25.10.2022 15:31:08
Andreas
Hallo Werner!
Ich hab mir die Datei "https://www.herber.de/bbs/user/155841.xlsx" gerade heruntergeladen und ich sehe die beiden Tabellenblätter "Ausgangssituation" und "Ziel"
Und der Wert "Bestellung/Auslieferung" ist nur die Überschrift für die Spalten B bis L
lg Andreas
Array muss noch sortiert werden!
25.10.2022 13:38:26
MCO
Hallo Andreas!
Das war doch umständlicher als ich dachte:
Da die Daten so umständlich aussehen hab ich sie erstmal in 4 Arrays geladen, je nach Bereich und Spaltenzuweisung.
Dann hab ich den Datenbereich gekürzt und wandle sie Dabei wieder in die ursprüngliche Formatierung.
Achtung!
Sortiert wird im Tabellenbereich, das muss evtl angepasst werden.

Sub Bereich_zu_liste()
Dim z1 As Single, z2 As Single, z3 As Single, z4 As Single, z As Single
Dim einfüg1 As Single, einfüg2 As Single, einfüg3 As Single, einfüg4 As Single
Dim bereich_1 As Range, bereich_2 As Range, cl As Range
Dim dat As Date
Set bereich_1 = Range("b4:L11")
Set bereich_2 = Range("b14:L21")
ReDim arr_A1(50)
ReDim arr_B1(50)
ReDim arr_A2(50)
ReDim arr_B2(50)
For Each cl In Application.Union(bereich_1, bereich_2).SpecialCells(xlCellTypeConstants)
dat = CDate(Replace(Mid(cl, 3, 99), " ", ".")) 'zu Datum wandeln zum Sortieren
If Not Intersect(cl, bereich_1) Is Nothing Then
If Left(cl, 1) = "A" Then
arr_A1(z1) = dat 'Mid(cl, 3, 99)
z1 = z1 + 1
Else
arr_B1(z2) = dat 'Mid(cl, 3, 99)
z2 = z2 + 1
End If
ElseIf Not Intersect(cl, bereich_2) Is Nothing Then
If Left(cl, 1) = "A" Then
arr_A2(z3) = dat 'Mid(cl, 3, 99)
z3 = z3 + 1
Else
arr_B2(z4) = dat 'Mid(cl, 3, 99)
z4 = z4 + 1
End If
End If
Next
ReDim Preserve arr_B1(z1)
ReDim Preserve arr_A1(z2)
ReDim Preserve arr_B2(z3)
ReDim Preserve arr_A2(z4)
'Hier müssten die Daten innerhalb des Array sortiert werden!
einfüg1 = 3
einfüg2 = einfüg1 - 1
einfüg3 = 23
einfüg4 = einfüg3 - 1
'Ausgabespalte noch anpassen!
arr_B1 = sortier_Das(arr_B1)
arr_A1 = sortier_Das(arr_A1)
arr_B2 = sortier_Das(arr_B2)
arr_A2 = sortier_Das(arr_A2)
For z = 1 To UBound(arr_B1)
Cells(einfüg1, "O") = "B/" & Format(arr_B1(z), "dd mmm yy"): einfüg1 = einfüg1 + 1
Next z
For z = 1 To UBound(arr_A1)
Cells(einfüg2, "P") = "A/" & Format(arr_A1(z), "dd mmm yy"): einfüg2 = einfüg2 + 1
Next z
For z = 1 To UBound(arr_B2)
Cells(einfüg3, "O") = "B/" & Format(arr_B2(z), "dd mmm yy"): einfüg3 = einfüg3 + 1
Next z
For z = 1 To UBound(arr_A2)
Cells(einfüg4, "P") = "A/" & Format(arr_A2(z), "dd mmm yy"): einfüg4 = einfüg4 + 1
Next z
End Sub
Function sortier_Das(werte As Variant) As Variant
Dim rng As Range
Set rng = Range("S5", Cells(4 + UBound(werte), "S"))
rng = WorksheetFunction.Transpose(werte)
With ActiveSheet.Sort.SortFields
.Clear
.Add2 Key:= _
rng, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveSheet.Sort
.SetRange rng
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End With
sortier_Das = WorksheetFunction.Transpose(rng)
rng.Clear
End Function
Gruß., MCO
Anzeige
Nein, ist schon, Betreff war nicht akuell, owT
25.10.2022 13:39:36
MCO
...
AW: Array muss noch sortiert werden!
25.10.2022 14:00:29
Andreas
Hallo MCO!
WAHNSINN: Das schaut ja schon mal ganz hervorrangend aus - die Sortierung haut noch nicht ganz hin, aber das wird wohl an den Daten selbst liegen.
Ich als Nur-Rekorder-Makro-Macher galube von nun an an Zauberei.
Ich hab jetzt mal eine grundsätzliche Ahnung.
Vielen Dank dafür!
lg Andreas
AW: Bereich zu Liste!
25.10.2022 16:41:44
UweD
Hallo
hier noch eine Lösung von mir...
  • Zum Sortieren muss ein Datum verwendet werden.
  • Deshalb habe ich den Präfix A/ bzw. B/ in die Zellformatierung gepackt
  • In der Zelle selbst steht nur das Datum
    
    Sub AB()
    Dim TB1 As Worksheet, TB2 As Worksheet, LR As Integer
    Dim GR As Variant, Datum As Date, Z As Variant
    Set TB1 = Sheets("Ausgangssituation")
    Set TB2 = Sheets("Ziel")
    'Reset
    With TB2
    .UsedRange.Offset(1, 0).ClearContents
    .Columns(2).NumberFormat = """B/ ""dd mmm yy"
    .Columns(3).NumberFormat = """A/ ""dd mmm yy"
    End With
    With TB2
    For Each Z In TB1.UsedRange.Offset(1, 0).SpecialCells(xlCellTypeConstants, 2)
    GR = TB1.Cells(Z.Row, 1).MergeArea.Cells(1, 1)
    Datum = Split(Z, "/")(1)
    Select Case Left(Z, 2)
    Case "A/"
    LR = .Cells(.Rows.Count, 3).End(xlUp).Row + 1
    If .Cells(LR, 1)  GR Then
    .Cells(LR, 3) = 999999 'Hilfswert
    .Cells(LR, 4) = .Cells(LR, 1)
    .Cells(LR + 1, 3) = Datum
    .Cells(LR + 1, 4) = GR 'für 2. Sortierung
    .Cells(LR + 1, 5) = "#" 'für Leerzeilen
    Else
    .Cells(LR, 3) = Datum
    .Cells(LR, 4) = GR 'für 2. Sortierung
    End If
    Case "B/"
    LR = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
    If WorksheetFunction.CountIf(.Columns(1), GR) = 0 Then
    .Cells(LR, 1) = GR
    .Cells(LR, 2) = 1 'Hilfswert
    .Cells(LR + 1, 1) = GR
    .Cells(LR + 1, 2) = Datum
    Else
    .Cells(LR, 1) = GR
    .Cells(LR, 2) = Datum
    End If
    Case Else
    'nix
    End Select
    Next
    'Sortierung AB
    .Sort.SortFields.Clear
    .Sort.SortFields.Add2 Key:=.Range("A:A"), SortOn:=xlSortOnValues, Order:=xlAscending
    .Sort.SortFields.Add2 Key:=.Range("B:B"), SortOn:=xlSortOnValues, Order:=xlAscending
    With .Sort
    .SetRange Range("A:B")
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
    End With
    'Sortierung CD
    .Sort.SortFields.Clear
    .Sort.SortFields.Add2 Key:=.Range("D:D"), SortOn:=xlSortOnValues, Order:=xlAscending
    .Sort.SortFields.Add2 Key:=.Range("C:C"), SortOn:=xlSortOnValues, Order:=xlAscending
    With .Sort
    .SetRange Range("C:D")
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
    End With
    'Hilfswerte löschen
    .Columns(2).Replace What:=CDate(1), Replacement:="", LookAt:=xlWhole
    .Columns(3).Replace What:=CDate(999999), Replacement:="", LookAt:=xlWhole
    ' Leerzeile einfügen
    If WorksheetFunction.CountIf(Columns(5), "#") > 0 Then
    .Rows(WorksheetFunction.Match("#", Columns(5), 0)).Insert
    End If
    'Nummerierung nur 1 mal
    LR = .Cells(.Rows.Count, 2).End(xlUp).Row
    With .Cells(1, 1).Resize(LR, 1)
    .FormulaR1C1 = "=IF(COUNTIF(R2C4:RC[3],RC[3])=1,RC[3],"""")"
    .Value = .Value
    End With
    ' Hilfsspalten löschen
    .Columns("D:E").Delete
    End With
    End Sub
    
    LG UweD
  • Anzeige
    AW: Bereich zu Liste!
    28.10.2022 13:22:54
    Andreas
    Hallo Uwe!
    DAS IST PERFEKT udn genau das, wonach ich gesucht habe.
    Vielen, vielen Dank!
    lg Andreas
    Prima. Danke für die Rückmeldung. owT
    28.10.2022 15:17:28
    UweD
    AW: Prima. Danke für die Rückmeldung. owT
    08.11.2022 11:13:27
    Andreas
    Hallo Uwe!
    Jetzt hat sich aber doch noch eine Frage aufgetan:
    wo definiere ich den zu durchsuchenden Bereich ein, denn meine wirkliche Liste hat viel mehr Zeilen und Spalten.
    lg Andreas

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige