Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1924to1928
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 per Farbe und dann Datum sortieren

VBA per Farbe und dann Datum sortieren
15.03.2023 08:27:22
Boris.S.

Hallo zusammen,

bei meiner Excel hatte ich versucht das immer wenn man die Datei öffnen diese nach Farbe sortiert wird ( Gelb nach unten ) und im Anschluss nach Datum (neuestes Datum nach unten (bei beiden Farben).

Könnt ihr mich hier unterstützen?
Grüße Boris

https://www.herber.de/bbs/user/158262.xlsm

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA per Farbe und dann Datum sortieren
15.03.2023 10:36:23
Yal
Hallo Boris,

wenn diese Sortierung per Hand stattfindet, musst Du zuerst nach Datum, dann nach Farbe sortieren.
Und wenn Du nach mehrere Farbe sortieren möchtest, z.B. blau-weiss-rot, dann musst Du zuerst nach rot, dann nach Weiss, dann blau.

Kingt komisch, ist aber so.

VG
Yal


AW: VBA per Farbe und dann Datum sortieren
15.03.2023 10:39:40
Boris.S.
Händisch verstehe ich schon, aber ich suche eine VBA die es beim öffnen immer neu Sortiert, ähnlich wie:

Sub sortieren_nach_zellfarbe()
  Dim x As Byte
  'Hilfsspalte einfügen
  Columns(1).Insert Shift:=xlToRight
   
  'Farbwert in Hilfsspalte eintragen
  For x = 1 To 10
         Cells(x, 1) = Cells(x, 2).Interior.ColorIndex
  Next x
   
  'Sortieren
  Range("A:B").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlNo, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
   
  'Hilfsspalte wieder entfernen
  Columns(1).Delete Shift:=xlToLeft
End Sub


Anzeige
AW: VBA per Farbe und dann Datum sortieren
15.03.2023 10:45:39
onur
Wenn du "eine VBA" für "deine Excel" suchst, musst du Makrorecorder nehmen.


AW: VBA per Farbe und dann Datum sortieren
15.03.2023 16:06:02
Herbert_Grom
Hallo Boris,

das geht so nicht, denn deine Farbe ist nicht wirklich in der Zelle vorhanden, sondern nur virtuell, durch die "Bedingte Formatierung". Da du für die "Bedingte Formatierung" ja nur 2 Farben verwendest würde ich diese nicht über die "Bedingte Formatierung" hinzufügen, sondern evtl. über VBA, dann könntest du sie auch nach deinem Makro sortieren.

Servus


AW: VBA per Farbe und dann Datum sortieren
15.03.2023 16:37:02
Daniel
Hi
die Farbe ergibt sich aus dem Text in Spalte I (Staus)
sortiere daher normal nach dem Inhalt dieser Spalte und nicht nach der Farbe.
Gruß Daniel


Anzeige
AW: VBA per Farbe und dann Datum sortieren
15.03.2023 20:12:27
Yal
Hallo Boris,

wandle deine Liste in einer Tabelle um:
_ markiere den Bereich A2:I42
_ Menü "Einfügen", "Tabelle"
_ deine Tabelle bekommt den Namen "Tabelle1" (sollte in Menü "Tabellentools" direkt nach der Erzeugung sichtbar sein)

Dann sortierst Du einmal nach Datum, einmal nach Status (die Filter/sortier-Schaltfläche sind im Spaltenüberschrift jetzt da).

Oder falls es Dir zu viele Handarbeit ist, dann mit folgenden Code:
Sub Makro1()
    With ActiveWorkbook.Worksheets("2023").ListObjects("Tabelle1").Sort
        .SortFields.Clear
        .SortFields.Add Key:=Range("Tabelle1[[#All],[Status]]"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers
        .SortFields.Add Key:=Range("Tabelle1[[#All],[Datum]]"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
Die Makro wird mit Alt+F8, Auswahl des richtigen Makros und klick auf "Ausführen". Was nicht weniger Klicks als zweimal sortieren sind.

VG
Yal


Anzeige
AW: VBA per Farbe und dann Datum sortieren
16.03.2023 07:05:28
Boris.S.
Danke euch allen,

ich hab es mittlerweile so geschrieben:

Dim wks As Worksheet
Set wks = Worksheets(1)
With wks
.Range("A3:I200").Sort Key1:=.Range("A3"), order1:=xlAscending, Header:=xlGuess
.Range("A3:I200").Sort Key1:=.Range("I3"), order1:=xlAscending, Header:=xlGuess
End With

funktioniert auch. Trozdem danke euch :) (bei A war das Datum drin) wusste nicht das es so einfach geht, bin hier ziemlich neu, aber ich hab es hinbekommen :D


AW: VBA per Farbe und dann Datum sortieren
16.03.2023 13:54:06
Yal
Hallo Boris,

Klasse! VBA ist auch kein Hexenwerk. Sicher: viel neues auf einmal, aber alles einzel nachvollziehbar.

Verwende bitte die Funktion "Code ..." hier oben (lese auch "Tipps zu dieser Leiste") um den Code zu posten.

Noch einfacher: Du brauchst die Variable wks nicht, wenn seine einzige Verwendung innerhalb des With ist, und Range wird wiederholt, daher kann es auch ins With reingepackt werden:
With Worksheets(1).Range("A3:I200")
    .Sort Key1:=.Range("A3"), order1:=xlAscending, Header:=xlGuess
    .Sort Key1:=.Range("I3"), order1:=xlAscending, Header:=xlGuess
End With
VG
Yal


Anzeige
AW: VBA per Farbe und dann Datum sortieren
16.03.2023 13:59:32
Yal
..gerade als ich "Absenden" drücke, fehlt mir mein Blödsinnn ein: .Range("A3") und .Range("I3") beziehen sich auch auf dem With.

Daher entweder
With Worksheets(1)
    .Range("A3:I200").Sort Key1:=.Range("A3"), order1:=xlAscending, Header:=xlGuess
    .Range("A3:I200").Sort Key1:=.Range("I3"), order1:=xlAscending, Header:=xlGuess
End With
oder
With Worksheets(1).Range("A3:I200")
    .Sort Key1:=.Range("A1"), order1:=xlAscending, Header:=xlGuess 'relative Adressierung zu A3: "in der erste Zeile davon"
    .Sort Key1:=.Range("I1"), order1:=xlAscending, Header:=xlGuess
End With
Probiere in dem Direktbereich (Ansicht, Direktfenster):
?Worksheets(1).Range("A3:I200").Range("A1").Address

VG
Yal


Anzeige
AW: VBA per Farbe und dann Datum sortieren
16.03.2023 14:40:41
GerdL
Oder With(z)los. :-)
Dim Rng As Range: Set Rng = Worksheets(1).Range("A3:I200")
Rng.Sort Key1:=Rng.Cells(1, 1), order1:=1, Header:=0
Rng.Sort Key1:=Rng.Cells(9, 1), order1:=1, Header:=0
Set Rng = Nothing
Gruß Gerd

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige