Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Excel Filter 10000 Limit? Lösung?

Forumthread: Excel Filter 10000 Limit? Lösung?

Excel Filter 10000 Limit? Lösung?
22.05.2022 17:17:19
Daniel

Hi Leute,

ich habe 120000 Einträge, und davon mit Filter bleiben 25000 Einheiten übrig. Wenn ich die gefilterten 25000 Werte nun versuche zu kopieren, dann weigert sich Excel mit dem Hinweis, dass "der Datenbezug zu komplex ist". Das hängt wohl mit den maximal 10000 Werten die der Filter abkann zusammen.
Er kopiert die Werte zwar aber eben nicht gefiltert sondern mit allen Werten (also statt 25000 bleiben beim Einfügen woanders dann wieder 120000 übrig).

95000 Zellen davon sind Leerzeilen/Zellen. Ich könnte höchstens die ganze Spalte kopieren und in eine weitere Spalte einfügen und Excel dann dort in dieser kopierten Spalte die leeren Zellen herauslöschen lassen via Makro, dann sind es zwar immer noch 25000 die übrig bleiben aber die kann man ja dann kopieren, da kein Filter mehr benötigt wird. Da 95000 Leerzellen nicht mal eben in 3 Sekunden gelöscht sind, wollte ich nochmal nach einer eleganteren Lösung fragen...

hat jemand Rat?

nach oben  nach unten

Betrifft: AW: Excel Filter 10000 Limit? Lösung?
Moin!
>>Da 95000 Leerzellen nicht mal eben in 3 Sekunden gelöscht sind<<
Spalte A ab A2 20.000 Werte und 100.000 Leerzellen.
Hilfsspalte B
B1: 0
B2:B120001 =WENN(A2="";0;ZEILE())
Spalte B kopieren und als Wert einfügen
Auf Spalte B Duplikate entfernen durchführen.
Dauert auf meiner 7 Jahre alten Möhre 0,344 Sekunden!

Sub Quickie()
Dim Start#
Range("B1") = 0
With Range("B2:B120001")
.Formula = "=If(A2="""",0,Row())"
.Value = .Value
End With
Start = Timer
Range("A1").CurrentRegion.RemoveDuplicates 2
Debug.Print Format(Timer - Start, "0.000 sec")
End Sub
Gruß Ralf

nach oben  nach unten

Betrifft: Das ist ja der Hammer Ralf!
Hi Ralf,

au weia, die Funktion kannte ich noch gar nicht bzw. habe das noch nie benutzt ("Duplikate entfernen"). Ich arbeite mit Excel seit 20 Jahren, lol. Vielen Dank!! Das ist ja super!!

nach oben  nach unten

Betrifft: AW: Excel Filter 10000 Limit? Lösung?
Hallo,

wenn es wirklich Leerzeilen sind probier mal den Einzeiler:


Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Gruß ...

nach oben  nach unten

Betrifft: AW: Excel Filter 10000 Limit? Lösung?
Hallo Matthias!
Das funktioniert zwar, dauert bei meiner Beispieldatei aber 187,012 sec
Dies ist dann schlappe 543mal langsamer als die RemoveDuplicates-Methode!

Gruß Ralf

nach oben  nach unten

Betrifft: Update
Ich habe jetzt mal diverse Beschleunigungen probiert
• Berechnung manuell
• Screenupdating ausgeschaltet
• Bereich verkleinert
Ergebnis: "Nur noch" 132 Sekunden (statt der 0,3 Sekunden beim Duplikate entfernen).

Wer es nachstellen will:
Konstruktionsmakro:

Sub Konstruktion()
Range("A1") = "SpalteA"
With Range("A2:A120001")
.Formula = "=If(Mod(Row(),6)=0,Row(),0)"
.Value = .Value
End With
End Sub
Danach manuell
• Strg+h
• Suchen nach: 0
• Ersetzen durch: nichts
• Alle ersetzen

Mein SpecialCells-Makro:

Sub SpecCells()
Dim Start#
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Start = Timer
Range("A2:A120001").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Debug.Print Format(Timer - Start, "0.000 sec")
End Sub

nach oben  nach unten

Betrifft: AW: Update
Ja, perfekt. So in etwa wollte ich das auch hinkriegen - sofern mit entirerow.delete. Aber Deine erste Variante ist auch deswegen besser, da nur eine Spalte betroffen ist und nicht die entirerow gelöscht wird.

Leute wie Du erleichtern einem das Leben. Das ist wirklich viel wert, danke Dir

nach oben  nach unten

Betrifft: AW: Excel Filter 10000 Limit? Lösung?
Hi Mathias,

ja, danke, genau das Zeile für das Makro hatte ich vorher gesucht. Ich gucke mal was ich am ende nutze. Denke die Idee von Ralf ist noch ein bisschen schneller.

Schönen Sonntag Dir

nach oben  nach unten

Betrifft: AW: Excel Filter 10000 Limit? Lösung?
Hi

Die 10.000 Werte, die im Autofilter angezeigt werden, haben damit nichts zu tun.
Das Problem ist nicht die Anzahl der Zeilen, sondern die Verteilung der zu kopieren den Zeilen.
Der für Excel kritische Wert ist die Anzahl der lückenlos zusammenhängenden Blöcke, die kopiert oder gelöscht werden sollen.
Willst du beispielsweise die Zeilen 1 und 3 kopieren oder löschen, dann ist das für Excel doppelt so "anstrengend" wie das löschen aller Zeilen von 1 bis 10.000, weil es eben zwei Blöcke sind und nicht einer. Die Größe dieser Blöcke ist egal, wichtig ist die Anzahl.

Dh deine Kopier- oder Löschaktion funktioniert problemlos und sehr schnell mit beliebigen Datenmengen, wenn du vor dem Filtern die Liste so sortiertst, dass die gefilterten Zeilen einen bzw so wenig wie möglich lückenlos zusammenhängenden Blöcke bilden.

Der Grün hierfür ist, das Excel beim Löschen von Zeilen im Hintergrund alle geöffneten Exceldateien nach Formeln durchsucht, die Bezüge auf die gelöschten Zellen enthalten um die Formeln dann entsprechend anzupassen. (Der Bezug auf A1:A10 wird zu A1:A9, wenn du Zeile 7 löschst)
Das Problem ist das Excel dies für jeden gelöschten Block erneut durchführen muss. Je weniger Blöcke du hast, um so schneller gehts.

Wenn man nicht sortieren kann oder will, verwendet man zum löschen von Zellen mit Bedingung wie von den anderen gezeigt das Duplikate entfernen. (Was übrigens auch von Hand ohne Makro verwendbar ist)
Dieses ist beim Löschen deswegen so schnell, weil es diese Hintergrundfunktion (Anpassen der Formeln) des normalen Löschens nicht ausführt und damit viel Aufwand spart.

Gruß Daniel

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel Filter 10000 Limit? Lösung?
22.05.2022 17:17:19
Daniel
Moin!
>>Da 95000 Leerzellen nicht mal eben in 3 Sekunden gelöscht sind<<
Spalte A ab A2 20.000 Werte und 100.000 Leerzellen.
Hilfsspalte B
B1: 0
B2:B120001 =WENN(A2="";0;ZEILE())
Spalte B kopieren und als Wert einfügen
Auf Spalte B Duplikate entfernen durchführen.
Dauert auf meiner 7 Jahre alten Möhre 0,344 Sekunden!

Sub Quickie()
Dim Start#
Range("B1") = 0
With Range("B2:B120001")
.Formula = "=If(A2="""",0,Row())"
.Value = .Value
End With
Start = Timer
Range("A1").CurrentRegion.RemoveDuplicates 2
Debug.Print Format(Timer - Start, "0.000 sec")
End Sub
Gruß Ralf

nach oben  nach unten

Betrifft: Das ist ja der Hammer Ralf!
Hi Ralf,

au weia, die Funktion kannte ich noch gar nicht bzw. habe das noch nie benutzt ("Duplikate entfernen"). Ich arbeite mit Excel seit 20 Jahren, lol. Vielen Dank!! Das ist ja super!!

nach oben  nach unten

Betrifft: AW: Excel Filter 10000 Limit? Lösung?
Hallo,

wenn es wirklich Leerzeilen sind probier mal den Einzeiler:


Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Gruß ...

nach oben  nach unten

Betrifft: AW: Excel Filter 10000 Limit? Lösung?
Hallo Matthias!
Das funktioniert zwar, dauert bei meiner Beispieldatei aber 187,012 sec
Dies ist dann schlappe 543mal langsamer als die RemoveDuplicates-Methode!

Gruß Ralf

nach oben  nach unten

Betrifft: Update
Ich habe jetzt mal diverse Beschleunigungen probiert
• Berechnung manuell
• Screenupdating ausgeschaltet
• Bereich verkleinert
Ergebnis: "Nur noch" 132 Sekunden (statt der 0,3 Sekunden beim Duplikate entfernen).

Wer es nachstellen will:
Konstruktionsmakro:

Sub Konstruktion()
Range("A1") = "SpalteA"
With Range("A2:A120001")
.Formula = "=If(Mod(Row(),6)=0,Row(),0)"
.Value = .Value
End With
End Sub
Danach manuell
• Strg+h
• Suchen nach: 0
• Ersetzen durch: nichts
• Alle ersetzen

Mein SpecialCells-Makro:

Sub SpecCells()
Dim Start#
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Start = Timer
Range("A2:A120001").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Debug.Print Format(Timer - Start, "0.000 sec")
End Sub

nach oben  nach unten

Betrifft: AW: Update
Ja, perfekt. So in etwa wollte ich das auch hinkriegen - sofern mit entirerow.delete. Aber Deine erste Variante ist auch deswegen besser, da nur eine Spalte betroffen ist und nicht die entirerow gelöscht wird.

Leute wie Du erleichtern einem das Leben. Das ist wirklich viel wert, danke Dir

nach oben  nach unten

Betrifft: AW: Excel Filter 10000 Limit? Lösung?
Hi Mathias,

ja, danke, genau das Zeile für das Makro hatte ich vorher gesucht. Ich gucke mal was ich am ende nutze. Denke die Idee von Ralf ist noch ein bisschen schneller.

Schönen Sonntag Dir

nach oben  nach unten

Betrifft: AW: Excel Filter 10000 Limit? Lösung?
Hi

Die 10.000 Werte, die im Autofilter angezeigt werden, haben damit nichts zu tun.
Das Problem ist nicht die Anzahl der Zeilen, sondern die Verteilung der zu kopieren den Zeilen.
Der für Excel kritische Wert ist die Anzahl der lückenlos zusammenhängenden Blöcke, die kopiert oder gelöscht werden sollen.
Willst du beispielsweise die Zeilen 1 und 3 kopieren oder löschen, dann ist das für Excel doppelt so "anstrengend" wie das löschen aller Zeilen von 1 bis 10.000, weil es eben zwei Blöcke sind und nicht einer. Die Größe dieser Blöcke ist egal, wichtig ist die Anzahl.

Dh deine Kopier- oder Löschaktion funktioniert problemlos und sehr schnell mit beliebigen Datenmengen, wenn du vor dem Filtern die Liste so sortiertst, dass die gefilterten Zeilen einen bzw so wenig wie möglich lückenlos zusammenhängenden Blöcke bilden.

Der Grün hierfür ist, das Excel beim Löschen von Zeilen im Hintergrund alle geöffneten Exceldateien nach Formeln durchsucht, die Bezüge auf die gelöschten Zellen enthalten um die Formeln dann entsprechend anzupassen. (Der Bezug auf A1:A10 wird zu A1:A9, wenn du Zeile 7 löschst)
Das Problem ist das Excel dies für jeden gelöschten Block erneut durchführen muss. Je weniger Blöcke du hast, um so schneller gehts.

Wenn man nicht sortieren kann oder will, verwendet man zum löschen von Zellen mit Bedingung wie von den anderen gezeigt das Duplikate entfernen. (Was übrigens auch von Hand ohne Makro verwendbar ist)
Dieses ist beim Löschen deswegen so schnell, weil es diese Hintergrundfunktion (Anpassen der Formeln) des normalen Löschens nicht ausführt und damit viel Aufwand spart.

Gruß Daniel

Anzeige
Das ist ja der Hammer Ralf!
22.05.2022 17:17:19
Daniel
Hi Ralf,

au weia, die Funktion kannte ich noch gar nicht bzw. habe das noch nie benutzt ("Duplikate entfernen"). Ich arbeite mit Excel seit 20 Jahren, lol. Vielen Dank!! Das ist ja super!!

nach oben  nach unten

Betrifft: AW: Excel Filter 10000 Limit? Lösung?
Hallo,

wenn es wirklich Leerzeilen sind probier mal den Einzeiler:


Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Gruß ...

nach oben  nach unten

Betrifft: AW: Excel Filter 10000 Limit? Lösung?
Hallo Matthias!
Das funktioniert zwar, dauert bei meiner Beispieldatei aber 187,012 sec
Dies ist dann schlappe 543mal langsamer als die RemoveDuplicates-Methode!

Gruß Ralf

nach oben  nach unten

Betrifft: Update
Ich habe jetzt mal diverse Beschleunigungen probiert
• Berechnung manuell
• Screenupdating ausgeschaltet
• Bereich verkleinert
Ergebnis: "Nur noch" 132 Sekunden (statt der 0,3 Sekunden beim Duplikate entfernen).

Wer es nachstellen will:
Konstruktionsmakro:

Sub Konstruktion()
Range("A1") = "SpalteA"
With Range("A2:A120001")
.Formula = "=If(Mod(Row(),6)=0,Row(),0)"
.Value = .Value
End With
End Sub
Danach manuell
• Strg+h
• Suchen nach: 0
• Ersetzen durch: nichts
• Alle ersetzen

Mein SpecialCells-Makro:

Sub SpecCells()
Dim Start#
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Start = Timer
Range("A2:A120001").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Debug.Print Format(Timer - Start, "0.000 sec")
End Sub

nach oben  nach unten

Betrifft: AW: Update
Ja, perfekt. So in etwa wollte ich das auch hinkriegen - sofern mit entirerow.delete. Aber Deine erste Variante ist auch deswegen besser, da nur eine Spalte betroffen ist und nicht die entirerow gelöscht wird.

Leute wie Du erleichtern einem das Leben. Das ist wirklich viel wert, danke Dir

nach oben  nach unten

Betrifft: AW: Excel Filter 10000 Limit? Lösung?
Hi Mathias,

ja, danke, genau das Zeile für das Makro hatte ich vorher gesucht. Ich gucke mal was ich am ende nutze. Denke die Idee von Ralf ist noch ein bisschen schneller.

Schönen Sonntag Dir

nach oben  nach unten

Betrifft: AW: Excel Filter 10000 Limit? Lösung?
Hi

Die 10.000 Werte, die im Autofilter angezeigt werden, haben damit nichts zu tun.
Das Problem ist nicht die Anzahl der Zeilen, sondern die Verteilung der zu kopieren den Zeilen.
Der für Excel kritische Wert ist die Anzahl der lückenlos zusammenhängenden Blöcke, die kopiert oder gelöscht werden sollen.
Willst du beispielsweise die Zeilen 1 und 3 kopieren oder löschen, dann ist das für Excel doppelt so "anstrengend" wie das löschen aller Zeilen von 1 bis 10.000, weil es eben zwei Blöcke sind und nicht einer. Die Größe dieser Blöcke ist egal, wichtig ist die Anzahl.

Dh deine Kopier- oder Löschaktion funktioniert problemlos und sehr schnell mit beliebigen Datenmengen, wenn du vor dem Filtern die Liste so sortiertst, dass die gefilterten Zeilen einen bzw so wenig wie möglich lückenlos zusammenhängenden Blöcke bilden.

Der Grün hierfür ist, das Excel beim Löschen von Zeilen im Hintergrund alle geöffneten Exceldateien nach Formeln durchsucht, die Bezüge auf die gelöschten Zellen enthalten um die Formeln dann entsprechend anzupassen. (Der Bezug auf A1:A10 wird zu A1:A9, wenn du Zeile 7 löschst)
Das Problem ist das Excel dies für jeden gelöschten Block erneut durchführen muss. Je weniger Blöcke du hast, um so schneller gehts.

Wenn man nicht sortieren kann oder will, verwendet man zum löschen von Zellen mit Bedingung wie von den anderen gezeigt das Duplikate entfernen. (Was übrigens auch von Hand ohne Makro verwendbar ist)
Dieses ist beim Löschen deswegen so schnell, weil es diese Hintergrundfunktion (Anpassen der Formeln) des normalen Löschens nicht ausführt und damit viel Aufwand spart.

Gruß Daniel

Anzeige
AW: Excel Filter 10000 Limit? Lösung?
22.05.2022 17:17:19
Daniel
Hallo,

wenn es wirklich Leerzeilen sind probier mal den Einzeiler:


Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Gruß ...

nach oben  nach unten

Betrifft: AW: Excel Filter 10000 Limit? Lösung?
Hallo Matthias!
Das funktioniert zwar, dauert bei meiner Beispieldatei aber 187,012 sec
Dies ist dann schlappe 543mal langsamer als die RemoveDuplicates-Methode!

Gruß Ralf

nach oben  nach unten

Betrifft: Update
Ich habe jetzt mal diverse Beschleunigungen probiert
• Berechnung manuell
• Screenupdating ausgeschaltet
• Bereich verkleinert
Ergebnis: "Nur noch" 132 Sekunden (statt der 0,3 Sekunden beim Duplikate entfernen).

Wer es nachstellen will:
Konstruktionsmakro:

Sub Konstruktion()
Range("A1") = "SpalteA"
With Range("A2:A120001")
.Formula = "=If(Mod(Row(),6)=0,Row(),0)"
.Value = .Value
End With
End Sub
Danach manuell
• Strg+h
• Suchen nach: 0
• Ersetzen durch: nichts
• Alle ersetzen

Mein SpecialCells-Makro:

Sub SpecCells()
Dim Start#
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Start = Timer
Range("A2:A120001").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Debug.Print Format(Timer - Start, "0.000 sec")
End Sub

nach oben  nach unten

Betrifft: AW: Update
Ja, perfekt. So in etwa wollte ich das auch hinkriegen - sofern mit entirerow.delete. Aber Deine erste Variante ist auch deswegen besser, da nur eine Spalte betroffen ist und nicht die entirerow gelöscht wird.

Leute wie Du erleichtern einem das Leben. Das ist wirklich viel wert, danke Dir

nach oben  nach unten

Betrifft: AW: Excel Filter 10000 Limit? Lösung?
Hi Mathias,

ja, danke, genau das Zeile für das Makro hatte ich vorher gesucht. Ich gucke mal was ich am ende nutze. Denke die Idee von Ralf ist noch ein bisschen schneller.

Schönen Sonntag Dir

nach oben  nach unten

Betrifft: AW: Excel Filter 10000 Limit? Lösung?
Hi

Die 10.000 Werte, die im Autofilter angezeigt werden, haben damit nichts zu tun.
Das Problem ist nicht die Anzahl der Zeilen, sondern die Verteilung der zu kopieren den Zeilen.
Der für Excel kritische Wert ist die Anzahl der lückenlos zusammenhängenden Blöcke, die kopiert oder gelöscht werden sollen.
Willst du beispielsweise die Zeilen 1 und 3 kopieren oder löschen, dann ist das für Excel doppelt so "anstrengend" wie das löschen aller Zeilen von 1 bis 10.000, weil es eben zwei Blöcke sind und nicht einer. Die Größe dieser Blöcke ist egal, wichtig ist die Anzahl.

Dh deine Kopier- oder Löschaktion funktioniert problemlos und sehr schnell mit beliebigen Datenmengen, wenn du vor dem Filtern die Liste so sortiertst, dass die gefilterten Zeilen einen bzw so wenig wie möglich lückenlos zusammenhängenden Blöcke bilden.

Der Grün hierfür ist, das Excel beim Löschen von Zeilen im Hintergrund alle geöffneten Exceldateien nach Formeln durchsucht, die Bezüge auf die gelöschten Zellen enthalten um die Formeln dann entsprechend anzupassen. (Der Bezug auf A1:A10 wird zu A1:A9, wenn du Zeile 7 löschst)
Das Problem ist das Excel dies für jeden gelöschten Block erneut durchführen muss. Je weniger Blöcke du hast, um so schneller gehts.

