Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
940to944
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
940to944
940to944
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Sortieren ohne Duplikete, Leezellen

Sortieren ohne Duplikete, Leezellen
17.01.2008 17:12:00
Anja
Liebes Forum,
ich muss eine Liste alphabetisch sortieren, ohne Leerzeilen und Duplikate. Die Liste wir durch eine Verknüpfung aus einer anderen Datei in das Arbeitsblatt eingetragen. Die Einträge erfolgen nicht in einer bestimmten Reihenfolge. Durch die Verknüpfung sind Leerzeilen und Duplikate vorhanden.
Ich habe eine tolle Formel im Internet gefunden, die genau das macht. Leider dauert es ewig, bis die Liste sortiert ist, weil sie bis zu 6.000 Einträge enthalten kann. Das scheint bei Arrayformeln wohl so zu sein, obwohl es eine Lösung mit Hilfsspalte ist.
{=SUMME(WENN(P$2:P$6000 < P2;1))+(P2="")*6000}
=INDIREKT("P"&VERGLEICH(KKLEINSTE(K$1:K$5996;ZEILE());K$1:K$6000;0))
Gibt es eine Möglichkeit per VBA oder einer anderen Formel die Liste schneller automatisch zu sortieren?
Ich bedanke mich schon mal im Voraus für Euer Kopfzerbrechen…
Gruß
Anja
PS Ich arbeite mit Excel XP und meine VBA Kenntnisse sind bescheiden. Bisher habe ich immer nur kleine Makros über den Macrorecorder aufgezeichnet.

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sortieren ohne Duplikete, Leezellen
17.01.2008 17:56:53
Peter
Hallo Anja,
mit ein paar Anpassungen sollte es das Makro tun:


Option Explicit
Public Sub SortOhneDoppelte()
Dim lLetzte  As Long
Dim lZeile   As Long
    Application.ScreenUpdating = True
   With Worksheets("Tabelle1") ' <== Tabellenblattnamen ggf. anpassen !!!
'       die letzte belegte Zelle in Spalte 1 = A feststellen
      lLetzte = .Cells(Rows.Count, 1).End(xlUp).Row
'       die Tabelle von unten her nach doppelten durchsuchen und diese löschen
      For lZeile = lLetzte To 1 Step -1
         If Application.WorksheetFunction.CountIf(.Columns(1), _
            .Cells(lZeile, 1).Value) > 1 Then
            Rows(lZeile).Delete Shift:=xlUp
         End If
      Next lZeile
'       die letzte belegte Zelle in Spalte 1 = A nach dem Löschen feststellen
      lLetzte = .Cells(Rows.Count, 1).End(xlUp).Row
'       die Daten nach Spalte A, B, C aufsteigend sortieren
      .Range("A1:G" & lLetzte).Sort _
         Key1:=Range("A1"), Order1:=xlAscending, _
         Key2:=Range("B1"), Order2:=xlAscending, _
         Key3:=Range("C1"), Order3:=xlAscending, _
         Header:=xlGuess, OrderCustom:=1, _
         MatchCase:=False, Orientation:=xlTopToBottom
   End With
   Application.ScreenUpdating = True
End Sub 


Gruß Peter

Anzeige
AW: Sortieren ohne Duplikete, Leezellen
22.01.2008 16:19:00
Anja
Hallo Peter,
ich bin leider erst heute dazu gekommen Dein Makro auszuprobieren. Es funktioniert soweit prima.
Wie kriege ich es hin, dass es automatisch läuft? In die verknüpfte Datei werden Daten eingetragen, daher ändern sich ständig die Verknüpfungen. Durch die von mir verwendete Formel werden die entsprechenden Daten immer automatisch aktualisiert.
Bei den Dateien handelt es sich um ein Rechnungsbuch und eine Datei in der Kontoauszüge eingetragen werden. Die Verknüpfung läuft so, dass nur die noch offenen Rechnungen aus dem Rechnungsbuch untereinander in der Kontodatei angezeigt werden. Da ich nicht weiß, wie viele Rechnungen gebucht werden, sind eben Leerzeilen dazwischen.
Meine Formel ordnet die Belege nach Namen sortiert in eine Spalte an. (Ohne Leerzeilen). Durch eine Verkettung werden diese Rechnungen in einer Liste (Gültigkeit) angezeigt und können ausgewählt werden. Wird eine Rechnung ausgewählt und gilt als bezahlt, verschwindet sie aus dieser Liste und wird im Rechnungsbuch als bezahlt eingetragen. (Mit Datum und Betrag).
Das klappt soweit ganz gut. Leider dauert der Prozess eben einfach zu lange. Die Verknüpfungen gehen schnell, aber die Liste, aus der die unbezahlten Rechnungen ausgewählt werden, wird einfach nicht schnell genug aktualisiert.
Das liegt zum einen an der großen Datenmenge und zum anderen an meiner sicherlich etwas umständlichen Programmierung. Die meisten Prozesse laufen über Formeln, da ich in VBA noch nicht so fit bin. Ich will es nach und nach umprogrammieren.
Vielleicht fällt Dir da noch etwas Sinnvolles ein. Wenn nicht, möchte ich mich trotzdem für Deine Hilfe bedanken und wünschte mir ich hätte Dein Wissen…
Liebe Grüße
Anja
Anzeige

148 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige