Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1332to1336
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
"Leere" Zellen aufspüren
09.10.2013 16:06:21
{Boris}
Hallo zusammen,
ich habe eine Mappe, in der die leeren Zellen nicht leer sind.
Will heißen: =ISTLEER(A1) liefert FALSCH, =LÄNGE(A1) liefert 0.
Einfach zu reproduzieren, indem man in A1 die Formel ="" schreibt und anschließend das Ergebnis durch Inhalte-Einfügen-Werte ersetzt.
Bei der Mappe handelt es sich um irgendeinen Import mit ziemlich vielen Datensätzen (32000 Zeilen). Allerdings sollen die leeren Zellen eben wirklich leer sein.
Kann man das schneller lösen als mit einer For-Each-Schleife nach der Art:
Option Explicit
Sub weg()
Dim C As Range
With Application
.Calculation = xlCalculationManual
For Each C In Tabelle3.UsedRange
If Len(C) = 0 Then C.ClearContents
Next C
.Calculation = xlCalculationAutomatic
End With
End Sub
Das dauert nämlich ziemlich lange - und diese "verquere" Mappe kommt regelmäßig neu.
Danke schon mal für Euren Input!
VG, Boris

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: "Leere" Zellen aufspüren
09.10.2013 16:25:33
GuentherH
Hallo Boris,
mit Suchen Und ersetzen kannst Du alle ersetzen machen. allerdings brauchst Du zwei Schritte
Schrit 1:
Suchen:
Ersetzen: ..grzlbrmft..
Schrit 2:
Suchen: ..grzlbrmft..
Ersetzen:
Allerdings darf "..grzlbrmft.." auf keinen Fall in irgendeiner Zelle Deiner Datei vorkommen!
nur Leerstring durch Leerstring in einem Rutsch ersetzen funktioniert übrigens nicht!
Gruß,
Günther

Natürlich geht das auch anders, ...
09.10.2013 16:42:11
Luc:-?
…Günther und Boris,
nämlich bspw einfach so:
Sub Elim0Str()
Dim relDat, relBer As Range
Set relBer = ActiveWindow.RangeSelection
relDat = relBer: relBer = relDat
End Sub
Gruß Luc :-?

Anzeige
Sehr cool!
09.10.2013 17:07:51
{Boris}
Hi Luc,
das funktioniert bestens! Merci!
Habe nur ActiveWindow.RangeSelection durch Tabelle3.UsedRange ersetzt, um vorher nicht markieren zu müssen:
Sub Elim0Str()
Dim relDat, relBer As Range
Set relBer = Tabelle3.UsedRange
relDat = relBer: relBer = relDat
End Sub
@ Günther: Gute Idee!
@ Citizen: Für kleinere Bereiche: Gut. Aber in dieser Datei wird der Union zu groß.
VG, Boris

Irgendeine Ersetzung hatte ich ja auch ...
09.10.2013 17:59:30
Luc:-?
…erwartet, Boris; ;-)
war ansonsten plötzliche Eingebung, nachdem ich zuvor ähnlich wie Günther experimentiert hatte und dabei feststellen musste, dass Chr(0)≠"" ist. :-|
Offensichtlich behandelt der Variant mit DatenFeld ein Cells(…).Value="" wie Empty und das DFeld bleibt an dieser Stelle auch Empty.
Evtl gehört ans Ende noch ein Set relBer = Nothing (mache ich sonst immer), ist aber in diesem Fall wahrscheinlich irrelevant.
Luc :-?

Anzeige
Gut und nachvollziehbar erläutert bzw. ...
09.10.2013 18:12:58
{Boris}
Hi Luc,
...analysiert :-)
Auf diese Lösung wäre ich selbst sicherlich nicht gekommen!
VG, Boris

Das soll ich glauben...? ;-) Gruß owT
09.10.2013 18:34:51
Luc:-?
:-?

Warum denn nicht?
09.10.2013 21:13:14
{Boris}
Hi Luc ,
es ist halt immer ein Unterschied, ob man selbst das Problem hat oder das Ganze aus der "Ferne" lösen kann.
Die Lösung .Value + = .Value ist ja in diesem Moment letztlich so dermaßen simpel - aber ich bin halt nicht darauf gekommen.
Nobody is perfect!
VG Boris

Da hast du zwar recht, aber möglicherweise ...
09.10.2013 22:08:53
Luc:-?
…war's wirklich nur einer gewissen „EigenProblemBlindheit“ geschuldet, Boris,
was aber doch wohl auch ganz einfach nur ein ZeitProblem sein mag im Sinne von beim nächsten Betrachten fällt's einem wie „Schuppen von den Augen“… ;-)
Kenn ich aus eigener Erfahrung und war wohl auch hierbei irgendwie beteiligt…
Luc :-?

Anzeige
"Ferne" = Namibia? ;-) owT
09.10.2013 22:33:33
EtoPHG

Zum Beispiel ;-) oT
10.10.2013 07:26:15
{Boris}
...

Ich bin da nicht ganz so begeistert ...
09.10.2013 18:03:55
Matthias
Hallo
Es werden damit ja alle Formeln überschrieben!
Wenn Du das willst - ok.
Mir persönl. wäre dann eher die Prüfung auf NullString sicherer!
Gruß Matthias

Da sind wohl keine Fmln, Matti; ...
09.10.2013 18:11:06
Luc:-?
…Boris schrieb was von Import, anderenfalls hätte ich .Formula verwendet. ;-)
Gruß Luc :-?

Ja, in diesem Fall gibt es...
09.10.2013 18:14:03
{Boris}
...keine Formeln.
Aber der Hinweis ist natürlich berechtigt!
VG, Boris

Hallo zusammen, jetzt bin ich aber beruhigt :-) oT
09.10.2013 18:25:23
Matthias

Das wäre aber auch kein Grund, das ...
09.10.2013 18:36:59
Luc:-?
…anders zu machen, Boris;
(s.m.Hinweis oben)! ;-)
Luc :-?

Beispiel, aber einfacher
09.10.2013 19:46:52
EtoPHG
Hallo Luc,
Wieso das Gefrikel über Variant & Range?
wäre nicht einfacher?
Tabelle3.UsedRange.Value = Tabelle3.UsedRange.Value
Gruess Hansueli

Anzeige
Hast du nicht gelesen, was ich erklärt ...
09.10.2013 20:32:57
Luc:-?
…hatte, Hansueli?
Das war ein Arbeitsschritt auf dem Weg zum Ziel, der viell erst deine Vereinfachung ermöglicht hat… ;->
Wenn das „Gefrikel“ ist, was sind dann erst die anderen Versuche für dich? Wer soll dann noch deine Behauptung, nicht arrogant zu sein, ernst nehmen? :-]
Gruß Luc :-?

sammeln
09.10.2013 16:41:30
CitizenX
Hi Boris,
ich wird die Zellen alle erstmal sammeln:
Sub test()
Dim myrange As Range, ocell As Range, x
x = Timer
For Each ocell In Tabelle3.UsedRange
If ocell.Text = vbNullString Then
If myrange Is Nothing Then Set myrange = ocell
Set myrange = Union(ocell, myrange)
End If
Next
If Not myrange Is Nothing Then myrange.ClearContents
MsgBox Timer - x
End Sub

Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige