Sortierproblem
21.09.2017 12:13:19
Hamzah
Ich habe zwar schon einen sehr guten Beitrag gelesen, den ich auch anwenden kann, aber es stellt sich auch bei mir das Problem der "scheinbaren" Leerzeilen an das Ende zu sortieren.
Derzeit habe ich einen VBA Code zum automatischen sortieren in Verwendung.
Hintergrund:
Arbeitsmappe mit mehreren Arbeitsblättern: Name und Betrag.
Im Blatt "Betrag" werden Namen in Spalten einmalig eingegeben (Name, Vorname, Geburtsdatum, u.a und eine fixe Nummer in "A" zugewiesen
Im Blatt "Name" gebe ich den Datensatz mit SVerweis über diese fixe Nummer in Spalte A ein (füllt dann automatisch die nächsten Spalten mit den Personaldaten aus. D.h. so kann ich die gleiche Person mehrmals eingeben, brauche aber immer nur die zugewiesene Zahl eingeben.
Nun - die Personen wechseln natürlich immer wieder und geraten durcheinander. Daher verwende ich den nachfolgenden Code, der mir den neuen Eintrag dann automatisch an die richtige Stelle und alphabetisch nach Familienname ("Spalte B" ab B2)einsortiert. Das funktioniert tadellos. Bitte nach dem Code weiterlesen!
Private Sub Worksheet_Change(ByVal Target As Range)
'Beschränken der Makroausführung auf den Bereich A2 bis O5000
If Not Application.Intersect(Target, Range("A2:O5000")) Is Nothing Then
'Bereich, auf den sich die Sortierung auswirken soll
Range("A2:O5000").Select
'Sortierkriterien
Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom
'Zelle B2 auswählen
Range("B2").Select
End If
End Sub
Jetzt passiert folgendes:der neue Eintrag wird richtig einsortiert und schwupps, alle "Leerzeilen" wandern nach oben,weil eben die Leerzeilen nicht wirklich leer sind, sondern Formeln enthalten, die sowas wie #NV anzeigen, aber per Formel ausgeblendet sind. # kommt aber beim sortieren vor A, daher sind die Leerzeilen auch oben.
Ich will die aber nach dem automatischen Einsortieren UNTEN haben und auch unten bleiben lassen.
Wie würde mein oben funktionierender Code erweitert werden müssen, um das zu bewerkstelligen bzw. ein zusätzlicher Code im Anschluss an diesen ausschauen? Der Sortierbereich geht mittlerweile von A2:L2000 - zeilenweise, da zusammengehörender Datensatz.
Zusatzinfo:
In Spalte O habe ich momentan eine simple Sortierformel drin, die einfach den scheinbar leeren _
Zeilen eine 2 zuweist, wenn leer, und eine 1 wenn Daten da sind. Aufsteigend sortiert, oder besser gefiltert, stehen die Daten (1) oben und die "leeren" unten. Leider verträgt sich das mit dem Code vom automatischen sortieren nicht und wird daher ignoriert, daher will ich das weglassen und mit einem Zusatzcode oder adaptierten Code lösen, weil diese Filterung natürlich bei Eingabe des nächsten Datensatzes wieder weg ist und die Leerzeilen oben.
Die Überschriftenzeile soll natürlich oben bleiben und die Filterfunktion davon unberührt bleiben.
Für etwas Hilfe wäre ich dankbar. Ein Upload ist leider nicht möglich, da dienstl. Datenschutz und außerdem riesige Datei (Fotos eingebettet - daher auch meine Beschreibung so umfangreich. Sorry! Antwort bitte (auch) per Mail:crocoxyz@gmail.com
lg
Hamzah