Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1392to1396
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
Formel in UDF abbilden
20.11.2014 18:27:00
Peter
Guten Abend
Aus http://www.excelformeln.de/formeln.html?welcher=7 habe ich eine Formel in meine Tabelle übernommen. Nun möchte ich diese in einer UDF abbilden.
Formel über Direktbereich abgefragt:
?activecell.FormulaR1C1
=MIN(YEAR(R1C1-1-MOD(R1C1-2,7)+4),YEAR(R1C1-MOD(R1C1-1,7)+4))
Den Inhalt von R1C1 übergebe ich dem Paramenter datDatum in der Function KW_Start als Date und ermittle dann das vorhergehende Montag-Datum, ausser der übergebene Wert ist schon ein Montag (in diesem Fall unveränderte Übernahme).
Nun will ich das Kalenderjahr ermitteln und habe obige Formel wie folgt umgesetzt:
KW_Start = Application.WorksheetFunction.Min(Year(datDatum - _
1 - Application.WorksheetFunction.MOD(datDatum - 2, 7) + 4), _
Year(datDatum - Application.WorksheetFunction.MOD(datDatum - 1, 7) + 4))
Das kann aber anscheinend so nicht berechnet werden. Was ist da falsch?
Gruss, Peter
https://www.herber.de/bbs/user/93919.xlsm

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Mod ist keine WorksheetFunction...
20.11.2014 19:12:58
{Boris}
Hi peter,
...sondern in VBA ein eigener Operator.
10 Mod 5
lautet da die Syntax.
VG, Boris

AW: Mod ist keine WorksheetFunction...
20.11.2014 22:48:12
Peter
Hallo Boris, hall Luc
Danke für die Antworten.
Ich tue mich schwer mit der Umsetzung von MOD:
KW_Start = Application.WorksheetFunction.Min(Year(datDatum - 1 - (datDatum - 2 Mod 7) + 4), _
Year(datDatum - (datDatum - 1 Mod 7) + 4))
Ich habe verschiedene Klammersetzungen probiert und bin nie auf die Ergebnisse gekommen, die mir
=MIN(YEAR(R1C1-1-MOD(R1C1-2,7)+4),YEAR(R1C1-MOD(R1C1-1,7)+4))
liefert.
Wie kann ich diese VBA-Codezeile "entwickeln", dass die Logik wie bei der Formel umgesetzt ist?
Gruss, Peter

Anzeige
AW: Mod ist keine WorksheetFunction...
21.11.2014 00:12:19
Ewald
Hallo,
da vollkommen unklar ist wie das Endergebnis aussehen soll, kann es auch nur allgemeine Antworten geben.
Hier mal ein Makro das dir alle Infos aus einem Datum anzeigt (ab Excel 2010)
Sub Test()
Dim u
Dim x
Dim y
Dim z
Dim indat
indat = ActiveCell.Value
u = Month(indat)
x = Application.WorksheetFunction.WeekNum(indat, 21)
y = Format(Weekday(indat, 1), "DDDD")
z = Year(indat)
MsgBox "Jahr  " & z & Chr(13) & "Monat " & u & Chr(13) & "Woche  " & x & Chr(13) & "Tag  " & y
End Sub
Das in eine Funktion (inclusive Variabletypdeclaration) umzuwandeln dürfte das kleinste Problem sein.
Gruß Ewald

Anzeige
AW: Mod ist keine WorksheetFunction...
21.11.2014 11:05:43
Peter
Hallo Ewald
Dankeschön!
(es war nicht ganz vollkommen unklar, wie das Resultat aussehen sollte, ich habe im ursprünglichen Beitrag ein Link auf eine Beispielmappe aufgeführt).
Nun ist jedoch alles geklärt.
Gruss, Peter

Folgendes Konstrukt dürfte die richtige ...
21.11.2014 00:41:06
Luc:-?
…Umsetzung deiner Fml sein, Peter:
KW_Start = Application.WorksheetFunction.Min(Year(datDatum - 1 - (datDatum - 2) Mod 7 + 4), Year(datDatum - (datDatum - 1) Mod 7 + 4))
datDatum muss aber ein echtes Datum (also eine Zahl) sein!
Gruß, Luc :-?

AW: Folgendes Konstrukt dürfte die richtige ...
21.11.2014 11:02:35
Peter
Hallo Luc
Vielen Dank. Das hat mir weitergeholfen.
Gruss, Peter

Anzeige
Bitte sehr, gern geschehen! owT
21.11.2014 19:46:33
Luc:-?
:-?

WorksheetFunction.Mod gibt's nicht, ...
20.11.2014 19:17:27
Luc:-?
…Peter;
entweder die Fml in US-Notation als Text mit vbMethode Evaluate auswerten oder den VB-Operator Mod benutzen!
Gruß, Luc :-?

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige