Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
896to900
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
896to900
896to900
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Wochenfunktion VBA - SQL

Wochenfunktion VBA - SQL
22.08.2007 09:12:42
Riediger
Hallo liebe Excel-Spezialisten,
ich habe folgendes Problem und komme einfach nicht weiter.
Ich lese aus einer Sybase-Datenbank Daten nach Excel aus. Unter anderem verwende ich dabei die SQL-Abfrage weeks(Datum).
Wenn ein einzelnes Datum eingegeben wird, liefert diese Funktion die Anzahl der Wochen seit 0000-02-29
Die folgende Anweisung gibt den Wert 104 270 zurück:
SELECT WEEKS( '1998-07-13 06:07:12' )
Gibt es eine Funktion unter VBA, mit der ich unter Excel aus einem Datum dieses Ergebnis auch erhalten kann?
Vielen Dank schon mal im Vorraus für jegliche Anregungen und Tips

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wochenfunktion VBA - SQL
22.08.2007 09:25:00
Renee
Hello Riediger,
Keine Ahnung wie genau das sein muss und was für eine verquere Datumsrechnung Sybase hat.
Dass das Jahr 0 ein Schaltjahr war ist ja irgendwie schon *ROFL*.
Aber anyway, angenommen das Datum ist in A1, dann könntest Du ev. mit dieser Formel an das Resultat rankommen:

=KÜRZEN(JAHR(A1)*(365.215/7);0)+KÜRZEN((A1-DATUM(JAHR(A1-3-REST(A1--2;7));1;REST(A1--2;7)-9))/7) 


Greetz Renee

AW: Wochenfunktion VBA - SQL
22.08.2007 09:46:00
Riediger
Hallo Renee,
danke für den Tip, ich bräuchte aber bitte noch eine kleine Hilfestellung von Dir. Ich habe wohl den englischen VBA-Datensatz und habe versucht, 'Kürzen' durch trunc zu ersetzen, aber die Funktion kennt mein Excel wohl auch nicht. Könntest Du mir bitte nochmal unter die Arme greifen und mir die Formel in englischer Version bereitstellen - Vielen Dank schon mal im Vorraus

Anzeige
AW: Wochenfunktion VBA - SQL
22.08.2007 10:12:05
Renee
Hallo Riediger,
Ich habe die Formel noch etwas überarbeitet/verbessert/korrigiert (oben hat sich 2 Minuszeichen verdoppelt!):

Deutsch:
=KÜRZEN(JAHR(A1)*50.1706706706707)
+KÜRZEN((A1-DATUM(JAHR(A1+3-REST(A1-2;7));1;REST(A1-2;7)-9))/7)
Englisch:
=TRUNC(YEAR(A1)*50.1706706706707)
+TRUNC((A1-DATE(YEAR(A1+3-MOD(A1-2,7)),1,MOD(A1-2,7)-9))/7)


Greetz Renee

Und noch ein Fehler...
22.08.2007 10:31:00
Renee
Sorry,
Tippe zu schnell, Denke zu langsam...
Der Faktor muss 52.1726726726727 sein!
Also

Deutsch:
=KÜRZEN(JAHR(A1)*52,1726726726727)
+KÜRZEN((A1-DATUM(JAHR(A1+3-REST(A1-2;7));1;REST(A1-2;7)-9))/7)
Englisch:
=TRUNC(YEAR(A1)*52.1726726726727)
+TRUNC((A1-DATE(YEAR(A1+3-MOD(A1-2,7)),1,MOD(A1-2,7)-9))/7)


Greetz Renee

Anzeige
AW: Wochenfunktion VBA - SQL
22.08.2007 10:36:49
Riediger
Vielen Dank Renee für Deine Mühen,
ich bin davon überzeugt, dass das Programm funktioniert. Leider kann ich es auf meinem PC nicht ausführen, da ich sowohl bei der Funktion TRUNC als auch bei der Funktion KÜRZEN angezeigt bekomme: Sub oder Function nicht definiert. Ich weiss nicht warum, eigentlich kann das überhaupt nicht sein - aber auch nach Internetrecherche habe ich niemanden gefunden, der das gleiche Problem hat. Die Excel-Hilfe kennt auch keine der beiden Funktionen, wobei ich natürlich weiss, dass das Standardfunktionen sind, die da sein müssen. Hast Du vielleicht eine Idee, an was das liegen kann? Mir fällt dazu leider nichts mehr ein.

Anzeige
AW: Wochenfunktion VBA - SQL
22.08.2007 11:04:00
Renee
Hallo Riediger,
Ich weiss nicht genau, was Du meinst.
Das was ich Dir geliefert habe sind EXCEL-Formeln!, nicht VBA-Code.
Falls Du VBA Code brauchst, muss ich den zuerst erarbeiten.
Greetz Renee

AW: Wochenfunktion VBA - SQL
22.08.2007 11:30:16
Renee
Hi Riediger,
1. Kopier folgende Funktion in ein Modul:

Public Function sybaseKW(ByVal vDatum As String) As Double
Application.Volatile
Dim dDate As Double
dDate = CDbl(CDate(vDatum))
sybaseKW = Int(Year(dDate) * 52.1726726726727) + _
Int((dDate - DateSerial(Year(dDate + 3 - ((dDate - 2) Mod 7)), _
1, ((dDate - 2) Mod 7) - 9)) / 7)
End Function


2. Jetzt kannst Du sie, sowohl als 'Formel' in einer Zelle brauchen z.B.:


A1 enthält ein Datum B1: =sybaseKW(A1)
oder =sybaseKW("19.07.1998")
oder =sybaseKW(HEUTE())
oder...


3. oder in VBA als Funktion z.B.


Sub x()
Dim x As Variant
x = sybaseKW("12.08.2007")
MsgBox x
End Sub


Greetz Renee

Anzeige
AW: Wochenfunktion VBA - SQL
22.08.2007 13:31:27
Riediger
Hallo Renee,
ich hatte leider gerade etwas Stress und kam nicht gleich zum Abruf der Nachricht.
Ich meinte, dass mein Excel weder mit 'Trunc' noch mit 'Kürzen' etwas anfangen konnte und eine Meldung brachte,dass es diese Funktion nicht gäbe. - Warum auch immer
Dein Modul, dass Du mir geschickt hast, funktioniert prima. Vielen herzlichen Dank für die Mühe, die Du Dir mit meinem Problem gemacht hast.
Grüsse
Martin

AW: Wochenfunktion VBA - SQL
22.08.2007 10:16:00
Gert
Hallo Riediger,
bitte unterscheiden zwischen "Kalenderwoche_USA" und "Kalenderwoche_Germany".
In den "USA" beginnt die Kalenderwoche am "Sonntag" mit z.Bspl. : =WOCHENTAG(A1) oder
=weekday(A1) d.h. der 1te Tag der Woche ist "Sonntag" (=1) und der letzte Tag "Samstag" (=7).
In EUROPA beginnt die Kalenderwoche am "Montag" mit z.Bspl. : =WOCHENTAG(A1;2) oder
weekday(A1;2). Der 1te Tag der Woche ist der "Montag"(=1) und der letzte ist der "Sonntag"(=7).
Weitere Differenzen zwischen "USA" und "Europa" erfolgen mit der Berechnung der "Kalender-
woche". Mit der in "Excel" enthaltenen Funktion "KALENDERWOCHE()" werden die USA_Bedingungen
berücksichtigt.
In Deutschland wird die 1te Kalenderwoche der neuen Jahres so berechnet :
Fällt der 1.1. des neuen Jahres auf "Donnerstag" =Wochentag(4) oder einen folgenden Wochentag,
ist dies die 1te_Kalenderwoche des neuen Jahres.
Ist der 1.1. des neuen Jahres ein "Mittwoch" =Wochentag(3) oder an einem früheren Wochentag
(Montag bzw Dienstag) wird diese "KW" der letzten "KW" des alten Jahres zugerechnet.
Hier die Funktion für die deutsche "KALENDERWOCHE" :
=KÜRZEN((A1-WOCHENTAG(A1;2)-DATUM(JAHR(A1+4-WOCHENTAG(A1;2));1;-10))/7)
Dies Unterschiede sind vor allen Dingen bei Terminabsprachen zu berücksichtigen.
mfg
Gert

Anzeige
AW: Wochenfunktion VBA - SQL
22.08.2007 13:33:35
Riediger
Hallo Gert,
vielen Dank für Deine Nachricht. Dass es einen Unterschied gibt beim Wochenanfang zwischen USA und Europa war mir bisher gar nicht bewusst.
Grüsse
Martin

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige