Das Clever-Excel-Forum.de - Treffen
... 14.-16. September 2018 im Allgäu ...

Access-Lösung: Kalenderwoche berechnen
#1
Hallo, 

das mit der Kalenderwoche geht auch in Access direkt in einer Abfrage.
Beispiel mit den Feldern [KW_NR] und [KW_JAHR] :

Die Umsetzung der zuletzt genannten Excel-Formel für den KW-Montag lautet dann

=7*Round(CDate(7 & 1-[KW_JAHR])/7+[KW_NR];0)+177

bzw. mit der Integer-Division, die Excel (noch) nicht kann

=7*(CDate(7 & 1-[KW_JAHR])\7+[KW_NR])+184

Das Ergebnisfeld sollte als "Short Date" formatiert sein.

Viele Grüße, Frank
Zitieren to top
#2
Hi,

und was willst Du uns damit sagen?

sieh mal: http://excelformeln.de/formeln.html?welcher=186

Integerdivision in Excel:

Arbeitsblatt mit dem Namen 'Tabelle1'
 F
62

ZelleFormel
F6=KÜRZEN(15/7;)
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg
Gruß
Opa Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Zitieren to top
#3
Hallo Edgar,

Ich ging hier nach meiner Neuanmeldung so vor mich hin ...
und davon aus: ich bin hier im MSAccess-Areal des Forums und sah eine Excel-Formel als finalen und vor allem falschen Lösungsvorschlag für ein Access-Problem und der Thread wurde geschlossen.

Zu Deiner Frage, was ich "Euch" sagen möchte: In MSAccess (wie auch VB, VBA und auch MSQuery)  ist der Backslash als Operator für eine spezielle Integer-Division einsetzbar.
Dafür ist dort kein Funktionsaufruf nötig. Dividend, Divisor und Quotient werden bei der Integer-Division ganzzahlig gerundet.

Excel kennt die '\'-Division nicht, diese Funktionalität muss man mit Rundungsfunktionen "nachbauen".
Wenn man solche Excel-Formeln dann auf MsAccess lediglich 1:1 adaptiert, verschenkt man dort die Möglichkeit, das '\'-Feature einzusetzen.

=7*(CDate(8 & 1-[KW_JAHR])\7+[KW_NR])+149

Zu Deinem Beispiel: Das ist nicht die Integer-Division, wie sie die vorher genannten Programme kennen. 
KÜRZEN ist bei diesem Nachbauen in Excel zudem ein Wackelkandidat, weil er nicht wie GANZZAHL funktioniert. 
KÜRZEN hat zudem in ACCESS keine Entsprechung, dafür korrespondieren GANZZAHL(XL) und INT (ACCESS)
Bei negativen Zahlen wird bei KÜRZEN ganzzahlig aufgerundet, bei positiven abgerundet. GANZZAHL rundet immer ab.
In Access gibt es zudem negative Datumswerte bis ins Jahr 100 zurück. Access kennt auch keinen 29.02.1900 
Bei der Übertragung von Excel-Formeln nach ACCESS muss daher bei Datumsberechnungen genau aufgepasst werden. 
Das habe ich vorhin nicht getan, daher die neue und hoffentlich richtige Variante.

Und zuguterletzt: Excel hat eine andere interne Rechengenauigkeit als Access, machmal merkt man das sogar.
Bei der Verwendung des mod-Operators treten bei den genannten Programmen übrigens ähnliche Rundungseffekte auf. Die REST-Funktion in Excel rundet dagegen nicht.

Viele Grüße, Frank
Zitieren to top
#4
Hi,

Excel kennt die Integer-Division sehr wohl, allerdings nur in VBA.
Gruß
Opa Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Zitieren to top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste