Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Aktenzeichen sortieren

Aktenzeichen sortieren
16.10.2015 13:54:08
Tobias
Liebe Excel-Spezialisten
Ich habe Akten zu verwalten, deren Aktenzeichen nach folgendem Format gebildet werden müssen: 34/03, 65/99, 25/02 usw., wobei die ersten beiden Ziffern die laufende Nummer eines Jahrgangs darstellen, und die Ziffern nach dem Schrägstrich den Jahrgang. Diese Zeichenfolgen befinden sich in Spalte A. Ich möchte nun die Akten so sortieren, dass die Jüngste am Ende der Liste steht, also
65/99
25/02
34/03
Es muss aber unbedingt eine Sortierung erfolgen, damit ich überblicken kann, welche Akte ich schon erfaßt habe. Im Archiv habe ich nichts gefunden.
Ich bedanke mich!
Viele Grüße Tobias

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Aktenzeichen sortieren
16.10.2015 14:16:24
MAG
Hallo,
Hilfsspalte und runterziehen, dann mit "Bordmitteln" sortieren (gilt nur ab 1916 ! ;-)).

=WENN(UND(RECHTS(A1;2)*1>=0;RECHTS(A1;2)*1
Gruß, MAG

AW: alternativ ohne WENN() ...
16.10.2015 14:42:40
...
Hallo Tobias,
... reicht folgende Formel in der Hilfsspalte, nach dessen Werten Du dann anschließend Deinen gesamten Datenbestand entsprechend sortieren kannst:
=1900+RECHTS(A1;2)+(RECHTS(A1;2)*1
Wenn Du gern das Trennzeichen auch da sehen willst, dann dieses eben so:
=1900+RECHTS(A1;2)+(RECHTS(A1;2)*1
noch einbinden.
Gruß Werner
.. , - ...

Anzeige
AW: Aktenzeichen sortieren
16.10.2015 15:19:56
Peter
Hallo Tobias,
hier eine VBA Lösung mit dem Excel-Sort und zwei temporären Hilfsspalten
Gruß Peter
Option Explicit
'    Ich habe Akten zu verwalten, deren Aktenzeichen nach folgendem Format gebildet werden mü _
ssen:
'    34/03, 65/99, 25/02 usw., wobei die ersten beiden Ziffern die laufende Nummer eines  _
Jahrgangs
'    darstellen, und die Ziffern nach dem Schrägstrich den Jahrgang.
'    Diese Zeichenfolgen befinden sich in Spalte A.
'    Ich möchte nun die Akten so sortieren, dass die Jüngste am Ende der Liste steht, also
'    65/99
'    25/02
'    34/03
'    Es muss aber unbedingt eine Sortierung erfolgen, damit ich überblicken kann, welche Akte  _
ich schon erfaßt habe.
'    sortiert wird das Tabellenblatt "Tabelle1"
'    sortiert wird ab Zeile 1 - also OHNE ÜBERSCHRIFT
'    sortiert wird Spalte A - Z
Public Sub Aktenzeichen_sortieren()
Dim lLetzte  As Long    ' die letzte belegte Zeile in Spalte A
Dim lZeile   As Long    ' For/Next Schleifen-index - hier die Zeile
Dim vTemp    As Variant ' ein temporärer Bereich zum trennen am "/"
Application.ScreenUpdating = False  ' kein Bildschirm-Update zulassen
With ThisWorkbook.Worksheets("Tabelle1") ' den Tabellen-Blattnamen ggf. ANPASSEN !!!
lLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row ' die letzte belegte Zeile gemäß Spalte 1 = _
A
.Columns("A:A").Insert Shift:=xlToRight ' 1. Hilfsspalte einfügen
.Columns("A:A").Insert Shift:=xlToRight ' 2. Hilfsspalte einfügen
For lZeile = 1 To lLetzte
If InStr(.Range("C" & lZeile).Value, "/") > 0 Then ' gibt es einen "/" ?
vTemp = Split(.Range("C" & lZeile).Value, "/")  ' am "/" aufteilen
.Range("A" & lZeile).Value = vTemp(1)           ' das Jahr in die 1. Hilfsspalte
.Range("B" & lZeile).Value = vTemp(0)           ' die lfd. Nr in die 2. Hilfsspalte
Else
.Range("A" & lZeile).Value = .Range("C" & lZeile).Value ' Werte ohne den "/"
End If
Next lZeile
'        die beiden Hilfsspalten sortieren - absteigend das Jahr, aufsteigend die lfd. Nummer
.Range("A1:AB" & lLetzte).Sort _
Key1:=Range("A1"), _
Order1:=xlDescending, _
Key2:=Range("B1"), _
Order2:=xlAscending, _
Header:=xlNo, _
OrderCustom:=1, _
MatchCase:=False, _
Orientation:=xlTopToBottom
.Columns("A:B").Delete Shift:=xlToLeft ' die Hilfsspalten wieder löschen
End With
Application.ScreenUpdating = True  ' den Bildschirm-Update wieder zulassen
End Sub

In ein allgemeines Modul kopieren und über Alt + F8 starten

Anzeige
AW: meine VBA Lösung bitte ignorieren
17.10.2015 06:18:31
Peter
Hallo Tobias,
meine Excel-Lösung per normalem Sort, erfüllt die Anforderungen leider absolut nicht - sorry.
Gruß Peter

AW: die korrigierte Version
17.10.2015 11:48:04
Peter
Hallo Tobias,
hier noch meine korrigierte VBA Version.
Gruß Peter
Public Sub Aktenzeichen_sortieren()
Dim lLetzte  As Long    ' die letzte belegte Zeile in Spalte A
Dim lZeile   As Long    ' For/Next Schleifen-index - hier die Zeile
Dim vTemp    As Variant ' ein temporärer Bereich zum trennen am "/"
Dim sText    As String  ' die manipulierte Jahreszahl
Application.ScreenUpdating = False  ' kein Bildschirm-Update zulassen
With ThisWorkbook.Worksheets("Tabelle1") ' den Tabellen-Blattnamen ggf. ANPASSEN !!!
lLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row ' die letzte belegte Zeile gemäß Spalte 1 = _
A
.Columns("A:A").Insert Shift:=xlToRight ' 1. Hilfsspalte einfügen
.Columns("A:A").Insert Shift:=xlToRight ' 2. Hilfsspalte einfügen
For lZeile = 1 To lLetzte
If InStr(.Range("C" & lZeile).Value, "/") > 0 Then ' gibt es einen "/" ?
vTemp = Split(.Range("C" & lZeile).Value, "/")  ' am "/" aufteilen
If Val(vTemp(1)) > 50 Then
.Range("A" & lZeile).Value = 1900 + Val(vTemp(1))  ' das Jahr in die 1.  _
Hilfsspalte
Else
.Range("A" & lZeile).Value = 2000 + Val(vTemp(1))  ' das Jahr in die 1.  _
Hilfsspalte
End If
.Range("B" & lZeile).Value = vTemp(0)    ' die lfd. Nr in die 2. Hilfsspalte
Else
.Range("A" & lZeile).Value = .Range("C" & lZeile).Value ' Werte ohne den "/"
End If
Next lZeile
'        die beiden Hilfsspalten sortieren - absteigend das Jahr, aufsteigend die lfd. Nummer
.Range("A1:AB" & lLetzte).Sort _
Key1:=Range("A1"), _
Order1:=xlAscending, _
Key2:=Range("B1"), _
Order2:=xlAscending, _
Header:=xlNo, _
OrderCustom:=1, _
MatchCase:=False, _
Orientation:=xlTopToBottom
.Columns("A:B").Delete Shift:=xlToLeft ' die Hilfsspalten wieder löschen
End With
Application.ScreenUpdating = True  ' den Bildschirm-Update wieder zulassen
End Sub

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Aktenzeichen richtig sortieren in Excel


Schritt-für-Schritt-Anleitung

Um die Aktenzeichen in der Form 34/03, 65/99 usw. zu sortieren, kannst Du eine Hilfsspalte nutzen. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Hilfsspalte einfügen: Füge zwei neue Spalten rechts von der Spalte mit den Aktenzeichen ein (z.B. Spalte B und C).

  2. Formel in der Hilfsspalte: Verwende die folgende Formel in Zelle B1 (oder der ersten Zelle der Hilfsspalte):

    =WENN(UND(RECHTS(A1;2)*1>=0;RECHTS(A1;2)*1<100);1900+RECHTS(A1;2);2000+RECHTS(A1;2))
  3. Erste Hilfsspalte befüllen: Ziehe die Formel nach unten, um alle Aktenzeichen zu erfassen.

  4. Sortierung: Wähle alle Daten aus, inklusive der Hilfsspalten. Gehe zu Daten > Sortieren, wähle zuerst die Hilfsspalte (Jahr) absteigend und dann die zweite Hilfsspalte (laufende Nummer) aufsteigend.

  5. Hilfsspalten löschen: Lösche die Hilfsspalten nach der Sortierung, um die Übersichtlichkeit zu wahren.


Häufige Fehler und Lösungen

  • Fehler: Die Aktenzeichen werden nicht korrekt sortiert.

    • Lösung: Überprüfe die Formeln in den Hilfsspalten. Stelle sicher, dass die Formeln korrekt auf die Zellen der Aktenzeichen verweisen.
  • Fehler: Aktenzeichen erscheinen in der falschen Reihenfolge.

    • Lösung: Achte darauf, dass die Sortieroptionen für die Hilfsspalten richtig eingestellt sind (absteigend für das Jahr und aufsteigend für die laufende Nummer).

Alternative Methoden

Falls Du eine VBA-Lösung bevorzugst, kannst Du den folgenden Code verwenden. Dieser sortiert die Aktenzeichen automatisch:

Public Sub Aktenzeichen_sortieren()
    Dim lLetzte As Long
    Dim lZeile As Long
    Dim vTemp As Variant
    Application.ScreenUpdating = False
    With ThisWorkbook.Worksheets("Tabelle1")
        lLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
        .Columns("A:A").Insert Shift:=xlToRight
        .Columns("A:A").Insert Shift:=xlToRight
        For lZeile = 1 To lLetzte
            vTemp = Split(.Range("C" & lZeile).Value, "/")
            .Range("A" & lZeile).Value = IIf(Val(vTemp(1)) > 50, 1900 + Val(vTemp(1)), 2000 + Val(vTemp(1)))
            .Range("B" & lZeile).Value = vTemp(0)
        Next lZeile
        .Range("A1:B" & lLetzte).Sort Key1:=Range("A1"), Order1:=xlAscending, Key2:=Range("B1"), Order2:=xlAscending, Header:=xlNo
        .Columns("A:B").Delete Shift:=xlToLeft
    End With
    Application.ScreenUpdating = True
End Sub

Füge diesen Code in ein allgemeines Modul ein und führe ihn über Alt + F8 aus.


Praktische Beispiele

Stell Dir vor, Du hast folgende Aktenzeichen in Spalte A:

34/03
65/99
25/02

Nach Anwendung der obigen Anweisungen solltest Du die Aktenzeichen in folgender Reihenfolge erhalten:

65/99
25/02
34/03

Die Sortierung zeigt, dass die jüngsten Aktenzeichen jetzt am Ende der Liste stehen.


Tipps für Profis

  • Nutze die Filterfunktion in Excel, um nur bestimmte Jahrgänge anzuzeigen.
  • Wenn Du regelmäßig mit Aktenzeichen arbeitest, speichere die Hilfsspalte als Vorlage für zukünftige Projekte.
  • VBA kann auch automatisch bei der Eingabe der Aktenzeichen Trigger auslösen, die die Sortierung sofort durchführen.

FAQ: Häufige Fragen

1. Frage
Kann ich die Sortierung auch ohne Hilfsspalten durchführen?
Antwort: Nein, ohne Hilfsspalten wird die Sortierung der Aktenzeichen nicht korrekt funktionieren, da Excel die Werte als Text interpretiert.

2. Frage
Funktioniert diese Anleitung in jeder Excel-Version?
Antwort: Ja, die beschriebenen Methoden sollten in den meisten modernen Excel-Versionen funktionieren, solange Du mindestens Excel 2007 verwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige