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

unterschiedliche Genauigkeiten

unterschiedliche Genauigkeiten
09.12.2006 04:35:42
kanuft
E2002: wie kann man einfach Spalten mit unterschiedlichen Genauigkeiten berechnen?
Hallo Leute,
ich möchte eine grössere Anzahl Berechnungen mit unterschiedlichen
Genauigkeiten durchführen um den Unterschied im Endergebnis zu
ermitteln.
ich möchte auswählen können ob:
* mit voller Flieskomma-Genauigkeit gerechnet,
* mit auf 2 Nachkommastellen gekürtzen Zahlen,
* mit auf 2 Nachkommastellen gerundeten Zahlen
gerechnet werden soll.
man kann das zwar ganz einfach mit einer entsprechend langen Formel
mit vorhandenen Excel-Funktionen machen; da diese Formel aber sehr
lang und damit unübersichtlich und damit Fehleranfällig ist
suche ich möglichst eine übersichtliche Möglichkeit die bereits
vorhandenen Formeln in eine Funktion einzubetten die abhängig von
einem Schaltwert das Ergebnis entsprechend kürzt.
Beispiel: BESCHNEIDEN(STEUERVARIABLE;alte Formel)
wobei STEUERVARIABLE 1,2,3 für die 3 Möglichkeiten sein kann.
ich weiss das man sich sowas mit VBA selbst machen kann, habe davon aber
keine Ahnung.
da die gesuchte Funktion ja nicht allzu abwegig ist:
vielleicht kennt ja jemand eine entsprechende Funktion in irgendeinem
Toolkit für Excel.
Gruss an alle die dies lesen
Dank an alle die mir antworten
Jürgen

26
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: unterschiedliche Genauigkeiten
09.12.2006 08:25:21
Erich
Hallo Jürgen,
so steht die Formel nur in Spalte A, die beiden anderen Möglichkeiten in B und C sind von der Formel unabhängig.
Reicht das nicht aus?
 ABCD
1"genau"gerundetabgerundetSummen
20,666666666666667000,670,66 
30,666666666666667000,670,66 
40,666666666666667000,670,66 
52,000000000000000002,010000000000000001,98000000000000000Summe
62,002,011,98Summe gerundet

Formeln der Tabelle
ZelleFormel
A2=2/3
B2=RUNDEN(A2;2)
C2=ABRUNDEN(A2;2)
A5=SUMME(A2:A4)
B5=SUMME(B2:B4)
C5=SUMME(C2:C4)
A6=A5
B6=B5
C6=C5

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: unterschiedliche Genauigkeiten
09.12.2006 10:29:10
Jürgen
Hallo Erich,
danke für die Antwort.
ich habe das Problem wohl nicht genau genug beschrieben.
ich will eine komplette Berechnung über dutzende von Blättern mit unterschiedlichen
Genauigkeiten durchführen um am Ende zu sehen wie sich die unterschiedlichen Genauigkeiten auf das Endresultat auswirken.
Es handelt sich um die Nachberechnung eines Kredites bei dem alle Parameter voneinander abhängig sind: Zinsen, Tilgung, Disagio, Effektivzins usw. usw., Endresultat ist die Restschuld am Ende des Kredites.
Eine Excelzeile für jeden Monat.
In den Zeilen stehen z.B. Zinsen, Tilgung, Disagio und als Resultat die Restschuld in diesem Monat, welche wieder Berechnungsgrundlage der nächsten Zeile (Monat ist) usw..
Alle 4 vorgenannten Parameter einer Zeile müssen gemeinsam alternativ mit einer von den 3 möglichen Genauigkeiten berechnet werden.
Die Gesamtberechnung gibt es schon, aber mit normaler Excel Fliesskommagenauigkeit.
Sie ist aber noch nicht fertig, es muss dauernd daran geändert werden.
ich möchte deshalb nicht 3 Arbeitsmappen haben in denen ich bei Änderungen immer 3 mal das Gleiche ändern muss was mit Sicherheit sich häufende Fehler zur Folge hat sondern nur 1 Arbeitsmappe bei der ich möglichst fehlerverhindernd die 3 verschiedenen Basis-Genauigkeiten auswählen kann.
ich hoffe ich habe damit die Problematik besser beschrieben.
Gruss
Jürgen
Anzeige
AW: unterschiedliche Genauigkeiten
09.12.2006 10:58:51
Erich
Hallo Jürgen,
dann mit einer benutzerdefinierten Funktion.
Im dritten Parameter wird die Formel als Zeichenkette übergeben - das erspart das Aufbröseln der Formel in der Funktion.
 ABCDEF
1Format: StandardTypStellen   
20,666666667"genau"beliebig   
30,67gerundet2   
40,6666abgerundet4   
5  Typ:3Stellen:3
6Parameter in Zellen:     
70,666     

Formeln der Tabelle
ZelleFormel
A2=calc(1;0;"2/3")
A3=calc(2;2;"2/3")
A4=calc(3;4;"2/3")
A7=calc(typ;nk;"2/3")
Namen in Formeln
ZelleNameBezieht sich auf
A7nk=Tabelle1!$F$5
A7typ=Tabelle1!$D$5
Namen verstehen

Und hier die Funktion:
Public Function calc(intT As Byte, intS As Integer, strF As String)
calc = Evaluate(strF)
Select Case intT
Case 2: calc = WorksheetFunction.Round(calc, intS)
Case 3: calc = WorksheetFunction.RoundDown(calc, intS)
Case 4: calc = WorksheetFunction.RoundUp(calc, intS)
End Select
End Function
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: unterschiedliche Genauigkeiten
09.12.2006 12:53:40
Jürgen
Hallo Erich,
danke für die Routine.
sieht so aus als sei sie genau das was ich suche.
wo finde ich eine Schritt-für-Schritt-Anweisung wie ich die Funktion in Excel einbauen kann?
im Voraus vielen Dank!
Gruss
Jürgen
AW: unterschiedliche Genauigkeiten
09.12.2006 13:21:28
Erich
Hallo Jürgen,
freut mich, das es wohl das Richtige war.
Der Einbau sollte kein so großes Problem sein:
In Excel Alt+F11 öffnet den VBA-Editor.
Einfügen - Modul öffnet das Modulfenster für Modul1.
Falls da schon Option Explicit" steht, kannst (und solltest) du das dort stehen lassen, muss aber nicht sein.)
In das Fenster kopierst du den Code.
Dann kannst du VBA schließen - fertig, du kannst die Funktion in Excel verwenden.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: unterschiedliche Genauigkeiten
10.12.2006 09:01:06
Jürgen
Hallo Erich,
bei mir gibt es schon die Module 1 und 2.
ich habe deshalb Modul 3 eingefügt und den Code dort hineingeschrieben.
scheint aber von Excel noch nicht erkannt zu werden,
denn wenn ich calc(2;2;C15) oder calc(2;2;"12,55555")
in eine Zelle eingebe erhalte ich #WERT als Ergebnis.
ich hätte da auch noch einen kleiner Änderungswunsch in der Routine:
wenn die globale Variable "GlobalRunden" grösser 0 ist soll für das Case-
Statement deren Wert statt intT verwendet werden
und case 1: sollte den Wert unverändert lassen.
Vielen dank im Voraus.
Gruss
Jürgen
Anzeige
AW: unterschiedliche Rundungen
10.12.2006 11:33:08
Erich
Hallo Jürgen,
die Anwendung der Funktion calc ist nicht so einfach - Evaluate verlangt die auszuwertende Formel englisch.
Dazu müsstest du alle verwendeten Funktionen übersetzen und Dezimalzahlen mit Punkt statt Komma schreiben.
Um dem zu entgehen, habe ich eine neue Funktion "cal" gebastelt, die keine Formelauswertet,
sondern nur das Ergebnis der Formel rundet. Schau dir das mal an:
https://www.herber.de/bbs/user/38862.xls
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort und: Schönen Sonntag!
AW: unterschiedliche Rundungen
10.12.2006 12:56:08
Jürgen
Hallo Erich,
danke für deine Mühe.
das Macro funktioniert bei mir nicht aber richtig: rundet immer auf Ganzzahlen auf.
wofür die beiden Subroutinen benötigt werden ist für mich nicht nachvollziehbar, ich sehe nirgends wo sie aufgerufen werden.
in meiner VBA Hilfe gibt es nur die Funktion Round,
wie sie genau rundet steht dort aber nicht.
die Funktionen RoundDown und -up gibt es in meiner Hilfe nicht.
ich hatte ursprünglich noch eine Funktion benötigt die das Ergebniss nach der x.ten Stelle einfach nur abschneidet ohne zu Runden.
Gruss
Jürgen
Anzeige
AW: unterschiedliche Rundungen
10.12.2006 13:04:44
Erich
Hallo Jürgen,
du hattest in deinem vorigen Beitrag von einer globalen Variablen geschrieben, die muss doch irgendwo belegt werden können.
In meiner Beispielmappe sind daraus drei Variablen geworden. Dann kannst du nicht nur den Rundungstyp,
sondern auch die Anzahl Stellen global steuern.
Die VBA-Funktion Round solltest du nicht verwenden - sie arbeitet anders als die Tabellenfunktion RUNDEN.
Deshalb stehen in "cal" die drei (NICHT-VBA-)Funktionen
WorksheetFunction.Round (ist die Tab-Funktion RUNDEN)
WorksheetFunction.RoundDown (ABRUNDEN)
WorksheetFunction.RoundUp (AUFRUNDEN)
Wenn bei dir jetzt immer auf Ganzzahlen rundet, musst du die globalen Variablen mal anders setzen.
Dazu sind die beiden Routinen da.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: unterschiedliche Rundungen
10.12.2006 13:24:10
Jürgen
Hallo Erich,
da habe ich als VBA-Anfänger den Begriff WorksheetFunction unbeachtet gelassen.
da hatte ich mich wahrscheinlich vorher falsch ausgedrückt:
ich möchte den Variablennamen GlobalRunden in Excel einem Feld zuordnen (habe ich bereits getan) und von dort aus für alle Berechnungen verändern.
der Zweck soll sein: falls ich lokal auf einem Blatt unbemerkt noch eine andere Rundungsvariante verwendet haben sollte dass diese dann das Gesamt-Ergebnis nicht verfälscht.
wie kann man das nun noch mit dem ungerundeten Abschneiden realisieren?
Gruss
Jürgen
AW: unterschiedliche Rundungen
10.12.2006 14:35:14
Erich
Hallo Jürgen,
verstehe ich "Variablennamen GlobalRunden in Excel einem Feld zuordnen" so richtig,
dass du einer Zelle den Namen GlobalRunden gegeben hast?
Dann brauchst du keine globale Variable.
Meinst du mit dem "ungerundeten Abschneiden" etwas anderes als ABRUNDEN / RoundDown / RundenGlobal=4 ?
Probier mal diese Mappe aus, in der es drei "Global"-Namen und keine globalen Vaiablen gibt:
https://www.herber.de/bbs/user/38863.xls
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: unterschiedliche Rundungen
10.12.2006 14:59:55
Jürgen
Hallo Erich,
verstehe ich das richtig das man in Excel-VBA eine in Excel mit einem Namen versehene Variable genauso wie eine in VBA generierte globale Variable verwenden kann?
Mit Abschneiden meine ich ein Reduzieren der Nachkommastellen ohne irgenwelche Rundungen,
z.B. aus 1,564 1,5699 1,561345 soll 1,56 bei 2 Nachkommastellen werden, wie bei einer Textabschneidung hinter der 2. Nachkommastelle.
Gruss
Jürgen
AW: unterschiedliche Rundungen
10.12.2006 19:17:12
Erich
Hallo Jürgen,
das mit den Namen hatte ich nachgefragt, weil ich nicht verstandenen hatte, was du mit
"ich möchte den Variablennamen GlobalRunden in Excel einem Feld zuordnen
(habe ich bereits getan) und von dort aus für alle Berechnungen verändern."
meinst.
Wie hast du das getan? Meinst du mit "Feld" eine Excelzelle?
Wann und wie bekommt in deiner Mappe die globale Variable ihren Wert?
Meine Vermutung war, dass du einer Zelle den Namen "GlobalRunden" gegeben hast. Da lag ich wohl falsch.
Aber es war eine schöne Möglichkeit, die ich dann in meiner letzten Mappe umgesetzt habe.
Schreibst du mir bitte noch mal, wie du es gemacht hast?
Auf deine Frage
"eine in Excel mit einem Namen versehene Variable genauso wie eine in VBA generierte globale Variable verwenden?"
will ich natürlich auch antworten:
Wenn man in Excel einer Zelle (oder einem Zellbereich) einen Namen gibt,
kann man die Zelle (bzw. den Zellbereich) sowohl in Excel als auch in VBA unter diesem Namen ansprechen.
Das ist dann gar keine Variable. Die Verwendung des Namens ist einfach nur sprechender:
Wenn die Zelle B7 in Tabelle2 den Namen myName hat, kann man in VBA z. B.
If [myName] = 0 then
schreiben anstelle von
If Sheets("Tabelle2").Range("B7") = 0 then
oder
If Sheets("Tabelle2").Cells(7, 2) = 0 then
Mit globalen Variablen in VBA hat das nichts zu tun.
Deklariert man in VBA eine globale Variable (außerhalb einer Prozedur, evtl. mit Public),
muss man dieser Variablen in einer Prozedur einen Wert zuweisen - sonst hat sie nur ihren Initialwert
(0 bei numerischen Variablen).
Zum Abschneiden: Das ist meiner Meinung nach das Gleiche wie ABRUNDEN usw, oder?
Rückmeldung wäre nett - Grüße von Erich aus Kamp-Lintfort und noch einen schönen Sonntagabend!
Anzeige
AW: unterschiedliche Rundungen
10.12.2006 19:33:47
Jürgen
Hallo Jürgen,
# das mit den Namen hatte ich nachgefragt, weil ich nicht verstandenen hatte,
# was du mit
# "ich möchte den Variablennamen GlobalRunden in Excel einem Feld zuordnen
# (habe ich bereits getan) und von dort aus für alle Berechnungen verändern."
# meinst.
# Wie hast du das getan? Meinst du mit "Feld" eine Excelzelle?
richtig, ich habe die Excel-Nomenklatur noch nicht verinnerlicht.
# Wann und wie bekommt in deiner Mappe die globale Variable ihren Wert?
indem ich eine Zahl in die Zelle eintippe.
# Meine Vermutung war, dass du einer Zelle den Namen "GlobalRunden"
# gegeben hast.
# Da lag ich wohl falsch.
nein, das hast du richtig verstanden.
# Aber es war eine schöne Möglichkeit, die ich dann in meiner letzten Mappe
# umgesetzt habe.
# Schreibst du mir bitte noch mal, wie du es gemacht hast?
s.o.
# Zum Abschneiden: Das ist meiner Meinung nach das Gleiche wie ABRUNDEN usw,
# oder?
auch richtig. Das ist mir erst hinter gedämmert.
noch einen schönen Sonntagabend zurück!
Gruss
Jürgen
AW: unterschiedliche Rundungen
12.12.2006 10:10:08
Jürgen
Hallo Erich,
ich habe in deiner Routine die Verwendung von Variablennamen in eckigen Klammern so verstanden, das auf diese Weise in Excel selbst definierte Namen so verwendet werden.
ich habe die Routine noch weitergehend modifiziert, aber offenbar wird für den in eckigen Klammern geschriebenen Begriff nicht der Wert der aktuellen Execl-Zelle verwendet.
Habe ich da etwas falsch verstanden oder einen anderen Fehler in meiner Routine:
Option Explicit
'Dim GlobalRunden '... in Excel-Blatt bereits definiert
Public

Function RND(RundungsArt As Byte, Ausdruck As String)
' Public 

Function RND(RundungsArt As Byte, Anzahl_Nachkommastellen As Integer, Ausdruck As String)
Dim Anzahl_Nachkommastellen As Byte
Anzahl_Nachkommastellen = 2
If IsNumeric(Ausdruck) Then
RND = CDbl(Ausdruck)
Else
RND = Evaluate(Ausdruck)
End If
If RundungsArt < 10 Then    ' wenn Globales Runden erlaubt ist
If [GlobalRunden] > 1 Then RundungsArt = [GlobalRunden]
Else: RundungsArt = RundungsArt - 10
End If
Select Case RundungsArt
Case 2: RND = WorksheetFunction.Round(RND, Anzahl_Nachkommastellen)
Case 3: RND = WorksheetFunction.RoundDown(RND, Anzahl_Nachkommastellen)
Case 4: RND = WorksheetFunction.RoundUp(RND, Anzahl_Nachkommastellen)
End Select
End Function

' diese Funktion rundet der Wert des Ergebnisses von 'Ausdruck'
' abhängig von den Steuerungsparametern 'RundungsArt' und 'GlobalRunden':
' Globalrunden überschreibt die Art der Rundung die in der lokalen Funktion
' vorgegeben ist wenn diese ' ansonsten wird immer die lokale Rundung verwendet!
'
' RundungsArt = 1 o. 11 ... keine Rundung, Ausdruck bleibt unverändert
' RundungsArt = 2 o. 12 ... Ausdruck wird normal 4/5 gerundet
' RundungsArt = 3 o. 13 ... Ausdruck wird abgeschnitten
' RundungsArt = 4 o. 14 ... Ausdruck auf den nächst höheren Wert aufgerundet
'
' GlobalRunden = 1 ... keine Rundung, Ausdruck bleibt unverändert
' GlobalRunden = 2 ... Ausdruck wird normal 4/5 gerundet
' GlobalRunden = 3 ... Ausdruck wird abgeschnitten
' GlobalRunden = 4 ... Ausdruck auf den nächst höheren Wert aufgerundet
'
' die Rundung ist fest hinter der 2. Nachkommastelle voreingestellt.
Gruss
Jürgen
AW: unterschiedliche Rundungen
12.12.2006 14:24:05
Erich
Hallo Jürgen,
deine Funktion ließ sich so nicht kompilieren - Anzahl_Nachkommastellen ist zweimal deklariert
(als 2. Parameter und mit Dim)
Wenn die Anzahl_Nachkommastellen mit 2 fest ist, braucht sie nicht Parameter zu sein,
kann vielmehr in der Funktion bestimmt werden.
Schau dir das mal bitte an:
https://www.herber.de/bbs/user/38908.xls
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: unterschiedliche Rundungen
12.12.2006 21:22:24
Jürgen
Hallo Erich,
' Public Function RND(RundungsArt As Byte, Anzahl_Nachkommastellen As Integer, Ausdruck As String)
ist bei mir in einer Zeile geschrieben und macht deshalb keine Probleme. Aktuell brauche ich nur 2 Nachkommastellen und um nicht in den Aufruf den zusätzlichen Parameter für die Stellenzahl eingeben zu müssen habe ich den Aufruf gekürzt und den langen Aufruf als Kommentar gelassen, falls man später vielleicht die erweiterte Funktionalität doch nutzen möchte.
Mein Problem ist aber das ich den Wert in der Excelzelle für Globalrunden ändern kann wie ich will ohne das sich das Resultat ändert wie erwartet.
Das ist auch mit deiner Modifikation der if-then-else Anweisung nicht anders.
Woran könnte das noch liegen?
Gruss
Jürgen
AW: unterschiedliche Rundungen
12.12.2006 21:57:34
Jürgen
Hallo Erich,
ich konnte die genaue Ursache des Problems fixen:
während bei deinem Beispiel eine Änderung des Wertes von GlobalRunden zu einer automatischen Neuberechnung der anderen Werte führt,
ist dies bei mir nicht der Fall.
erst wenn ich die zu rundende Zelle modifiziere führt dies zu einer Neuberechnung aller anderen Zellen.
woran kann das liegen?
Gruss
Jürgen
AW: unterschiedliche Rundungen
13.12.2006 00:04:05
Erich
Hallo Jürgen,
dazu hatte ich dir eine Bemerkung geschrieben - schau mal in Zelle D4 der heute von mir geposteten Mappe.
"Application.Volatile" ist vorsichtig zu verwenden. Bei Blättern mit vielen Formeln kann es sein,
dass Excel aus dem Rechnen kaum noch rauskommt. Probiers einfach mal aus!
Noch ein Link dazu:
https://www.herber.de/forum/archiv/200to204/t201142.htm
(hier der Beitrag von Hans W. Herber)
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: unterschiedliche Rundungen
13.12.2006 09:08:40
Jürgen
Hallo Erich,
danke für den Tipp,
jetzt funktioniert es wie erwartet.
das mit der Verlangsamung muss ich mal beobachten,
meine Mappe ist 18 MB gross und enthält unzählige Vereknüpfungen und Berechnungen.
ich glaube aber nicht dass das heute noch eine Rolle spielt.
der Beitrag auf den du verwiesen hast ist zwar von 2003, Excel 97 aber deutlich älter.
wenn der Rechner auch aus dieser Zeit ist dann würde mich das nicht wundern denn vor 10 Jahren waren die Rechner deutlich langsamer als heute.
bei meiner Anwendung stört mich eher das beim automatischen Abspeichern zur Wiederherstellung immer wieder unerwartet kurzfristig meine Eingaben nicht auf dem Bildschirm zu sehen sind; wird sich aber eher nicht verhindern lassen.
Gruss
Jürgen
AW: unterschiedliche Genauigkeiten
10.12.2006 11:36:05
Reinhard
Hi Jürgen,
Option Explicit
Dim GlobalRunden
Public Function calc(intT As Byte, intS As Integer, strF As String)
'GlobalRunden = 1
If IsNumeric(strF) Then
calc = CDbl(strF)
Else
calc = Evaluate(strF)
End If
If GlobalRunden > 0 Then intT = GlobalRunden
Select Case intT
Case 2: calc = WorksheetFunction.Round(calc, intS)
Case 3: calc = WorksheetFunction.RoundDown(calc, intS)
Case 4: calc = WorksheetFunction.RoundUp(calc, intS)
End Select
End Function

Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
AW: unterschiedliche Genauigkeiten
10.12.2006 13:02:43
Jürgen
Hallo Reinhard,
danke für das Makro.
es rechnet richtig.
ich hatte ursprünglich noch eine Funktion benötigt die das Ergebniss nach der x.ten Stelle einfach nur abschneidet ohne zu Runden.
Gruss
Jürgen
AW: unterschiedliche Genauigkeiten
10.12.2006 14:38:02
Reinhard
Hi Jürgen,
Tabellenblattname: Tabelle1
A            B
1               0,6   2/3
2              0,66
3             0,666
4               0,7
5              0,67
6             0,667
7               0,6
8              0,66
9             0,666
10               0,7
11              0,67
12  Fehler bei Modus
13                12
14             12,34
15             12,35
16             12,34
17             12,35
Benutzte Formeln:
A1:  =calc(0;1;$B$1)
A2:  =calc(0;2;$B$1)
A3:  =calc(0;3;$B$1)
A4:  =calc(1;1;$B$1)
A5:  =calc(1;2;$B$1)
A6:  =calc(1;3;$B$1)
A7:  =calc(2;1;$B$1)
A8:  =calc(2;2;$B$1)
A9:  =calc(2;3;$B$1)
A10:  =calc(3;1;$B$1)
A11:  =calc(3;2;$B$1)
A12:  =calc(4;2;$B$1)
A13:  =calc(3;2;12)
A14:  =calc(0;2;12,346)
A15:  =calc(1;2;12,346)
A16:  =calc(2;2;12,346)
A17:  =calc(3;2;12,346)

Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
AW: unterschiedliche Genauigkeiten
10.12.2006 15:05:14
Jürgen
Hallo Reinhard,
soweit ich orakeln kann was damit gemeint sein könnte entsprechen die Ergebnisse den damit verbundenen Erwartungen, ich weiss aber nicht was du mit der Tabelle aussagen willst?
Gruss
Jürgen
AW: unterschiedliche Genauigkeiten
10.12.2006 16:31:29
Reinhard
Hi Jürgen,
anscheinend habe ich ein zwei zeilen des Codes vergessen :-)
Option Explicit
Dim GlobalRunden
Public Function calc(intR As Byte, intS As Byte, strF As String)
Application.Volatile
Dim Splitcalc
GlobalRunden = intR
If IsNumeric(strF) Then
calc = CDbl(strF)
Else
calc = Evaluate(strF)
End If
Select Case intR
Case 0
Splitcalc = Split(calc, ",")
calc = Splitcalc(0)
If UBound(Splitcalc) = 1 Then calc = CDbl(calc & "," & Left(Splitcalc(1), intS))
Case 1: calc = Application.WorksheetFunction.Round(calc, intS)
Case 2: calc = Application.WorksheetFunction.RoundDown(calc, intS)
Case 3: calc = Application.WorksheetFunction.RoundUp(calc, intS)
Case Else: calc = "Fehler bei Modus"
End Select
End Function

Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
AW: Code posten
13.12.2006 00:22:06
Erich
Hallo Jürgen,
noch ein Tipp:
Für das Posten von Code gibts hier (und diversen anderen Foren) die Möglichkeit,
vor dem Code fünf Zeichen zu schreiben: Kleinerzeichen p r e Größerzeichen
Hinter den Code gehören dann sechs Zeichen: Kleinerzeichen / p r e Größerzeichen
(alles ohne die Leerzeichen dazwischen)
In der Vorschau siehst du den Effekt. Der Code wird in Courier dargestellt, danach sollte wieder Normalschrift sein.
Mir war wegen der Aufteilung der Kommentarzeile entgangen, dass du die Nachkommastellen
als Parameter schon rausgenommen hattest.
Grüße von Erich aus Kamp-Lintfort

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige