Discussion:
Abfrage, ob Nachkommastellen vorhanden
(zu alt für eine Antwort)
Michael Ahrens
2006-11-04 08:22:27 UTC
Permalink
Gibt es einen Befehl, mit dem ich eine Zahl (z.B. 3,456)

- Ganze Zahl (3)
- Nachkomma-Zahl (,456 oder 456)

zerlegen kann ?

Danke! Michael.
Alexander Wolff
2006-11-04 08:52:02 UTC
Permalink
Post by Michael Ahrens
Gibt es einen Befehl, mit dem ich eine Zahl (z.B. 3,456)
- Ganze Zahl (3)
- Nachkomma-Zahl (,456 oder 456)
zerlegen kann ?
=GANZZAHL(A1) 3,
=REST(A1;1) ,456 (oder natürlich auch A1-GANZZAHL(A1))
--
Moin+Gruss Alexander - MVP für MS Excel - www.xxcl.de - mso2000sp3 --7-2
Michael Ahrens
2006-11-04 11:34:25 UTC
Permalink
Post by Alexander Wolff
Post by Michael Ahrens
Gibt es einen Befehl, mit dem ich eine Zahl (z.B. 3,456)
- Ganze Zahl (3)
- Nachkomma-Zahl (,456 oder 456)
zerlegen kann ?
=GANZZAHL(A1) 3,
=REST(A1;1) ,456 (oder natürlich auch A1-GANZZAHL(A1))
Okay. Aber wenn ich nun in VBA prüfen möchte, ob Nachkommazahlen
vorhanden sind ?
Michael Ahrens
2006-11-04 11:36:09 UTC
Permalink
Post by Alexander Wolff
Post by Michael Ahrens
Gibt es einen Befehl, mit dem ich eine Zahl (z.B. 3,456)
- Ganze Zahl (3)
- Nachkomma-Zahl (,456 oder 456)
zerlegen kann ?
=GANZZAHL(A1) 3,
=REST(A1;1) ,456 (oder natürlich auch A1-GANZZAHL(A1))
Bisher mache ich das mit

IF Cells(1,1) <> Round(Cells(1,1;0) THEN ...
Alexander Wolff
2006-11-06 11:11:16 UTC
Permalink
Es gibt normalerweise 3 Möglichkeiten, eine Funktion zu erhalten:

a) Zuweisung der Tabellenfunktion direkt als .Value oder .Formula
b) Verwendung der als WorksheetFunction vorliegenden Tabellenfunktion
c) Verwendung der nativen VBA-Funktion

Meistens sind nicht alle verfügbar; oft sind sie außerdem unterschiedlich.

Konkretes Beispiel Funktion =REST()
-----------------------------------
a) klappt: If Evaluate("=MOD(A1,1)") Then ...
b) ist nicht vorhanden (da in VBA keine Fkt., sondern Operator MOD)
c) Operator MOD , rechnet vorher beide Argumente in Ganzzahlen um (!)
--
Moin+Gruss Alexander - MVP für MS Excel - www.xxcl.de - mso2000sp3 --7-2
b***@gmail.com
2006-11-06 11:27:45 UTC
Permalink
Hallo Michael,

zum Beispiel:
Sub test()
Dim ganz As Long
Dim nachkomma As Double
ganz = Application.WorksheetFunction.Floor(Range("A1"),
Sgn(Range("A1")))
nachkomma = Range("A1") - ganz
Debug.Print "Ganzzahlanteil: " & ganz & ", Nachkommaanteil: " &
nachkomma
End Sub

HTH,
Bernd

PS: INT() nicht ok fuer negative Zahlen...

Klaus "Perry" Pago
2006-11-04 11:38:27 UTC
Permalink
Post by Alexander Wolff
Post by Michael Ahrens
Gibt es einen Befehl, mit dem ich eine Zahl (z.B. 3,456)
- Ganze Zahl (3)
- Nachkomma-Zahl (,456 oder 456)
zerlegen kann ?
=GANZZAHL(A1) 3,
=REST(A1;1) ,456 (oder natürlich auch A1-GANZZAHL(A1))
Hallo Alexander und Michael,

Ganzzahl und Rest funktionieren im Sinne der Aufgabenstellung nur bei
positiven Zahlen. Besser sind folgende Formeln:

=KÜRZEN(A1;0) und =A1-KÜRZEN(A1;0)
oder
=ABRUNDEN(A1;0) und A1-ABRUNDEN(A1;0)

wenn die negativen Vorzeichen der Ergebnisse stören, packt man alles in die
ABS-Funktion

=ABS(KÜRZEN(A1;0)) und =ABS(A1-KÜRZEN(A1;0))
oder
=ABS(ABRUNDEN(A1;0)) und =ABS(A1-ABRUNDEN(A1;0))

dann klappt es auch mit Alexanders Formeln

=GANZZAHL(ABS(A1))
=REST(ABS(A1);1)
=ABS(A1)-GANZZAHL(ABS(A1))

Gruß
Klaus
Loading...