Wenn man nicht sortieren kann oder will, verwendet man zum löschen von Zellen mit Bedingung wie von den anderen gezeigt das Duplikate entfernen. (Was übrigens auch von Hand ohne Makro verwendbar ist)
Dieses ist beim Löschen deswegen so schnell, weil es diese Hintergrundfunktion (Anpassen der Formeln) des normalen Löschens nicht ausführt und damit viel Aufwand spart.

Gruß Daniel

Anzeige
AW: Excel Filter 10000 Limit? Lösung?
22.05.2022 17:17:19
Daniel
Hallo Matthias!
Das funktioniert zwar, dauert bei meiner Beispieldatei aber 187,012 sec
Dies ist dann schlappe 543mal langsamer als die RemoveDuplicates-Methode!

Gruß Ralf

nach oben  nach unten

Betrifft: Update
Ich habe jetzt mal diverse Beschleunigungen probiert
• Berechnung manuell
• Screenupdating ausgeschaltet
• Bereich verkleinert
Ergebnis: "Nur noch" 132 Sekunden (statt der 0,3 Sekunden beim Duplikate entfernen).

Wer es nachstellen will:
Konstruktionsmakro:

Sub Konstruktion()
Range("A1") = "SpalteA"
With Range("A2:A120001")
.Formula = "=If(Mod(Row(),6)=0,Row(),0)"
.Value = .Value
End With
End Sub
Danach manuell
• Strg+h
• Suchen nach: 0
• Ersetzen durch: nichts
• Alle ersetzen

Mein SpecialCells-Makro:

Sub SpecCells()
Dim Start#
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Start = Timer
Range("A2:A120001").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Debug.Print Format(Timer - Start, "0.000 sec")
End Sub

nach oben  nach unten

Betrifft: AW: Update
Ja, perfekt. So in etwa wollte ich das auch hinkriegen - sofern mit entirerow.delete. Aber Deine erste Variante ist auch deswegen besser, da nur eine Spalte betroffen ist und nicht die entirerow gelöscht wird.

Leute wie Du erleichtern einem das Leben. Das ist wirklich viel wert, danke Dir

nach oben  nach unten

Betrifft: AW: Excel Filter 10000 Limit? Lösung?
Hi Mathias,

ja, danke, genau das Zeile für das Makro hatte ich vorher gesucht. Ich gucke mal was ich am ende nutze. Denke die Idee von Ralf ist noch ein bisschen schneller.

Schönen Sonntag Dir

nach oben  nach unten

Betrifft: AW: Excel Filter 10000 Limit? Lösung?
Hi

Die 10.000 Werte, die im Autofilter angezeigt werden, haben damit nichts zu tun.
Das Problem ist nicht die Anzahl der Zeilen, sondern die Verteilung der zu kopieren den Zeilen.
Der für Excel kritische Wert ist die Anzahl der lückenlos zusammenhängenden Blöcke, die kopiert oder gelöscht werden sollen.
Willst du beispielsweise die Zeilen 1 und 3 kopieren oder löschen, dann ist das für Excel doppelt so "anstrengend" wie das löschen aller Zeilen von 1 bis 10.000, weil es eben zwei Blöcke sind und nicht einer. Die Größe dieser Blöcke ist egal, wichtig ist die Anzahl.

Dh deine Kopier- oder Löschaktion funktioniert problemlos und sehr schnell mit beliebigen Datenmengen, wenn du vor dem Filtern die Liste so sortiertst, dass die gefilterten Zeilen einen bzw so wenig wie möglich lückenlos zusammenhängenden Blöcke bilden.

Der Grün hierfür ist, das Excel beim Löschen von Zeilen im Hintergrund alle geöffneten Exceldateien nach Formeln durchsucht, die Bezüge auf die gelöschten Zellen enthalten um die Formeln dann entsprechend anzupassen. (Der Bezug auf A1:A10 wird zu A1:A9, wenn du Zeile 7 löschst)
Das Problem ist das Excel dies für jeden gelöschten Block erneut durchführen muss. Je weniger Blöcke du hast, um so schneller gehts.

Wenn man nicht sortieren kann oder will, verwendet man zum löschen von Zellen mit Bedingung wie von den anderen gezeigt das Duplikate entfernen. (Was übrigens auch von Hand ohne Makro verwendbar ist)
Dieses ist beim Löschen deswegen so schnell, weil es diese Hintergrundfunktion (Anpassen der Formeln) des normalen Löschens nicht ausführt und damit viel Aufwand spart.

Gruß Daniel

Anzeige
Update
22.05.2022 17:17:19
Daniel
Ich habe jetzt mal diverse Beschleunigungen probiert
• Berechnung manuell
• Screenupdating ausgeschaltet
• Bereich verkleinert
Ergebnis: "Nur noch" 132 Sekunden (statt der 0,3 Sekunden beim Duplikate entfernen).

Wer es nachstellen will:
Konstruktionsmakro:

Sub Konstruktion()
Range("A1") = "SpalteA"
With Range("A2:A120001")
.Formula = "=If(Mod(Row(),6)=0,Row(),0)"
.Value = .Value
End With
End Sub
Danach manuell
• Strg+h
• Suchen nach: 0
• Ersetzen durch: nichts
• Alle ersetzen

Mein SpecialCells-Makro:

Sub SpecCells()
Dim Start#
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Start = Timer
Range("A2:A120001").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Debug.Print Format(Timer - Start, "0.000 sec")
End Sub

nach oben  nach unten

Betrifft: AW: Update
Ja, perfekt. So in etwa wollte ich das auch hinkriegen - sofern mit entirerow.delete. Aber Deine erste Variante ist auch deswegen besser, da nur eine Spalte betroffen ist und nicht die entirerow gelöscht wird.

Leute wie Du erleichtern einem das Leben. Das ist wirklich viel wert, danke Dir

nach oben  nach unten

Betrifft: AW: Excel Filter 10000 Limit? Lösung?
Hi Mathias,

ja, danke, genau das Zeile für das Makro hatte ich vorher gesucht. Ich gucke mal was ich am ende nutze. Denke die Idee von Ralf ist noch ein bisschen schneller.

Schönen Sonntag Dir

nach oben  nach unten

Betrifft: AW: Excel Filter 10000 Limit? Lösung?
Hi

Die 10.000 Werte, die im Autofilter angezeigt werden, haben damit nichts zu tun.
Das Problem ist nicht die Anzahl der Zeilen, sondern die Verteilung der zu kopieren den Zeilen.
Der für Excel kritische Wert ist die Anzahl der lückenlos zusammenhängenden Blöcke, die kopiert oder gelöscht werden sollen.
Willst du beispielsweise die Zeilen 1 und 3 kopieren oder löschen, dann ist das für Excel doppelt so "anstrengend" wie das löschen aller Zeilen von 1 bis 10.000, weil es eben zwei Blöcke sind und nicht einer. Die Größe dieser Blöcke ist egal, wichtig ist die Anzahl.

Dh deine Kopier- oder Löschaktion funktioniert problemlos und sehr schnell mit beliebigen Datenmengen, wenn du vor dem Filtern die Liste so sortiertst, dass die gefilterten Zeilen einen bzw so wenig wie möglich lückenlos zusammenhängenden Blöcke bilden.

Der Grün hierfür ist, das Excel beim Löschen von Zeilen im Hintergrund alle geöffneten Exceldateien nach Formeln durchsucht, die Bezüge auf die gelöschten Zellen enthalten um die Formeln dann entsprechend anzupassen. (Der Bezug auf A1:A10 wird zu A1:A9, wenn du Zeile 7 löschst)
Das Problem ist das Excel dies für jeden gelöschten Block erneut durchführen muss. Je weniger Blöcke du hast, um so schneller gehts.

Wenn man nicht sortieren kann oder will, verwendet man zum löschen von Zellen mit Bedingung wie von den anderen gezeigt das Duplikate entfernen. (Was übrigens auch von Hand ohne Makro verwendbar ist)
Dieses ist beim Löschen deswegen so schnell, weil es diese Hintergrundfunktion (Anpassen der Formeln) des normalen Löschens nicht ausführt und damit viel Aufwand spart.

Gruß Daniel

Anzeige
AW: Update
22.05.2022 17:17:19
Daniel
Ja, perfekt. So in etwa wollte ich das auch hinkriegen - sofern mit entirerow.delete. Aber Deine erste Variante ist auch deswegen besser, da nur eine Spalte betroffen ist und nicht die entirerow gelöscht wird.

Leute wie Du erleichtern einem das Leben. Das ist wirklich viel wert, danke Dir

nach oben  nach unten

Betrifft: AW: Excel Filter 10000 Limit? Lösung?
Hi Mathias,

ja, danke, genau das Zeile für das Makro hatte ich vorher gesucht. Ich gucke mal was ich am ende nutze. Denke die Idee von Ralf ist noch ein bisschen schneller.

Schönen Sonntag Dir

nach oben  nach unten

Betrifft: AW: Excel Filter 10000 Limit? Lösung?
Hi

Die 10.000 Werte, die im Autofilter angezeigt werden, haben damit nichts zu tun.
Das Problem ist nicht die Anzahl der Zeilen, sondern die Verteilung der zu kopieren den Zeilen.
Der für Excel kritische Wert ist die Anzahl der lückenlos zusammenhängenden Blöcke, die kopiert oder gelöscht werden sollen.
Willst du beispielsweise die Zeilen 1 und 3 kopieren oder löschen, dann ist das für Excel doppelt so "anstrengend" wie das löschen aller Zeilen von 1 bis 10.000, weil es eben zwei Blöcke sind und nicht einer. Die Größe dieser Blöcke ist egal, wichtig ist die Anzahl.

Dh deine Kopier- oder Löschaktion funktioniert problemlos und sehr schnell mit beliebigen Datenmengen, wenn du vor dem Filtern die Liste so sortiertst, dass die gefilterten Zeilen einen bzw so wenig wie möglich lückenlos zusammenhängenden Blöcke bilden.

Der Grün hierfür ist, das Excel beim Löschen von Zeilen im Hintergrund alle geöffneten Exceldateien nach Formeln durchsucht, die Bezüge auf die gelöschten Zellen enthalten um die Formeln dann entsprechend anzupassen. (Der Bezug auf A1:A10 wird zu A1:A9, wenn du Zeile 7 löschst)
Das Problem ist das Excel dies für jeden gelöschten Block erneut durchführen muss. Je weniger Blöcke du hast, um so schneller gehts.

Wenn man nicht sortieren kann oder will, verwendet man zum löschen von Zellen mit Bedingung wie von den anderen gezeigt das Duplikate entfernen. (Was übrigens auch von Hand ohne Makro verwendbar ist)
Dieses ist beim Löschen deswegen so schnell, weil es diese Hintergrundfunktion (Anpassen der Formeln) des normalen Löschens nicht ausführt und damit viel Aufwand spart.

Gruß Daniel

Anzeige
AW: Excel Filter 10000 Limit? Lösung?
22.05.2022 17:17:19
Daniel
Hi Mathias,

ja, danke, genau das Zeile für das Makro hatte ich vorher gesucht. Ich gucke mal was ich am ende nutze. Denke die Idee von Ralf ist noch ein bisschen schneller.

Schönen Sonntag Dir

nach oben  nach unten

Betrifft: AW: Excel Filter 10000 Limit? Lösung?
Hi

Die 10.000 Werte, die im Autofilter angezeigt werden, haben damit nichts zu tun.
Das Problem ist nicht die Anzahl der Zeilen, sondern die Verteilung der zu kopieren den Zeilen.
Der für Excel kritische Wert ist die Anzahl der lückenlos zusammenhängenden Blöcke, die kopiert oder gelöscht werden sollen.
Willst du beispielsweise die Zeilen 1 und 3 kopieren oder löschen, dann ist das für Excel doppelt so "anstrengend" wie das löschen aller Zeilen von 1 bis 10.000, weil es eben zwei Blöcke sind und nicht einer. Die Größe dieser Blöcke ist egal, wichtig ist die Anzahl.

Dh deine Kopier- oder Löschaktion funktioniert problemlos und sehr schnell mit beliebigen Datenmengen, wenn du vor dem Filtern die Liste so sortiertst, dass die gefilterten Zeilen einen bzw so wenig wie möglich lückenlos zusammenhängenden Blöcke bilden.

Der Grün hierfür ist, das Excel beim Löschen von Zeilen im Hintergrund alle geöffneten Exceldateien nach Formeln durchsucht, die Bezüge auf die gelöschten Zellen enthalten um die Formeln dann entsprechend anzupassen. (Der Bezug auf A1:A10 wird zu A1:A9, wenn du Zeile 7 löschst)
Das Problem ist das Excel dies für jeden gelöschten Block erneut durchführen muss. Je weniger Blöcke du hast, um so schneller gehts.

Wenn man nicht sortieren kann oder will, verwendet man zum löschen von Zellen mit Bedingung wie von den anderen gezeigt das Duplikate entfernen. (Was übrigens auch von Hand ohne Makro verwendbar ist)
Dieses ist beim Löschen deswegen so schnell, weil es diese Hintergrundfunktion (Anpassen der Formeln) des normalen Löschens nicht ausführt und damit viel Aufwand spart.

Gruß Daniel

Anzeige
AW: Excel Filter 10000 Limit? Lösung?
22.05.2022 17:17:19
Daniel
Hi

Die 10.000 Werte, die im Autofilter angezeigt werden, haben damit nichts zu tun.
Das Problem ist nicht die Anzahl der Zeilen, sondern die Verteilung der zu kopieren den Zeilen.
Der für Excel kritische Wert ist die Anzahl der lückenlos zusammenhängenden Blöcke, die kopiert oder gelöscht werden sollen.
Willst du beispielsweise die Zeilen 1 und 3 kopieren oder löschen, dann ist das für Excel doppelt so "anstrengend" wie das löschen aller Zeilen von 1 bis 10.000, weil es eben zwei Blöcke sind und nicht einer. Die Größe dieser Blöcke ist egal, wichtig ist die Anzahl.

Dh deine Kopier- oder Löschaktion funktioniert problemlos und sehr schnell mit beliebigen Datenmengen, wenn du vor dem Filtern die Liste so sortiertst, dass die gefilterten Zeilen einen bzw so wenig wie möglich lückenlos zusammenhängenden Blöcke bilden.

Der Grün hierfür ist, das Excel beim Löschen von Zeilen im Hintergrund alle geöffneten Exceldateien nach Formeln durchsucht, die Bezüge auf die gelöschten Zellen enthalten um die Formeln dann entsprechend anzupassen. (Der Bezug auf A1:A10 wird zu A1:A9, wenn du Zeile 7 löschst)
Das Problem ist das Excel dies für jeden gelöschten Block erneut durchführen muss. Je weniger Blöcke du hast, um so schneller gehts.

Wenn man nicht sortieren kann oder will, verwendet man zum löschen von Zellen mit Bedingung wie von den anderen gezeigt das Duplikate entfernen. (Was übrigens auch von Hand ohne Makro verwendbar ist)
Dieses ist beim Löschen deswegen so schnell, weil es diese Hintergrundfunktion (Anpassen der Formeln) des normalen Löschens nicht ausführt und damit viel Aufwand spart.

Gruß Daniel

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Excel: Überwinde das 10.000 Zeilen Limit beim Filtern


Schritt-für-Schritt-Anleitung

  1. Daten vorbereiten: Stelle sicher, dass deine Daten in einem zusammenhängenden Bereich angeordnet sind. Vermeide Leerzeilen, da diese das Filtern beeinflussen können.

  2. Hilfsspalte erstellen: Füge eine Hilfsspalte ein, um eine nummerierte Liste zu erstellen, die nicht beeinflusst wird, wenn du Filter anwendest.

    • In Zelle B1 schreibe 0.
    • In Zelle B2 schreibe die Formel: =WENN(A2="";0;ZEILE()) und ziehe diese bis zum Ende deiner Daten.
  3. Duplikate entfernen: Kopiere die Hilfsspalte (Spalte B) und füge sie als Werte in eine neue Spalte ein. Nutze dann die Funktion „Duplikate entfernen“ unter dem Menü „Daten“.

  4. Filtern: Wende den Filter auf die Hauptspalte (z.B. Spalte A) an, um die Daten zu filtern und nur die gewünschten Einträge anzuzeigen.

  5. Werte kopieren: Du kannst jetzt die gefilterten Werte kopieren, ohne dass Excel dir das „Datenbezug zu komplex“ Problem anzeigt.


Häufige Fehler und Lösungen

  • Excel zeigt nicht alle Elemente an: Wenn du beim Filtern feststellst, dass nicht alle Elemente angezeigt werden, kann dies an der maximalen Anzahl an Werten im Filter liegen. Achte darauf, dass die Spalte nicht mehr als 10.000 eindeutige Einträge enthält.

  • Filter funktioniert nicht: Wenn du versuchst, mehr als 10.000 Zeilen zu filtern und Excel dir sagt, dass es „nicht möglich ist“, könnte das an der Verteilung der Daten liegen. Sortiere die Daten, um die Anzahl der lückenlos zusammenhängenden Blöcke zu minimieren.

  • Leere Zeilen: Wenn du leere Zeilen hast, benutze den Befehl Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete, um diese effizient zu entfernen.


Alternative Methoden

  • VBA-Lösungen: Wenn du regelmäßig mit großen Datenmengen arbeitest, kannst du ein VBA-Skript verwenden, um den Autofilter zu entfernen und die Daten schneller zu verarbeiten. Hier ist ein einfaches Makro:
Sub RemoveBlanks()
    Application.ScreenUpdating = False
    Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    Application.ScreenUpdating = True
End Sub
  • Formelbasierte Filter: Du kannst auch die Funktion FILTER() in Excel verwenden, um dynamisch Daten zu filtern, ohne die 10.000 Zeilen Einschränkung zu beachten.

Praktische Beispiele

  • Beispiel 1: Angenommen, du hast eine Liste von 120.000 Einträgen in Spalte A. Du möchtest nur die Einträge mit einem bestimmten Kriterium filtern. Erstelle eine Hilfsspalte in Spalte B, um die Zeilen zu nummerieren und nutze „Duplikate entfernen“, um die Filteranwendung zu optimieren.

  • Beispiel 2: Du hast eine Spalte mit 10.500 eindeutigen Einträgen in Spalte C. Wenn du mit dem klassischen Filter arbeitest, achte darauf, die Daten vor dem Filtern zu sortieren, um die Anzahl der Blöcke zu minimieren.


Tipps für Profis

  • Bessere Performance: Deaktiviere die Bildschirmaktualisierung und setze die Berechnung auf „manuell“, um die Geschwindigkeit deiner Makros zu erhöhen.

  • Verwende Named Ranges: Wenn du häufig auf bestimmte Datenbereiche zugreifen musst, verwende benannte Bereiche, um die Übersichtlichkeit zu erhöhen und die Filteranwendungen zu vereinfachen.

  • Dokumentation: Dokumentiere dein VBA-Skript gut, damit du es bei Bedarf schnell anpassen kannst.


FAQ: Häufige Fragen

1. Wie kann ich das Excel Filter 10000 Limit umgehen?
Indem du Hilfsspalten verwendest und die Funktion „Duplikate entfernen“ anwendest, kannst du das Limit überwinden und die gewünschten Daten filtern.

2. Warum zeigt Excel nicht alle Werte an?
Das liegt oft daran, dass die Spalte mehr als 10.000 eindeutige Einträge enthält oder dass die Daten in mehreren lückenlosen Blöcken organisiert sind.

3. Gibt es eine einfache Möglichkeit, leere Zeilen zu löschen?
Ja, du kannst den Befehl Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete verwenden, um schnell alle leeren Zeilen zu entfernen.

4. Wie kann ich mehr als 10.000 Zeilen filtern?
Du kannst die Daten in kleinere Blöcke aufteilen oder die Daten sortieren, um die Anzahl der lückenlos zusammenhängenden Blöcke zu reduzieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige