Sortieren von verbundenen und nichtverbundenen Zellen
#1
Hallo in die Runde,
 
die beigefügte Tabelle möchte ich nach der Spalte "Wiedervorlage-Datum" sortieren. Da die Tabelle aber sowohl verbundene als auch nichtverbundene Zellen enthält, kommt die Fehlermeldung "Für diese Aktion müssen alle verbundenen Zellen die selbe Größe haben."
 
Eine Beispieldatei habe ich beigefügt.
 
Wenn jemand eine Idee hat, wie ich eine solche Projektfortschrittsdatei noch anderweitig lösen kann, bin ich auch dafür dankbar.
 
 
Danke an alle +
liebe Grüße,
 
Herbst94


Angehängte Dateien
.xlsx   Sortieren von verbundenen und nichtverbundenen Zellen.xlsx (Größe: 10,21 KB / Downloads: 8)
Antworten Top
#2
Man verwendet keine verbundenen Zellen in der Datenverarbeitung (also Datentabelle, Sortieren usw.).

Verbundene Zellen sind eine schöne Sache für ausgefeilte Formulare oder Reports.
Antworten Top
#3
(02.03.2026, 09:32)Herbst94 schrieb: die beigefügte Tabelle möchte ich nach der Spalte "Wiedervorlage-Datum" sortieren. Da die Tabelle aber sowohl verbundene als auch nichtverbundene Zellen enthält, kommt die Fehlermeldung "Für diese Aktion müssen alle verbundenen Zellen die selbe Größe haben."

1) Alle verbundenen Zellen auflösen
2) Die jetzt leeren Zellen mit dem Inhalt aus der Zelle darüber füllen
3) Sortieren
4) Alle Zellen mit gleichen Inhalten verbinden

Andreas.
Antworten Top
#4
Hallo,

meine Formel kopiert die fehlenden Daten in die Matrix und sortiert sie. Du kannst die Formel zB. in Zelle G2 kopieren, sodass sich ein Resultatbereich G2:J25 ergibt, in der die sortierte Matrix (vollständig!) enthalten ist. Du musst dann die Spalten noch entsprechend formatieren.
PHP-Code:
=LET(m;$A$2:$D$25;copyv;LAMBDA(a;v;WENN(v="";a;v)); kopf;INDEX(m;1;0); daten;WEGLASSEN(m;1);
p;SCAN("";INDEX(daten;;1);copyv);
d;SCAN(0;INDEX(daten;;2);copyv);
pdm;HSTAPELN(p;d;WEGLASSEN(daten;;2)); VSTAPELN(kopf;SORTIEREN(pdm;2)))
Gruß Anton.

Windows 11 64bit
Microsoft365 Insider 64bit
Antworten Top
#5
Hallo,

um die Daten der ersten beiden Spalten nach dem Sortieren wahlweise einzublenden bzw. auszublenden:
zB in Zelle G2 folgende Formel kopieren und in Zelle I1 "ja" eingeben, um diese wieder auszublenden, "nein" um diese eingeblendet zu lassen:
PHP-Code:
=LET(
    m; $A$2:$D$25;
    aus; $I$1;
    copyv; LAMBDA(a; v; WENN(v = ""; a; v));
    kopf; INDEX(m; 1; 0);
    daten; WEGLASSEN(m; 1);
    p; SCAN(""; INDEX(daten; ; 1); copyv);
    d; SCAN(0; INDEX(daten; ; 2); copyv);
    pdm; HSTAPELN(p; d; WEGLASSEN(daten; ; 2));
    sm; VSTAPELN(kopf; SORTIEREN(pdm; 2));
    WENN(
        aus = "ja";
        LET(
            pro; INDEX(sm; 0; 1);
            prov; WEGLASSEN(VSTAPELN(""; pro); -1);
            sp; WENN(pro = prov; ""; SPALTENWAHL(sm; 1; 2));
            HSTAPELN(sp; SPALTENWAHL(sm; 3; 4))
        );
        sm
   
)
)


Angehängte Dateien
.xlsx   Herbst94_Sortieren von verbundenen und nichtverbundenen Zellen.xlsx (Größe: 16,06 KB / Downloads: 2)
Gruß Anton.

Windows 11 64bit
Microsoft365 Insider 64bit
Antworten Top
#6
Hi
beim Sortieren besteht immer die Möglichkeit, dass die Zeilen, die verbunden sind, auseinander gerissen werden.
ich würde hier die Zellverbünde aufheben und das Datum in jede der Zellen schreiben.
Wenn wenn du das Datum nur einmal angezeigt haben willst, würde ich es über die bedingte Formatierung unsichtbar machen.
dh du verwendest in Spalte B diese Bedingte Formatierung:
=Index(B:B;Zeile())=Index(B:B;Zeile()-1)
mit dem Format: Zahlenformat - benutzerdefiniert ;;; (3x Semikolon)
damit erscheint dann, wenn mehrere gleiche Werte aufeinander folgen, immer nur der oberste.
vergleichbares kanns du dann auch mit den Rahmenlinien machen und die obere Rahmenlinie ausblenden.

Gruß Daniel
Antworten Top
#7
(02.03.2026, 10:14)Andreas Killer schrieb: 1) Alle verbundenen Zellen auflösen
2) Die jetzt leeren Zellen mit dem Inhalt aus der Zelle darüber füllen
3) Sortieren
4) Alle Zellen mit gleichen Inhalten verbinden


Code:
Sub Test()
  Dim Data As Range, C As Range, R As Range, F As Range, T As Range
  Dim Last As Variant, Edge As Variant
  'Datenbereich wählen
  Set Data = Range("A2:D25")
  'Zellen teilen
  Data.UnMerge
  'In Spalte A:B Werte nach unten füllen
  For Each C In Intersect(Data, Range("A:B")).Columns
    Last = Empty
    For Each R In C.Cells
      If IsEmpty(R) Then R = Last Else Last = R
    Next
  Next
  'Sortieren
  Data.Sort Range("B2"), xlAscending, Header:=xlYes
  'Zellen verbinden
  Application.DisplayAlerts = False
  For Each C In Intersect(Data, Range("A:B")).Columns
    Set F = Nothing
    Set T = Nothing
    For Each R In C.Cells
      If F Is Nothing Then
        Set F = R
      End If
      If R <> F Then
        With Range(F, T)
          .Merge
          For Each Edge In Array(xlEdgeTop, xlEdgeBottom)
            With .Borders(Edge)
              .LineStyle = xlContinuous
              .Weight = xlMedium
            End With
          Next
        End With
        Set F = R
      End If
      Set T = R
    Next
    With Range(F, T)
      .Merge
      For Each Edge In Array(xlEdgeTop, xlEdgeBottom)
        With .Borders(Edge)
          .LineStyle = xlContinuous
          .Weight = xlMedium
        End With
      Next
    End With
  Next
  Application.DisplayAlerts = True
End Sub
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste