Tabelle nach Datum(vorgegeben in Spalte D) sortieren

  • #1
J

JonnyHeart

Aktives Mitglied
Themenersteller
Dabei seit
12.01.2005
Beiträge
31
Reaktionspunkte
0
Hi all,

ich habe ein Makro geschrieben, welches meine Tabelle (gefüllt von Range A1 bis Z100)
absteigend nach dem Datum(steht in Spalte D) sortieren soll.

Doch das funktioniert leider nicht !!

Weiß jemand Rat ?

Vielen Dank& Gruß
JONNY

DAS MAKRO
--------------------------------------------
Sub Sortieren_nach_Datum()
'
' Sortieren_nach_Datum Makro
' Sortieren der Tabelle nach Datum - welches in Spalte D steht
'

'
    Selection.Sort Key1:=Range(D5), Order1:=xlDescending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortTextAsNumbers
End Sub
 
  • #2
Hallo JonnyHeart ,
bekommst Du Anzeigen/Laufzeitfehler oder klappt die Sortierung nicht ?
Was für ein Format hat dein Datum ?
Gruß Matjes :)
 
  • #3
hi Matjes,

ich bekomme einen Laufzeitfehler. Die Sort-Methode konnte nicht ausgeführt werden

Das Datum hat das Format tt.mm.jjjj

Auch ein Versucht mit dem Makro.Recorder schlug fehl.

Schlecht ist auch Selection.sort, denn das Makro soll bei einem Klick auf den Button den Tabelleninhalt
automatisch sortieren, ohne, dass Text markiert werden muss.

Die Range ist (A1:Z100), welche mit Datenmaterial gefüllt ist. In Spalte D steht das Datum .



...alles nicht so einfach :'(
 
  • #4
Wo sind Überschriften ? Zeile 1 ?

Hat die Tabelle verbundene Zellen ? Ligen die im Sortierbereich ?

Gruß Matjes :)
 
  • #5
Was meinst du mit verbundenen Zellen ?

So sieht die Tabelle aus :  leider hier etwas verzogen...

A                              B              C                     D                             E



Tom Friedrich g g 03.05.2007 8684341
Greg Jones d f 01.01.2007 63543543
Tim Müller  s c 27.07.2006 414354
Tim Wilsner r d 12.03.2005 32584354
Klaus Herber z f 01.04.2004 321347
Klaus Wusste h f 25.02.2001 354354
Armin Maier s d 01.01.1999 1599843
Herbert Schmidt w a 25.02.1985 1235438



NEUE VERSION DES CODES - funktioniert allerdings immer noch nicht !

Private Sub CommandButton2_Click()

' Sortieren_nach_Datum Makro
' Sortieren der Tabelle nach Datum - welches in Spalte D steht
'

'
Range(D6).Select
Selection.Sort Key1:=Range(D6), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortTextAsNumbers

End Sub
 
  • #6
Was meinst du mit verbundenen Zellen ?
Wenn man z.B.2 Zellen zu einer verbindet.

Was passiert denn, wenn Du diesen Makro laufen läßt ?

Gruß Matjes :)
Code:
Sub Sortieren_nach_Datum()
' Sortieren_nach_Datum Makro
' Sortieren der Tabelle nach Datum - welches in Spalte D steht
  
  Range(A1:Z100).Sort _
    Key1:=Range(D1), Order1:=xlDescending, _
    Header:=xlYes-> oder xlNo->xlGuess ist Mist
End Sub
 
  • #7
Am sichersten ist, das Datum grundsätzlich in der Form yyyy.mm.dd zu formatieren. Damit wird auch die String-Sortierung glücklich.

Gruß Matjes :)
 
  • #8
Verbundene Zellen sind nicht drin !

Wenn ich das Makro laufen lasse wirft er das Ergebnis in Range (A2:E10) richtig aus, allerdings verschiebt er meine Daten, welche ich in den Zeilen 1-5 habe unter die Tabelle. ((Die Zeilen 1-5 dürfen jedoch nicht verschoben werden))

tim jones          g t     12.12.2020 3584354
Tom Friedrich g g       03.05.2007 8684341
Greg Jones d f    01.01.2007 63543543
Tim Müller                 s c      27.07.2006 414354
Tim Wilsner r d      12.03.2005 32584354
Klaus Herber z f       01.04.2004 321347
Klaus Wusste h f                  25.02.2001 354354
Armin Maier s d 01.01.1999 1599843
Herbert Schmidt w a 25.02.1985 1235438
 
  • #9
Jetzt ist der Bereich (A1:Z100). Änder ihn in (A6:Z100).

Gruß Matjes :)
 
  • #10
In meiner Testfile funktioniert es... in der richtigen nicht,

da lässt sich komischerweise das Format des Datums nicht abändern....




Das Makro 2 vor diesem sieht folgendermaßen aus:

Private Sub CommandButton2_Click()

Dim L As Long
Dim ZL As Long

Sheets(Übersicht).Activate
ZL = ActiveSheet.UsedRange.Rows.Count
Range(A1).Select

For L = 6 To ZL
  If Len(ActiveCell.Value) = 1 _
    Then Selection.EntireRow.Delete _
Else ActiveCell.Offset(1, 0).Select

Next L


  Application.ScreenUpdating = False
    Tmp = Cells.Find(*, [A1], , , xlByRows, xlPrevious).Row
    For x = Tmp To 1 Step -1
        Do While Application.CountA(Rows(x)) = False
            Rows(x).EntireRow.Delete
        Loop
    Next x


End Sub


Nun kommt das SORTIERMAKRO fürs Datum...dieses hier...

Private Sub CommandButton3_Click() 

' Sortieren_nach_Datum Makro
' Sortieren der Tabelle nach Datum - welches in Spalte D steht
 
  Range(A3:Z150).Sort _
    Key1:=Range(D3), Order1:=xlDescending, _
    Header:=xlYes-> oder xlNo->xlGuess ist Mist
End Sub
 
  • #11
Hallo JonnyHeart,

was passiert denn oder was passiert nicht ?
Wo stehen Überschriften, welches ist die erste Zeile mit Werten ?

da lässt sich komischerweise das Format des Datums nicht abändern....
Was passiert, wenn du die Datumszellen als Standard formatierst ?
Sind dann Zahlen wie 39070 zu sehen ?

Wielleicht schickst Du mir mal die ersten 10 Zeilen deiner Datei an mein mailaddy, dann kann ich mir das direkt anschauen.

Gruß Matjes :)
 
  • #12
Die Zeilen 1 und 2 sind belegt, der Sortiervorgang soll in Zeile 3 beginnen und nach Spalte D in welcher die Datumswerte stehen, sortieren.

Mit dem Makro
Private Sub CommandButton3_Click() 

' Sortieren_nach_Datum Makro
' Sortieren der Tabelle nach Datum - welches in Spalte D steht
 
  Range(A3:Z150).Sort _
    Key1:=Range(D3), Order1:=xlDescending, _
    Header:=xlYes-> oder xlNo->xlGuess ist Mist
End Sub
passiert nichts... Ich kann es ausführen, ein Sortiervorgang findet nicht statt



((ich habe den Code angepasst - wie im Verlauf zu erkennen ist waren früher die Zeilen 1 bis 5 belegt))
 
  • #13
schickst Du mir mal die ersten 10 Zeilen dieses Blattes Excel-Datei an mein mailaddy. Dann schau ich mal warum es nicht geht.

Gruß Matjes :)
 
  • #14
Also das Nichtfunktionieren hatte zwei Ursachen:

a) der Button lag im zu sortierenden Bereich
Abhilfe: Button verschoben in Zeile 1

b) der Button hatte die Eigenschaft TakeFocusOnClick
Damit hat die Sortierroutine keine Chance, weil das Blatt dann nicht den Focus bekommen kann.
Abhilfe: Button->Eigenschaften->TakeFocusOnClick->False

Gruß Matjes :)
 
  • #15
Näheres zu meinem Problem - Die in Spalte D aufgeführten Daten (Mehrzahl von Datum ist hier gemeint) werden
als Text erkannt und lassen sich nicht umformatieren. Der Befehl ZELLEN FORMATIEREN zeigt keine Wirkung.


Mehr habe ich auch noch nicht herausgefunden. Aber das erklärt warum die Sortiererei nicht richtig klappt.

Hat jemand eine Idee wie ich die Formatierung noch ändern kann?

thxx JONNY
 
  • #16
Hallo JonnyHeart,

ich hab dir dafür einen Makro zusammengestellt.

Gruß matjes :)
Code:
Option Explicit

Sub SelektierterBereich_StringdatumInDatumUmwandeln()
 ->*** Im selektierten Bereich werden
 ->*** alle als Text / Variant-Text formatierten Zellen mit Datum
 ->*** in das Datumsformat mm.dd.yyyy gewandelt
  
  Const cDATUMSFORMAT = dd.mm.yyyy
  Dim r As Range, Zelle As Range
  Dim lZahl As Long, dValue As Date
  
  lZahl = 0
  
  Set r = Selection
  
  For Each Zelle In r
   ->Format Variant oder Text ?
    If Zelle.NumberFormat = Standard Or Zelle.NumberFormat = @ Then
     ->Zelle enthält Datum ?
      If IsDate(Zelle.Value) Then
       ->Datum auslesen (als String)
        dValue = Zelle.Value
       ->Zelle als Zahl formatieren und Zahl einfügen
        Zelle.NumberFormat = 0
        Zelle.Value = lZahl
       ->Zelle als datum formatieren und datum wieder einfügen
        Zelle.NumberFormat = cDATUMSFORMAT
        Zelle.Value = dValue
      End If
    End If
  Next
  
AUFRAEUMEN:
  Set r = Nothing: Set Zelle = Nothing
End Sub
 
  • #17
Hallo Matjes, mein Retter :D :D :D :D :D :D :D :D



Viele Dank !

Problem ist gelöst !
 
Thema:

Tabelle nach Datum(vorgegeben in Spalte D) sortieren

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben