AW: die klassische Verknüpfung hilft da nicht ...
20.11.2016 19:45:39
fcs
Hallo Lothar,
mit Verknüpfungen via INDEX kann es mit dem Sortieren schwierig werden.
Warum sortierst du deine Ausgangstabelle nicht "einfach" nach Bedarf?
Wenn du hier den Autofilter benutzt, dann ist das immer nur eine Sache von ein paar Klicks.
Wenn du unbedingt die Daten auf verschiedenen Tabellenblättern wiederholen möchtest, dann ist ein Import via Menü Daten --%gt Externe Daten abrufen --> aus anderen Quellen --> von Microsoft Query
zielführend.
Im Dialog dann "Excel-Files" wählen und die Option für den Abfrage-Assistenten aktivieren.
Nach OK die Mitglieder-Datei auswählen und OK
Im Dialog "Spalten auswählen" das Blatt mit den Mitgliederdaten auswählen und alle oder nur einige Spalten hinzufügen. Dann ok
Im folgenden Dialog kannst du bis zu 3 Filter setzen - dann OK
Im folgenden Dialog kannst du nach bis zu 3 Spalten sortieren - dann OK
Unter "Verbindungseigenschaften" gibst du einen sinnvollen Namen ein und aktivierst die Option "Aktualisieren beim Öffnen der Datei". Die anderen Optionen deaktivieren.
Voraussetzungen für die Nutzung der Import-Funktion:
1. Die Spaltentitel in der Mitgliederliste stehn in Zeile 1
2. Die Datei ist immer im gleichen Verzeichnis gespeichert.
Die Makro_Lösung ist im Prinzip auch "einfach". Die kannst du für jede Sortierung mit dem Makro-Rekorder aufzeichnen.
1. Spalten im Blatt "Mitglieder" markieren und kopieren.
2. zum Einfüge-Blatt wechsel und Zelle A1 selektieren, Einfügen
3. Daten im Einfügeblatt sortieren.
Danach muss man dann das Makro noch ein wenig aufräumen und verallgemeinern bezüglich der Zeilen-Nummern.
LG
Franz
Beispiel für Makro:
Sub prcGeburtstag()
' Mitglieder nach Geburtsmonat und Tag sortieren
Dim Zeile As Long
Dim wksZiel As Worksheet
Set wksZiel = Sheets("Geburtstag")
Worksheets("Mitglieder").Columns("A:H").Copy wksZiel.Range("A1")
wksZiel.Select
With wksZiel.UsedRange
Zeile = .Row + .Rows.Count - 1
End With
Application.CutCopyMode = False
wksZiel.Sort.SortFields.Clear
wksZiel.Sort.SortFields.Add Key:=wksZiel.Range("F2:F" & Zeile), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
wksZiel.Sort.SortFields.Add Key:=wksZiel.Range("E2:E" & Zeile), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
wksZiel.Sort.SortFields.Add Key:=wksZiel.Range("G2:G" & Zeile), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With wksZiel.Sort
.SetRange wksZiel.Range("A1:H" & Zeile)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("A2").Select
ActiveWindow.FreezePanes = True
End Sub