1.1k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo zusammen,
ich habe heute mal ein kurioses Problem.
In einer Liste mit 300 möglichen (40 tatsächlichen) Einträgen habe ich über mehrere Formularsteuerelemente mehrere Sortierfunktionen per Makrorecorder aufgenommen.
Das funktionert alles prima bis auf eine: Geburtstag.
Hier wird ein Name in die 300.Zeile eingetragen.
Verdacht: es hat was mit dem 29.2. zu tun.
Kann mir jemand sagen, woran das liegt und vor allem wie man es korrigieren kann?
Habe zum besseren Verständnis die Datei mal hochgeladen.
Ich nutze Office 2007.
Die ausgeblendeten Spalten sind Hilfsspalten für mich.

http://www.xup.in/dl,67521809/Mitgliederliste-test.xlsm/

Gruß und Danke im voraus
Flodnug

5 Antworten

0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo Flodnug,

in den Hilfsspalten hast du ja Monat und Tag aus dem Geburtstag ermittelt. Diese Spalten würde ich für die Sortierung des Geburtstags auch verwenden:

Sub Gebtag()
'
With ActiveWorkbook.Worksheets("Tabelle1").Sort
.SortFields.Clear
.SortFields.Add Key:=Range( _
"H5:H304"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
.SortFields.Add Key:=Range( _
"G5:G304"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
.SortFields.Add Key:=Range( _
"B5:B304"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
xlSortNormal
.SortFields.Add Key:=Range( _
"C5:C304"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
.SetRange Range("B5:Q304")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("B5").Select

End Sub


Du sortierst zuerst nach Spalte I, die zusammengesetzt und somit grds. als Text angesehen wird (sortiere deine Tabelle mal "per Hand" nach Spalte I und schau dir die Meldung an). Deine Hilfsspalte I ist hier eigentlich überflüssig.

Und wenn du schon das Datum mit Tag und Monat zusammensetzen willst, dann würde ich das mit folgender Formel machen:
=WENNFEHLER(DATUM(0;H5;G5);"")
und die Spalte I benutzerdefiniert im Format TT.MM formatieren. Dann klappt auch die Sortierung mit deinem aufgezeichneten Makro.

Gruß

M.O.
0 Punkte
Beantwortet von
Hallo M.O.,
danke mal wieder für Deine Hilfe.
Ich werde natürlich alles so nacharbeiten, wie Du es gesagt hast.
Erlaube mir trotzdem eine Nachfrage.
Wenn es an der Art der Sortierung liegt, warum funktioniert es dann bei allen anderen Namen, aber nur bei dem mit dem Geburtstag 29.2. nicht?
Danke und Gruß Flodnug
0 Punkte
Beantwortet von computerschrat Profi (33.2k Punkte)
Hallo Flodnug,

was hast du in den Geburtstagsfeldern eingegeben? Steht da nur 29.02. oder steht da auch eine Jahreszahl drin?
Excel verarbeitet den 29.02. nur als Datum, wenn er im Zusammenhang mit einem Schaltjahr steht. Genauso werden Eigaben wie der 31.04. auch nicht als Datum verwendet. Formatiere mal die Spalte als Datum mit Jahresangabe und schau das Ergebnis an.

Gruß
computerschrat
0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo Flodnug,

eigentlich ist der Anwort von computerschrat nichts mehr hinzuzufügen.

Aber tippe mal mal in eine leere Excel-Tabelle folgendes ein (jeweils in eine leere Zelle):
29/2
29/2/84
29/2/85
Und dann schau dir mal an, wie die einzelnen Zellen formatiert werden.

@ computerschrat: In den Geburtstagsfeldern sind keine Jahreszahlen vorhanden, daher auch die falsche Sortierung.

Gruß

M.O.
0 Punkte
Beantwortet von
Hallo,
danke computerschrat und M.O. für Eure schnellen Antworten.
Muss das gesagte jetzt erst mal in aufarbeiten und durch probieren. Möchte es ja schließlich nachvollziehen können, um es später auch besser anwenden zu können.
Sollte alles klappen, sage ich an dieser Stelle nochmals vielen, vielen Dank.
Dann brauch ich mich nicht nochmal explicit melden.
Gruß Flodnug
...