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

Leere Zellen sind nicht leer?

Leere Zellen sind nicht leer?
21.04.2023 09:44:55
Marc

Hallo zusammen,

ich wäre wieder mal froh um einen guten Tipp: Ich befülle mittels VBA einzelne Spalten mit Daten. Dazu importiere ich die Daten zunächst in ein 1dim Array aus einem Source-File. Es wird dabei der jeweilige Umsatzwert aus dem Sourcefile ausgelesen und und dann an der richtigen Position ins Array geschrieben. Wenn kein Umsatzwert vorhanden ist, dann wird die jeweilige Position im Array auch nicht beschrieben. Am Schluss kopiere ich das Array einfach im Excel an die richtige Stelle. Und ja, natürlich habe ich vorher den Einfügebereich mit Clearcontents gelöscht, es sind also keine "Altlasten" mehr im Zielbereich. Das alles funktioniert auch sehr gut und schnell.

Mein Problem: Die leeren Zellen sehen zwar leer aus (kein Inhalt, auch in der Bearbeitungsleiste keine unsichtbaren Leerzeichen usw.), werden von Excel aber nicht als Leer wahrgenommen. Mit Anzahl2 z.B. werden alle Zellen gezählt.

Wenn ich nun den Datenbereich sortiere, alle offensichtlich leeren Zellen anwähle und nochmals lösche, dann ist Excel auch zufrieden und wertet die Zellen auch als leer. Aber irgendwie muss das doch auch besser gehen?

Ich habe diverse Sachen versucht, z.B. Das Array nochmals durchloopen und auf NotEmpty prüfen und dann "" als Wert schreiben
oder auch For Each cell in Rng if IsEmpty(cell) then cell.ClearContents
Aber leider keine Erfolg. Kennt jemand von Euch dieses Phänomen und kann mir sagen, wie ich das lösen kann?

Vielen Dank im Voraus für Eure Bemühungen.
Lg Marc

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Leere Zellen sind nicht leer?
21.04.2023 09:52:44
Der Steuerfuzzi
Hallo,

ich habe es tatsächlich ausprobiert. Ich kann das Verhalten leider nicht bestätigen. Bei mir sind und bleiben die Zellen leer und ANZAHL2 gibt auch den richtigen Wert aus. Selbst wenn ich das Array als String deklariere funktioniert es ohne Probleme und die Zellen werden als "Leer" dargestellt und gewertet.

Zeig doch mal Deinen Code. Wie deklarierst Du die Array-Variable? Du könntest auch Deine Beispielmappe hochladen, in der man das Ergebnis sehen kann.

Gruß
Michael


AW: Leere Zellen sind nicht leer?
21.04.2023 10:39:59
Marc
Danke für Deine Bemühungen, ich weiss das zu schätzen. Die ganze Mappe kann ich leider nicht hochladen, da einerseits viel zu gross und andererseits geschäftlich sensitiv. Ich kürze aber mal massiv und zeige was ich im Endeffekt mache:

1. Ich habe eine Liste mit Kundennamen/Nummern, denen will ich Monatsumsätze zuspielen. Die Liste lebt, immer wieder kommen Spalten hinzu oder werden gelöscht, deshalb will ich einzelne Spalten flexibel befüllen können. Um die "richtige" Position innerhalb des Arrays zu finden (dh. die richtige Umsatzzahl zur richtigen Kundennummer), fülle ich die Kundennummern zunächst in ein Array ab: arrLiefAkt = Range
Dann dimensioniere ich ein Ziel-Array:
dim arrUmsatz(1 to Ubound(arrLiefAkt), 1 to 1)
--> 1-basiert damit ich es nachher in Excel einfach reinkopieren kann.

Gleichzeitig fülle ich die Sourcedaten in ein arrLiefQuelle

2. Ich loope durch die 2 Arrays arrLiefAkt und arrLiefQuelle und prüfe auf Übereinstimmung der Kundennummer. Dann fülle ich den entsprechenden Umsatzwert in die arrUmsatz ab. Wenn keine Übereinstimmung vorhanden, dann bleibt die entsprechende Position im arrUmsatz schlussendlich "leer".
for i = LBound(arrLiefAkt) to UBound(arrLiefAkt)
     for j = LBound(arrLiefQuelle) to UBound(arrLiefQuelle)
             If arrLiefAkt(i,1) = arrLiefQuelle(j,1) then
                     arrUmsatz(i,1) = arrLiefQuelle(j,2)
             end if     
      next j
next i
3. Ich kopiere die arrUmsatz an der richtigen Stelle ins Blatt. Ich mache das mit der folgenden Funktion:
Public Sub ArrFillFromTopLeft(R As Range, Arr)
    R.Resize(ArrRowCount(Arr), ArrColCount(Arr)).Value = Arr
End Sub
Public Function ArrRowCount(Arr) As Long
    ArrRowCount = UBound(Arr, 1) - LBound(Arr, 1) + 1
End Function
Public Function ArrColCount(Arr) As Long
    ArrColCount = UBound(Arr, 2) - LBound(Arr, 2) + 1
End Function
--> Ich gebe als Parameter die genaue Position der 1. Zelle und das einzufüllende Array an.

Ach ja, Du hast auch gefragt, wie ich die Arrays dimensioniere --> gleich am Anfang der Sub mit
Dim arrLiefAkt()
Dim arrLiefQuelle()
Dim arrUmsatz()
Und das ist die ganze Magie, mehr mache ich nicht. Und da ich im Loop gewisse Positionen im Array gar nicht befülle, sollten die meiner Meinung nach auch als leer ins Blatt gefüllt werden?

Ist das so nachvollziehbar?

Lg Marc


Anzeige
AW: Leere Zellen sind nicht leer?
21.04.2023 09:59:28
Daniel
Hi
im Prinzip können Zellen den Text "" enthalten.
dann sind sie nicht leer, sondern enthalten einen Text.
sowas kann nach Importen der Fall sein, aber auch wenn du eine Formel mit dem Ergebnis "" kopierst und als Wert einfügst.

wenn du die Zellen per schleife leeren willst, sollte die Prüfung sein: if Cell.Value = "" Then cell.ClearContents, denn leer ist sie ja nicht.
andere Möglichkeiten ohne schleife wären ein TEXT-IN-SPALTEN mit der betroffenen Spalte auszuführen (geht aber nur mit einzelnen Spalten) oder einfach ein Range(...).Formula = Range(...).value. Das ist für Excel wie eine Neueingabe des Inhalts und Excel wird dann aus dem Text "" eine Leerzelle machen.

Gruß Daniel


Anzeige
AW: Leere Zellen sind nicht leer?
21.04.2023 10:46:02
Marc
Hallo Daniel,

danke auch Dir für Deine Antwort.

Zum 1. Teil Deiner Antwort: Da ich ja in dem Array an den "leeren" Stellen gar nie einen Eintrag gemacht habe, glaube ich eigentlich nicht, dass es daran liegt? Sehe ich das falsch? Betreffend dem von mir verwendeten Code schau bitte kurz in meine andere Antwort, dort habe ich das aufgezeigt.

Zum 2. Teil: Range(...).Formula = Range(...).value tönt spannend, habe ich noch nie gehört. Ich verstehe aber nicht ganz, wie Du das konkret meinst? Nach dem Einfügen des Arrays in Blatt den Range nochmals "kopieren"?

Lg Marc


Anzeige
AW: Leere Zellen sind nicht leer?
21.04.2023 10:54:43
Daniel
eigentlich sollte dein Vorgehen so wie du es beschrieben hast, echte Leerzellen erzeugen.
Wenn das nicht der Fall ist, dann müsste es an etwas liegen, was du nicht beschrieben hast.
von daher wäre das hochladen einer Beispieldatei nicht schlecht.
die Datei kann gekürzt sein auf wenige Datensätze und du kannst natürlich sensible Daten (Namen usw durch dummy-Werte ersetzen, Max Mustermann usw), sollte aber das Problem enthalten und in der Struktur deiner Originaldatei entsprechen.
Gruß Daniel


AW: Leere Zellen sind nicht leer?
21.04.2023 13:30:29
Marc
Hey Daniel,

good news: Deine Antwort hat mich gezwungen, eine Demodatei für Euch bereitzumachen. Dort habe ich natürlich nicht die "scharfen" Quelldaten genommen, ansonsten aber alles gleich gemacht. Und siehe da: Der Fehler trat nicht mehr auf beim Import...:-(

Das Gute daran: Damit war klar, dass irgend etwas mit den Quelldaten nicht stimmen kann, und effektiv waren die "leeren" Einträge dort immer ein Leerzeichen. Beim Import wurden die zwar interessanterweise nicht übernommen (dh. in der Zieldatei war dieses Leerzeichen wirklich nicht mehr enthalten, deshalb war das für mich ja so rätselhaft), aber das ist eine Frage für einen anderen Tag. Mein Problem hat sich damit in Luft aufgelöst (ich lasse einfach bei jedem Importwert sicherheitshalber die Trim-Funktion drüberschauen).

Danke vielmals für den geistigen Anstoss, manchmal sieht man das Problem ohne den unvoreingenommenen Rat von extern halt einfach nicht mehr!

Lg
Marc

Anzeige

334 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige