Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1496to1500
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
Inhaltsverzeichnis

Jede Formel durch Makro-Funktion darstellbar?

Jede Formel durch Makro-Funktion darstellbar?
10.06.2016 12:49:55
Juliane
Hallo,
kann man eigentlich jede Excel-Formel durch eine Funktion (Maktro? ersetzen?
Zum Beispiel: Ich hätte einen komplexe WENN-Formel die ich einer Funktion per Makro zuweise. Diese funktion trägt dann den Namen "Wenn".
Nun möchte ich diese Funktion wiederum in Excel in Formeln einbauen ala
=Summe(A1;Wenn(A2))
Geht sowas? Geht so eine Umwandlung mit jeder Excel-Formel? Wenn ja, wie lege ich solche Funktionen an?
Besten Dank im Voraus

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Jede Formel durch Makro-Funktion darstellbar?
10.06.2016 13:35:35
selli
hallo juliane,
man kann mittels vba natürliche komplexe berechnungen in einer Function() zusammenfassen und diese dann, wie du es dir vorstellst, in einer zelle wie eine ganz gewöhnliche funktion aufrufen.
wenn du das vorhast solltest du aber möglichst keine namen verwenden, die es ohnehin schon gibt. in deinem Fall WENN.
hier kann man die variante auch im namen schon veraschaulichen.
Function WENNEIGEN()
'deine berechnungen
End Sub
das kannst du dann via =WENNEIGEN()
in jede zelle einfügen. vorausgesetzt, die funktion ist auch so geschrieben, dass sie in jeder zelle anwendbar ist.
gruß
selli

Anzeige
AW: Jede Formel durch Makro-Funktion darstellbar?
10.06.2016 13:47:09
Juliane
Ok, das klingt doch erstmal gut. Unter unter "deine Berehcnung" kann ich jeglich Formel einfügen?
Was meisnt du gibt es für Nachteile?
Zellen, in denen ich dann die Funktion aufrufe, werden die dann zukünftig aktualisiert? Denn ich hatte schonmal Problem damit, dass ich in einer Zelle eine Berechnung unter Nutzung einer Funktion durchgeführt habe. Dann aber, als ich einer Spalte die Werte aktualisiert habe, die Zellen mit der Funktion nicht automatishc neugerechnet haben. Kann das sein?

AW: Jede Formel durch Makro-Funktion darstellbar?
10.06.2016 13:54:02
selli
hallo juliane,
Ok, das klingt doch erstmal gut. Unter unter "deine Berehcnung" kann ich jeglich Formel einfügen?
ganz sooo einfach ist das auch nicht.
die berechnungen werden als vba-code hinterlegt. nicht zu vergleichen mit der schreibweise in den zellen.
die eigenen funktionen werden auch mit jeder neuberechnung des blettes ausgeführt. voraussetzung hierfür ist eine veränderung (ereignis) im blatt oder der mappe, die auch eine neuberechnung auslöst.
farbwechsel in zellen lösen beispielsweise keine neuberechnung aus, auch nicht bei herkömmlichen funktionen.
zu erwähnen wäre aber noch, dass die funktion (der entsprechende code) auch verfügbar ist.
schreibst du ihn in die personl.xls und gibst die mappe weiter, fehlt der code und die berechnung wird nicht ausgeführt.
gruß
selli

Anzeige
AW: Jede Formel durch Makro-Funktion darstellbar?
10.06.2016 14:10:55
Juliane
Was meinst du mit "personl.xls". Wie kann da ein Code verloren gehen?

AW: Jede Formel durch Makro-Funktion darstellbar?
10.06.2016 14:17:47
selli
hallo juliane,
in die personl.xls kannst du makros oder funktionen schreiben, die dann für jede mappe, die DU öffnest zur verfügung stehen.
macht die mappe jemand aders auf einem anderen rechner oder als anderer benutzer auf, kann er/sie nicht auf deine, in personl.xls hinterlegten makros oder funktionen zugreifen.
gruß
selli

AW: Jede Formel durch Makro-Funktion darstellbar?
10.06.2016 14:25:45
Juliane
Ok. Und wo finde ich diese?
Wenn ich VBA in xls ganz normal öffne und links die Reiter und die Module aufgezeigt werden, dann bin ich aber im öffentlichen Bereich, oder?

Anzeige
AW: Jede Formel durch Makro-Funktion darstellbar?
10.06.2016 14:31:20
selli
hallo juliane,
kann sein, dass du noch keine hast.
wenn du eine makroaufzeichnung startest wirst du gefragt in welche mappe aufgezeichnet werden soll.
da wählst du dei persönliche arbeitsmappe.
nach der aufzeichnung findest du im vba-editor dann auch die personl.
gruß
selli

AW: Jede Formel durch Makro-Funktion darstellbar?
10.06.2016 14:32:10
Juliane
ah, ok. Danke.

AW: Jede Formel durch Makro-Funktion darstellbar?
10.06.2016 13:56:45
Fennek
Hallo Juli,
es gibt in vba zwei Ansätze, wie man Formel des Sheets einbinden kann:
worksheet.function. es erscheint eine Auswahl viele Funktionen
evalutate("syntax des Arbeitsblattes"), zB evaluate("=sum()")
Manchmal geht auch (für den =vergleich()
application.match(selbe Syntax wie vergleich)
mfg

Anzeige
AW: Jede Formel durch Makro-Funktion darstellbar?
10.06.2016 14:15:56
Juliane
Ok, dann hier als konkretes Beispiel: Die Formel habe ich hier aus dem Forum. Sie hilft mit dabei aus der Angabe einer Kalenderwoche (z. B. KW 16) und dem Jahr (z. B. 2016) ein Datum zu generieren: 24.04.2016 (immer der Sonntag). Ich möchte nun die Tagesdifferenz zwischen 2 Datum ermitteln:
Enddatum - Startdatum
bzw. als Formel: =WENNEIGEN(A1)-WENNEIGEN(A2)
Dabei kommt dann z.B. 200 Tage bei raus.
Die Frage ist nun, ob diese Funktion so in VBA möglich ist:
Function WENNEIGEN()
=DATUM(A2;1;7*A1-3-WOCHENTAG(DATUM(A2;;);3))+6
End Sub

AW: Jede Formel durch Makro-Funktion darstellbar?
10.06.2016 15:10:53
Fennek
Hallo,
als Beispiel:

Sub test()
Start = "10.6.2016"
ende = "25.8.2016"
diff = CDate(ende) - CDate(Start)
Debug.Print diff
End Sub
Was du gepostet hast ist kein Funktion. Eine Funktion in xl ist ein vba-Code, der auch einfach im Arbeitsblatt verwendet werden kann. die Syntax ist:
Function iName(... Übergabe von Parametern ...)
... VBA-Code
end function
Deine oben genannte Formel (=Datum(...) halte ich in der Syntax falsch.
mfg

Anzeige
AW: Jede Formel durch Makro-Funktion darstellbar?
11.06.2016 16:50:13
Fennek
Hallo,
als kleiner Nachtrag: der folgenda Code ist ähnlich wie die genannte Formel, einmal als "sub" und einmal als "Function". Ein paar Macken sind noch da, zB. sollte die Formel durch den Wert ersetzt werden und falls die KW des Vorjahres eingegeben wird, klappt es nicht.
Bedienung: Wenn man im Sheet die Funktion aufruft, muss eine Zelle mit einer Zahl zwischen 1 und 52 übergeben werden.

Sub Montag()
'berechnet das Datum des Montags der gegebenen Kalenderwoche
'für xl 2003
Jahr = Year(Date)
Jan1 = Evaluate("=date(" & Jahr & ",1,1)")
KW = 23
M1 = WorksheetFunction.Weekday(Jan1, 2)
Mon_D = (Jan1 - M1) + 7 * KW + 1
'Debug.Print CDate(Mon_D)
For KW = 1 To 24
Mon_D = (Jan1 - M1) + 7 * KW + 1
Cells(KW, "A") = Mon_D
Next KW
End Sub
Function Montag_KW(selection As Range)
If selection.Count > 1 Then Exit Function
If selection.Value  52 Then Exit Function
Jahr = Year(Date)
Jan1 = Evaluate("=date(" & Jahr & ",1,1)")
M1 = WorksheetFunction.Weekday(Jan1, 2)
KW = selection.Value
Montag_KW = (Jan1 - M1) + 7 * KW + 1
End Function
mfg

Anzeige
AW: Jede Formel durch Makro-Funktion darstellbar?
11.06.2016 20:09:00
Juliane
m,
mir fehlt leider einfach das VBA-Verständnis, um den Code nachvollziehen zu können. Wahrscheinlich habe ich mir das mit der Funktion einfach leichter vorgestellt.
Hintergrund ist, dass ich schon mal ein Funktion hier aus dem Forum hatte:
Function FNTCLR(ding As Range)
FNTCLR = ding.Font.Color
End Function
Und mit der Funktion kann man dann in xls alles mögliche machen. Z. B. Wenn(Funktion (Zelle) > ein bestimmter Wert, dann...
Und so etwas hatte ich auch für meine Datum-Funktion erhofft. Da geht es nicht nur darum, die Differenz zwischen 2 Datum u errechnen. Sondern z. B. auch darum Datum zu vergleichen. Also wenn Datum 1 größer als Datum 2 dann...
Und daher hatte ich auf eine Funktion gehofft, die ich in einer Excelformeln aufrufen kann und dann mir immer das Datum des SONNTAGS der angegebenen Kalenderwoche und Jahr ermittelt. Und die sich dann ergebenen DAtum kann ich für alles mögliche verwenden z. B. in Wenn-Formeln, Vergleiche etc.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige