Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Anzeige der Prozentualen Differenz

Begonnen von accessy, Dezember 07, 2014, 17:53:15

⏪ vorheriges - nächstes ⏩

accessy

Die Abfrage enthält 2 Felder.
2013 und 2014.
Berechnungsfeld lautet: ([2014]-[2013])/[2013].
Eigenschaft enthält die Vorgabe "Prozentzahl".

Das funktioniert prima, hat aber eine Kleinigkeit, die ich nicht hinbekomme.
Wenn 2013 der Umsatz 0 ist, und 2014 der Umsatz >0 ist,
dann ist der Umsatz 2014 zu 2013 um 100% gestiegen.
Aber angezeigt wird das nicht, weil 2013 keinen Wert hat.

Was muss ich wohin eintragen, damit als Wert 100% steht?

Danke euch für Hinweise dazu.
Gruß Achim

DF6GL

Hallo,

ZitatWenn 2013 der Umsatz 0 ist, und 2014 der Umsatz >0 ist,
dann ist der Umsatz 2014 zu 2013 um 100% gestiegen.


erfindest Du hier eine neue Mathematik? Oder ist das eine Abwandlung der bekannten Milchmädchenrechnung?  ;) ???

MzKlMu

#2
Hallo,
wenn 2013 der Umsatz 0 war und 2014 5, so ist der Umsatz doch nicht um 100% gestiegen von 0 auf irgendwas lässt sich nicht in % ausdrücken das ist unendlich.
Daher ergibt auch (2014-2013)/2013 einen Fehler das lässt sich nicht in % ausdrücken.
von 800 auf 1000 sind 25% Steigerung
von 500 auf 1000 sind 100% Steigerung
von 1 auf 1000 sind 99900% Steigerung
von 0 auf 1000 sind unendlich % Steigerung = Division durch 0 = mathematisch unmöglich.

PS:
Franz hat es schneller und einfacher beschrieben.  8)
Gruß Klaus

accessy

Selbstverständlich ist das mathematisch gesehen falsch.
Aber wie würdet ihr es denn sonst ausdrücken?

Wenn ich 2013 einen Umsatz von 0,- €, dieses Jahr bei diesem Kunden aber etwas verkauft habe, dann habe ich "wörtlich" oder von mir aus auch "gefühlt" 100% zugelegt.

Gehen wir es mal anders an.
In Excel kann ich die IF...THEN so gestalten, dass ich sage, wenn 2013=0 und 2014>0 ist, dann schreibe mir in die Zelle "100%" rein.

Kann ich in meiner Abfrage auch so eine IF...THEN einbauen?
Danke, Gruß Achim

MzKlMu

#4
Hallo,
selbstverständlich geht das auch wie in Excel, fast genau so:
Wenn([2013]=0;1;([2014]-[2013])/[2013])
das ergibt doch aber ein völlig unsinniges Bild

Von 200 auf 1000 = 400%
Von 100 auf 1000 = 900%
von 0 auf 1000 100% ? ? ?

Das kann ja nicht dein ernst sein. Das ist vom Ansehen her gefühlt nicht richtig.
Ich würde das Feld einfach leer lassen.
Oder Du machst 2 berechnete Felder eines mit der absoluten Steigerung und eines mit Prozent das dann im Falle von 2013= 0 leer bleibt.

Die 100% Geschichte finde ich jedenfalls unmöglich, das kann auch gefühlt nicht richtig sein.


PS:
Nicht ganz nebenbei, Feldnamen mit reinen Zahlen sollten unbedingt vermieden werden.
Besser wäre es, wenigstens einen Buchstaben voranzustellen.
Gruß Klaus

accessy

Okay, ich füge mich der logischen Anzeige und lasse die 100% mal weg.

MzKlMu

#6
Hallo,
Zitatlasse die 100% mal weg.
das geht aber mit Deiner Formel nicht, die führt zu einem Fehler, da Division durch 0.
Wenn Du das Feld dann leer lassen willst, ändere die Formel von mir wie folgt:
Wenn([2013]=0;Null;([2014]-[2013])/[2013])

Übrigens, bei einer Gegenüberstellung von echten 100% zu Deinen 100% wird das unlogische Deines ursprünglichen Vorhabens sehr deutlich.

500 auf 1000 = 100%
0 auf 1000 auch 100%

PS:
Hast Du noch meinen Nachtrag oben zu den Feldnamen gelesen ? Solltest Du nicht ignorieren.
Gruß Klaus

accessy

Ja, den Nachtrag habe ich gelesen. Ich werde die Felder umbenennen. Von 2013 auf U2013.
Ich habe mal einen Screenshot gebastelt.
Ihr seht, da kommen weiter unten Kunden, die haben 2014 was gekauft, aber 2013 nicht.
Z.B. der mit 547,-€.

Aus der mathematischen Logik der Formel her, bekommt er keine Beachtung; wie alle Kunden die 2013 NULL hatten, aber 2014 kauften.
So müsste der Kunde mit 547,-€ als Gewinner (pseudoprozentual) irgendwo oben stehen.

Von 500 auf 1000 sind 100% gesteigert.
Aber von 0 auf 500 hätte in der Tabelle, absteigend auch 100%..."gefühlte 100%"...
Kommt das irgendwie rüber, was ich versuche zu erklären?

Leute, ich weiß doch, dass man in der Mathematik nicht durch Null dividieren kann.
Es ist zwar logisch falsch, aber für mich eine sinnigere Ansicht.
Wie also bekomme ich 100% angezeigt, wenn 2013=0 ist und 2014 >0 ist.
Und natürlich auch -100%, wenn 2013>0 und 2014=0 ist.



MzKlMu

#8
Hallo,
ich habe Dir doch eine Formel bereits gezeigt die funktioniert, bereits in meiner Antwort #4 steht die richtige Formel, die auch für den umgekehrten Fall funktioniert. Nicht gesehen ?
Im umgekehrten Fall ist die Mathematik richtig, da kommen immer -100% raus, schon mit Deiner Formel.
Gruß Klaus

accessy

Ich habe die Formel aus deiner Antwort #4 entnommen und in meiner Abfrage exakt so eingebaut.
Aber das Resultat hat sich nicht geändert.
Siehe Screenshot der Abfrage.



Oder habe ich da etwas nicht richtig verstanden, bzw. vergessen?
Ach ja. Die Jahre 2004 bis 2014 kann ich nicht mit einem Buchstaben davor ändern. Das Feld heißt "Jahr" und die einzelnen Jahre stammen aus einer Kreuztabellenabfrage.

MzKlMu

#10
Hallo,
Du sprichst die ganze Zeit von 0 (der Zahl), aber ein Feld das leer ist, enthält nicht 0 sondern ist NULL. Und mit NULL (=Nix) kann man nicht rechnen. Du musst also auf NULL prüfen und Felder die NULL sein können, sind mit Nz() behandeln.
So sollte Dein Vorhaben klappen:
Vergleich zum Vorjahr: Wenn([2013] Ist Null;1;(Nz([2014];0)-[2013])/[2013])
Oder so:
Vergleich zum Vorjahr: Wenn(Nz([2013];0)=0;1;(Nz([2014];0)-[2013])/[2013])
Die 2. Formel deckt beide Fälle ab, NULL und 0 (die Zahl).
Gruß Klaus

accessy

Mist, ich komme mit einigen Dingen nicht so klar.
Du fügst da ein "NZ" ein, also eine Variable, oder?
Die ist nicht definiert, es kommt aber auch keine Fehlermeldung.

Die Lösung ist fast perfekt.
Leider wird auch 100% eingetragen wenn 2013 und 2014 jeweils leer ist, bzw. Null.
Da dürfte nichts stehen, müsste leer bleiben.

MzKlMu

Hallo,
Nz() ist doch keine Variable, Nz() ist eine eingebaute Access Funktion.

Du musst eine weitere Wenn Bedingung um die Formel machen, die für beide Felder NULL abfängt.
Gruß Klaus

accessy

Der logische Operator UND...In EXCEL kein Problem. Aber in Access...?
Ich bekomme immer die Meldung "Syntaktisch falsch" und da drunter steht
"Sie haben ein Komma eingegeben, vor dem kein Wert oder Bezeichner steht"
Ich habe kein Komma eingegeben.
Wenn(und([2013]=0;[2014]=0);0;Wenn(Nz([2013];0)=0;1;(Nz([2014];0)-[2013])/[2013]))
Ich krieg das nicht gebacken

DF6GL

Hallo,

"Und" ist ein Operator und keine Funktion...

Wenn([2013]=0 UND [2014]=0;....