Aktenzeichen sortieren

Bild

Betrifft: Aktenzeichen sortieren
von: Tobias
Geschrieben am: 16.10.2015 13:54:08

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

Bild

Betrifft: AW: Aktenzeichen sortieren
von: MAG
Geschrieben am: 16.10.2015 14:16:24
Hallo,
Hilfsspalte und runterziehen, dann mit "Bordmitteln" sortieren (gilt nur ab 1916 ! ;-)).


=WENN(UND(RECHTS(A1;2)*1>=0;RECHTS(A1;2)*1<=15);20;19)&RECHTS(A1;2)&"/"&LINKS(A1;2)
Gruß, MAG

Bild

Betrifft: AW: alternativ ohne WENN() ...
von: ... neopa C
Geschrieben am: 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<90)*100&LINKS(A1;2)
Wenn Du gern das Trennzeichen auch da sehen willst, dann dieses eben so:
=1900+RECHTS(A1;2)+(RECHTS(A1;2)*1<90)*100&"/"&LINKS(A1;2) 
noch einbinden.
Gruß Werner
.. , - ...


Bild

Betrifft: AW: Aktenzeichen sortieren
von: Peter Feustel
Geschrieben am: 16.10.2015 15:19:56
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

Bild

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

Bild

Betrifft: AW: die korrigierte Version
von: Peter Feustel
Geschrieben am: 17.10.2015 11:48:04
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


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Aktenzeichen sortieren"