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

Format mit 0 und Blank

Format mit 0 und Blank
21.04.2007 16:26:53
Thomas
Hai,
ich habe eine Zelle in der eine 0 eine 1 oder Nichts sein kann.
Mit text = Format(Cells(y, 2), "0") bekomme ich bei einer 1 eine Eins und bei einer 0 eine Null. Soweit so gut, aber bei keinem Zelleninhalt hätte ich gerne ein SPACE-Zeichen. Kann man das irgendwie in die Format-Anweisung einfliessen lassen oder muss ich eine IF-Abfrage machen, im Stil von
If Cells(y,2)="" Then
text = " "
Else
text = Format(Cells(y, 2), "0")
End If
Die Variante
text = IIf(Cells(y, 2) = "", " ", IIf(Cells(y, 2) = "0", "0", "1"))
scheint ja auch zu gehen, aber geht das noch geschickter?
Und wenn nicht, ist die Variante 1 oder 2 zu bevorzugen? Ich habe nämlich keine Ahnung, ob bei VBA bestimmte Konstrukte vermieden werden sollten, weil Speicher/Performance-Fresser...
Tommi

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

Betreff
Datum
Anwender
Anzeige
AW: Format mit 0 und Blank
21.04.2007 19:15:52
Daniel
Hallo
beide Varianten sind möglich, in der Perfomance sollten sie sich kaum unterscheiden.
wie oft führst du die Operation denn durch?
wenns nicht grad ne schleife mit mehreren tausend durchläufen ist, wirst du keinen Unterschied merken.
die Bremse ist dann eher das Auslesen der Zellen mit Cells(y,2), wenn du Performance opitmieren willst, dann am effektivten hier, wenn du die Werte aus der Tabelle vohrher in eine Array-Variable kopierst, die du dann abarbeitest. das bringt wirklich Speed.
Bei den verschiedenen IF-Konstruktinen ist es marginal
Da kannst du dir aussuchen, was für dich am besten zu lesen, verstehen und später mal zu korregieren ist.
da ist dann manchmal die etwas ausführliche Schreibweise der 1-Zeilen-Kompaktprogrammierung im Vorteil.
ich würde aus diesen Gründen in diesem Fall folgende Konstruktion empfehlen:

select case cells(y,2).value
case ""
Text = " "
case 1
Text = "1"
case 0
Text = "0"
end select


oder


select case cells(y,2).value
case ""
Text = " "
case else
Text = Format(Cells(y, 2), "0")
end select


ist irgendwie etwas logischer als die IF-Konstruktion, voallem, wenns mehr als 2 möglichkeiten gibt.
Gruß, Daniel

Anzeige
AW: Format mit 0 und Blank
21.04.2007 19:36:00
Thomas
Hallo Daniel,
danke für die Ausführungen. Mir ging es teilweise ums Prinzip (also wie macht man es am besten, wenn mal längere Schleifendurchläufe drohen) - im Moment ist die Performance eher zu vernachlässigen, weil es nur um ein paar Tausend Durchläufe insgesamt geht.
Die 2te Variante mit der Case-Sache, die finde ich gut, zwar nicht in meinem jetzigen Fall, aber sowas (mit mehr Auswahlmöglichkeiten) habe ich neulich mal probiert und das ging schief. Lag wohl an der .value Sache ;)
Im Moment nehme ich einen Mix
text = IIf(Cells(y, 2) = "", " ", Forma((Cells(y, 2) = "0"))
Da ich davon ca. 80 verschiedene Varianten hintereinander habe ist mir etwas in der Form lieber als das mit mehreren Zeilen zu lösen. So habe ich eine 200 Zeilen-Routine statt einer 6-700-Zeilen-Routine ;)
Danke auf alle Fälle für die Tips!
Tommi
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige