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

Forumthread: Berechnung in VBA mit "Genauigkeit wie angezeigt"

Berechnung in VBA mit "Genauigkeit wie angezeigt"
Sabine
Hallo zusammen,
ist eine Zelle mit mehreren Nachkommastellen (z.B. 2,596687432) als Zahl mit einer Nachkommastelle über "Zellen formatieren" formatiert, wird die Zahl entsprechend der Formatierung angezeigt (z.B. 2,6). Im Hintergrund bleibt die Zahl mit mehreren Nachkommastellen erhalten. Gerechnet wird mit der Zahl im Hintergrund (z.B. 2,596687432).
Ihr kennt bestimmt die Option "Genauigkeit wie angezeigt". Mit dieser kann man die Zellwerte dauerhaft in die angezeigte Genauigkeit (z.B. 3,6) umwandeln. Das "dauerhaft" dabei ist das Problem.
Nun mein Problem: Ich muss in VBA eine Summe über einen bestimmten Bereich berechnen und zwar nur bezogen auf den formatierten Wert, d.h. die angezeigte Genauigkeit. Die Berechnung grundsätzlich durchzuführen ist kein Problem, das klappt mit "WorksheetFunction.Sum(Selection)" ganz gut. Allerdings wird dabei der Wert im Hintergrund mit mehreren Nachkommastellen verwendet.
Wie kann ich die Summierung auf einfache und schnelle Weise in VBA durchführen, ohne auf "Genauigkeit wie angezeigt" umstellen zu müssen?
Irgendwie stehe ich gerade auf dem Schlauch.
LG
Sabine
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Berechnung in VBA mit "Genauigkeit wie angezeigt"
26.10.2009 13:15:31
JogyB
Hi.
So geht es:
Public Function summeWieAngezeigt(ByVal sumRng As Range) As Double
Dim zeLLe As Range
For Each zeLLe In sumRng
If IsNumeric(zeLLe.Value) And Not zeLLe.Value = "" Then
summeWieAngezeigt = summeWieAngezeigt + CDbl(zeLLe.Text)
End If
Next
End Function
Du mußt die Eigenschaft .Text der Zelle nehmen, die bezieht sich auf den angezeigten Wert. Leider läßt sich das in Application.Sum nicht unterbringen (zumindest habe ich auf die Schnelle keine Möglichkeit gefunden).
Gruss, Jogy
Anzeige
AW: Berechnung in VBA mit "Genauigkeit wie angezeigt"
26.10.2009 13:16:55
Sabine
Hi,
danke Dir, ich habs schon fast befürchtet, dass es keine einfachere und schnellere Form gibt.
Grüße
Sabine
AW: Berechnung in VBA mit "Genauigkeit wie angezeigt"
26.10.2009 13:17:47
xr8k2
Hallo Sabine,
versuch mal so:
WorksheetFunction.SumProduct(Round(Selection, 0)) 'Anzahl Nachkommastellen im Round anpassen
Gruß,
xr8k2
Anzeige
AW: Berechnung in VBA mit "Genauigkeit wie angezeigt"
26.10.2009 13:21:20
Sabine
Hallo xr8k2,
danke, das geht (bedingt aber, dass alle Zellen die gleiche Anzahl der Nachkommastellen haben).
Wird mir wohl nix anderes über bleiben als die Schlaufe drüberlaufen zu lassen.
Gruß
Sabine

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Berechnung in VBA mit "Genauigkeit wie angezeigt"


Schritt-für-Schritt-Anleitung

  1. Öffne Dein Excel-Dokument und gehe zu dem Arbeitsblatt, in dem Du die Berechnung durchführen möchtest.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Füge ein neues Modul hinzu:

    • Klicke auf Einfügen > Modul.
  4. Kopiere den folgenden VBA-Code in das Modul:

    Public Function summeWieAngezeigt(ByVal sumRng As Range) As Double
       Dim zeLLe As Range
       For Each zeLLe In sumRng
           If IsNumeric(zeLLe.Value) And Not zeLLe.Value = "" Then
               summeWieAngezeigt = summeWieAngezeigt + CDbl(zeLLe.Text
           End If
       Next
    End Function
  5. Schließe den VBA-Editor und gehe zurück zu Excel.

  6. Verwende die Funktion =summeWieAngezeigt(A1:A10) in einer Zelle, um die Summe der angezeigten Werte in einem bestimmten Bereich zu berechnen.


Häufige Fehler und Lösungen

  • Fehler: Funktion wird nicht erkannt
    Lösung: Stelle sicher, dass Du die Funktion korrekt eingegeben hast und dass das Modul, in dem sie sich befindet, gespeichert ist.

  • Fehler: Ergebnis ist nicht korrekt
    Lösung: Überprüfe, ob die Zellen im angegebenen Bereich tatsächlich die Werte anzeigen, die Du erwartest. Manchmal kann eine falsche Zellformatierung zu unerwarteten Ergebnissen führen.


Alternative Methoden

Eine alternative Methode zur Berechnung der Summen, die sich an der angezeigten Genauigkeit orientiert, ist die Verwendung der WorksheetFunction.SumProduct-Methode:

WorksheetFunction.SumProduct(Round(Selection, 0)) ' Anzahl Nachkommastellen im Round anpassen

Diese Methode ist allerdings nur anwendbar, wenn alle Zellen im Bereich die gleiche Anzahl von Nachkommastellen haben.


Praktische Beispiele

  • Beispiel 1: Summe von Werten in den Zellen A1 bis A10 berechnen:

    =summeWieAngezeigt(A1:A10)
  • Beispiel 2: Wenn Du die Summe der angezeigten Werte in B1 bis B10 für eine spezifische Anzahl von Nachkommastellen berechnen möchtest, kannst Du folgendes verwenden:

    =WorksheetFunction.SumProduct(Round(B1:B10, 1)) ' für eine Nachkommastelle

Tipps für Profis

  • Verwende .Text für Genauigkeit: Wenn Du mit der angezeigten Genauigkeit rechnen möchtest, ist es wichtig, die .Text-Eigenschaft der Zelle zu verwenden.
  • Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen in Deinem VBA-Code, um unerwartete Eingabewerte zu verarbeiten.
  • Automatisierung: Überlege, ob Du die Berechnung automatisieren kannst, indem Du Makros erstellst, die regelmäßig ausgeführt werden.

FAQ: Häufige Fragen

1. Was bedeutet "Genauigkeit wie angezeigt"?
Die Option "Genauigkeit wie angezeigt" sorgt dafür, dass Excel mit den Werten arbeitet, die Du siehst, anstatt mit den ursprünglichen, präzisen Werten im Hintergrund.

2. Kann ich diese Funktion in Excel Online verwenden?
VBA-Funktionen sind nicht in Excel Online verfügbar. Du musst die Desktop-Version von Excel verwenden, um diese Funktionen zu nutzen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige