15.06.2022, 09:42
Hallo Liesl,
warum gefällt dir meine VBA-Fkt. nicht? (s.Mappe)
Gruß Sigi
warum gefällt dir meine VBA-Fkt. nicht? (s.Mappe)
Gruß Sigi
Betrag gestaffelt nach Jahren genau aufteilen
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
15.06.2022, 09:54
(Dieser Beitrag wurde zuletzt bearbeitet: 15.06.2022, 10:00 von LieslWeppon.)
Da es für die Firma ist würde ich gerne Macros vermeiden. Mit Macros lässtsich. auf Grund von internen Einstellungen, die Datei nicht verschicken.
Vlt. kennt jemand eine "macrofreie" Lösung. Falls nicht, wird es sicher deines Danke Kannst du mir den "Marcotext / VBText" hier rein stellen?
15.06.2022, 10:16
Hi,
Warum benutzt Du nicht meine Formel, vor allem, damit man den Fehler nachvollziehen kann? Deine Formel funktioniert ja sowieso nicht.
Gruß
Edgar Meine Antworten sind freiwillig und ohne Gewähr! Über Rückmeldungen würde ich mich freuen.
15.06.2022, 10:21
(Dieser Beitrag wurde zuletzt bearbeitet: 15.06.2022, 10:23 von LieslWeppon.)
Wie gesagt, das habe ich, sie funktioniert leider nicht.
15.06.2022, 10:25
Hallo Liesl,
hier der VBA-Code: Function FoerdermittelProJahr(Foerderbetrag As Double, VonMMJJJJ As Date, BisMMJJJJ As Date, Jahr As Long) As Double Dim M1 As Long, M2 As Long, J1 As Long, J2 As Long, M As Long, J As Long, n As Long, al As Long Application.Volatile J1 = Year(VonMMJJJJ): M1 = Month(VonMMJJJJ): J2 = Year(BisMMJJJJ): M2 = Month(BisMMJJJJ): J = J1: M = M1 If VonMMJJJJ <= BisMMJJJJ Then Do If J = Jahr Then al = al + 1: n = n + 1: M = M + 1 If M > 12 Then J = J + 1: M = 1 End If Else al = al + 1: M = M + 1 If M > 12 Then J = J + 1: M = 1 End If End If Loop While (J * 100 + M <= J2 * 100 + M2) Else n = 0 End If FoerdermittelProJahr = Foerderbetrag * n / al End Function Gruß Sigi
15.06.2022, 10:27
Hallo nochmal
LG UweD
15.06.2022, 11:03
(Dieser Beitrag wurde zuletzt bearbeitet: 15.06.2022, 11:04 von BoskoBiati.)
Hi,
wäre mit meiner Formel genauso einfach abzustellen gewesen: Code: =WENN((JAHR($A2)>JAHR(D$1))+(JAHR($B2)<JAHR(D$1));0;DATEDIF(MAX($A2;MONATSENDE(D$1+1;-13)-1);MIN($B2;D$1+1);"M")*$C$2/DATEDIF($A$2-1;$B$2+1;"M"))
Gruß
Edgar Meine Antworten sind freiwillig und ohne Gewähr! Über Rückmeldungen würde ich mich freuen.
15.06.2022, 13:02
(Dieser Beitrag wurde zuletzt bearbeitet: 15.06.2022, 13:27 von LieslWeppon.)
Danke UweD
leider hat sich jetzt raus gestellt das deine Formel es nicht berechnet wenn die Laufzeit an einem beliebigen Tag im Monat beginnt: Lieber Bosko, nein leider nicht, deine Formel berechnet das Jahr 2017 nicht richtig. Hallo SIgi ich habe jetzt die VBA eingefügt aber es kommt immer nur #NAME?
15.06.2022, 13:43
(Dieser Beitrag wurde zuletzt bearbeitet: 15.06.2022, 13:44 von BoskoBiati.)
Hi,
dann zeige das an einem Beispiel, und zwar an einem Muster, was alle möglichen Kombinationen abbildet! Bisher waren alle Daten auf 1. oder Monatsende ausgelegt!
Gruß
Edgar Meine Antworten sind freiwillig und ohne Gewähr! Über Rückmeldungen würde ich mich freuen.
15.06.2022, 13:56
Hallo Liesl,
der VBA-Code muss in ein normales Modul kopiert werden: im MENÜ: - Entwicklertools - Visual Basic dort: VBA-Projekt markieren - rechte Maustaste - einfügen - Modul - dort den VBA-Code reinkopieren anschließend: zurück zu Excel - (im Projektmenü) - Excel-Symbol anklicken dann: über den Funktionsassistenten (fx) - Kategorie auswählen "benutzerdefiniert" - "FoerdermittelProJahr" markieren - ok weiter dem Assistenten (wie in Excelformel) folgen Gruß Sigi | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|