Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
636to640
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
636to640
636to640
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Spalte [Datum] nach Monat sortieren
17.07.2005 18:13:23
markus
Hallo zusammen,
Ich möchte mit einem CommandButton gerne eine Spalte mit Datumswerten sortieren. Die Werte sind im Format dd.mm.yyyy. Mit VB möchte ich gerne, dass die Jahresangaben ignoriert und der Tages, Monatsteil von heute weg sortiert wird. Da es sich um Geburtstage handelt, sollte ich dann eine Übersicht bekommen, wer die nächste Torte bekommt ...
Wie kann ich den selben Knopf benutzen, um die Sortierung umzukehren? Also statt ASC sollte dann DESC sortiert werden.
Mit Range("A4:O500").Sort bin ich mit meinem Brain nicht weiter gekommen.
es grüsst,
de Markus

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spalte [Datum] nach Monat sortieren
17.07.2005 19:00:12
Nepumuk
Hallo Markus,
benutze zwei zusätzliche Spalten. Eine für das Monat und eine für den Tag. Füllen kannst du die Spalten mit Formeln. Wenn die Daten in Spalte A ab Zeile 1 beginnen, dann:
Für das Monat: =MONAT(A1)
Für den Tag: =TAG(A1)
Gruß
Nepumuk
Excel & VBA – Beispiele
AW: Spalte [Datum] nach Monat sortieren
17.07.2005 22:07:21
markus
Hallo zurück!
Nunja, das mit der Spalte kann und wird klappen. Ist mir aber nicht schön genug. Ich habe eine Adressliste und die möchte ich von Zeit zu Zeit drucken, da kann es schnell gehen, dass der Druckbreich verrutscht! Das muss doch irgendwie mit ".sort" im VB möglich sein. So aus dem Hintergrund ganz flink...
Merci für deinen Tipp Nepomuk,
Gruss Markus
Anzeige
AW: Spalte [Datum] nach Monat sortieren
17.07.2005 22:35:29
Nepumuk
Hi,
du kannst die Spalten ausblenden und trotzdem sortieren. Denn für eine VBA - Lösung fehlen mir die Angaben zum Aufbau der Tabelle und dir die Kenntnisse das ganze im Bedarfsfall anzupassen.
Gruß
Nepumuk
Excel & VBA – Beispiele
AW: Spalte [Datum] nach Monat sortieren
18.07.2005 00:21:27
Erich
Hallo Markus,
zeigt die folgende Tabelle einen Teil dessen, was du wolltest ("von heute weg sortiert")?
   |      A      |   B   | C |      D      |   E   |       F        |
-- | ----------- | ----- | - | ----------- | ----- | -------------- |
1 | Geburt | Name | | Geburt | Name | GebT in Tagen |
2 | 16.06.1944 | a | | 17.07.2005 | k | 0 |
3 | 01.01.1966 | b | | 20.07.2004 | j | 3 |
4 | 15.01.1966 | c | | 01.08.1999 | g | 15 |
5 | 02.05.1977 | d | | 31.12.1977 | e | 167 |
6 | 31.12.1977 | e | | 01.01.1988 | f | 168 |
7 | 01.01.1988 | f | | 01.01.1966 | b | 168 |
8 | 01.08.1999 | g | | 15.01.1966 | c | 182 |
9 | 16.07.2000 | h | | 02.05.1977 | d | 289 |
10 | 20.07.2004 | j | | 16.06.1944 | a | 334 |
11 | 17.07.2005 | k | | 16.07.2000 | h | 364 |

Die Daten in den Spalten A und B wurden eingegeben.
Das folgende Makro berechnet (für max. 200 Zeilen) die Spalten D und E mit den gleichen Daten, aber sortiert nach der Anzahl der Tage zum nächsten Geburtstag (spaßhalber in Spalte F ausgegeben). Die Ergenisse stehen nur für die Demo in den Spalten D und E, sie könnten natürlich auch die Daten in den Spalten A und B überschreiben.
Option Explicit
Type zeile
dd As Date
tt As String
nr As Long
End Type

Sub Sort_Geb()
Dim zz&, ii&, jj&
Dim dat(1 To 200) As zeile, zwi As zeile
'                                                   Einlesen
zz = 1
While Not IsEmpty(Cells(zz + 1, 1)) And zz < 200
dat(zz).dd = Cells(zz + 1, 1)
dat(zz).tt = Cells(zz + 1, 2)
dat(zz).nr = _
DateSerial(Year(Date), Month(Cells(zz + 1, 1)), Day(Cells(zz + 1, 1))) _
- DateSerial(Year(Date), Month(Date), Day(Date))
'        GebTag in diesem Jahr schon vorüber -> nächstes Jahr
If dat(zz).nr < 0 Then _
dat(zz).nr = dat(zz).nr + DateSerial(Year(Date) + 1, 1, 1) _
- DateSerial(Year(Date), 1, 1)
zz = zz + 1
Wend
'                                                   Sortierung
For ii = 1 To zz - 2
For jj = ii + 1 To zz - 1
If dat(jj).nr < dat(ii).nr Then
zwi = dat(jj)
dat(jj) = dat(ii)
dat(ii) = zwi
End If
Next jj
Next ii
'                                                   Ausgabe
Cells(1, 4) = Cells(1, 1)
Cells(1, 5) = Cells(1, 2)
Cells(1, 6) = "GebT in Tagen"
For ii = 1 To zz - 1
Cells(ii + 1, 4) = dat(ii).dd
Cells(ii + 1, 5) = dat(ii).tt
Cells(ii + 1, 6) = dat(ii).nr
Next ii
End Sub

Soll die Tabelle bei der "umgekehrten Sortierung" aussagen, wie viele Tage seit dem letzten Geburtstag vergangen sind? Das sähe sehr ähnlich aus.
Grüße aus Kamp-Lintfort
Erich
Anzeige
AW: Spalte [Datum] nach Monat sortieren
18.07.2005 17:03:13
Markus
Hallo Erich,
Meine Tabelle sieht so aus:
| A | B | C
-- | ----------- | ----- | -
1 | Geburt | Name |
2 | 16.06.1944 | a |
3 | 01.01.1966 | b |
4 | 15.01.1966 | c |
5 | 02.05.1977 | d |
6 | 31.12.1977 | e |
7 | 01.01.1988 | f |
8 | 01.08.1999 | g |
9 | 16.07.2000 | h |
10 | 20.07.2004 | j |
11 | 17.07.2005 | k |
Wobei es noch weitere Spalten für Adressen beinhaltet. Ist aber ein Detail....
Ich möchte auf einen klick die zuoberst jenen Namen haben, der als nächstes Geburtstag hat. Dabei spielt das Jahr keine Rolle! Also nur nach Tag und Monat, beginnend ab heute sortieren. Wie ginge das?
(Ich bin nicht ganz neu hier, Programmieren fällt mir leicht. Du kannst gerne etwas VB posten)
Besten Dank,
de Markus
Anzeige
AW: Spalte [Datum] nach Monat sortieren
18.07.2005 18:59:22
Erich
Hallo Markus,
eigentlich dachte ich, dir in meinem letzten Beitrag schon einigen VBA-Code geschickt zu haben...
Aber ich habs noch mal geändert und vereinfacht, lasse Excel eine Hilfsspalte sortieren und hab das Ganze dem Click-Ereignis von CommundButton1 zugeordnet. Den folgenden Text kopier bitte in den Code deiner Tabelle:
Option Explicit
Private Sub CommandButton1_Click()
Dim zz&
'                                               Hilfsspalte einfügen
Columns(2).Insert Shift:=xlToRight
Columns(2).NumberFormatLocal = "Standard"
Cells(1, 2) = "Sort"
'                                               Hilfsspalte füllen
zz = 2
While Not IsEmpty(Cells(zz, 1))
Cells(zz, 2) = _
DateSerial(Year(Date), Month(Cells(zz, 1)), Day(Cells(zz, 1))) _
- DateSerial(Year(Date), Month(Date), Day(Date))
'  wenn GebTag schon vorüber, dann im nächsten Jahr
If Cells(zz, 2) < 0 Then _
Cells(zz, 2) = Cells(zz, 2) + DateSerial(Year(Date) + 1, 1, 1) _
- DateSerial(Year(Date), 1, 1)
zz = zz + 1
Wend
'                                          nach Hilfsspalte sortieren
[A1].Sort Key1:=Range("B2"), Order1:=xlAscending, _
Header:=xlYes, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
'                                               Hilfsspalte löschen
Columns(2).Delete Shift:=xlToLeft
Cells(2, 2).Select
End Sub

Ists so ok?
Grüße aus Kamp-Lintfort
Erich
Anzeige
AW: Spalte [Datum] nach Monat sortieren
19.07.2005 21:42:47
Markus
Hallo Erich,
jepp. jetzt hats wunderbar geklappt. Besten Dank für deine Nachsicht nochmals den Code zu posten.
es grüsst,
Markus

323 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige