Anzeige
Archiv - Navigation
1860to1864
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

Formelberechnung via VBA

Formelberechnung via VBA
20.12.2021 14:39:23
Daniel
Hallo zusammen,
es gibt ein neues Projekt, bei dem ich um Eure Expertise bitte.
In einer Therapiegruppe werden im Zeitraum von 12-14 Wochen junge Erwachsene auf PC-Spielesucht behandelt. Ihre täglichen Spielzeiten (Spalten M bis S) werden Woche für Woche erfasst und psychologisch ausgewertet. Mich/uns interessieren die Veränderungsprozesse; d.h. die prozentuale Steigerung der Wochensummen ggü. der Vorwoche bzw. dem Start der Therapie (Spalten T bis V). Kurz: das Lambda des Verhaltensmaß
Meine Probleme:
1.) In Ausfall/Krank etc Wochen werden keine Werte erfasst/produziert, die Excel aber als Null wertet (im Prinzip ja das therapeutische Idealziel, aber inhaltlich natürlich nonsens). Um Div-0 Fehler zu vermeiden, habe ich in T eine Summenprodukt-Funktion erstellt. Gibt es noch eine elegantere Lösung?
2.) Ich scheitere an der Berechnung der prozentualen Berechnung zur Vorwoche via VBA (Formel: ((Woche minus Vorwoche) / Vorwoche)*100). Ich habe ein Makro geschrieben, mit formula.r1c1, komme aber nicht weiter. Wie gehe ich mit den Missing "Weeks" um? Wie kann ich Excel sagen, dass er im "Array" des Patienten bleibt (Woche 1 - x) und nicht über alle Gruppenmitglieder rechnet?
Diese neuen Fragen übersteigen meine Fertigkeiten, daher meine Bitte hier im Forum.
Die Datei als Vorlage gibt es hier: https://www.herber.de/bbs/user/149920.xlsm
Freundliche Grüße
Daniel Jäger
Diplom-Psychologe, Berlin

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formelberechnung via VBA
20.12.2021 15:20:20
ChrisL
Hi Daniel
Formeln kann man immer auch per VBA schreiben, aber erstmal geht es ja darum die Formel zu finden. Ich bin was Formeln betrifft kein Experte, aber trotzdem hier mein Versuch:
Hilfsspalte U (Lücken Wochen schliessen):
=WENN(T4="";WENN(SUMMEWENNS(U:U;L:L;L4-1;D:D;D4);SUMMEWENNS(U:U;L:L;L4-1;D:D;D4);"n.a.");T4)
Spalte V (prozentuale Änderung):
=WENN(U4="n.a.";"n.a.";WENNFEHLER(SUMMEWENNS(U:U;L:L;L4;E:E;E4)/SUMMEWENNS(U:U;L:L;L4-1;E:E;E4)-1;1))
cu
Chris
AW: Formelberechnung via VBA
20.12.2021 15:42:08
Daniel
@Chris: ... stark, das klappt wunderbar! Sogar bei gesetzten Filtern/Sortierungen bleibt er im richtigen "Patienten"-Wochenverlauf! Wäre es nicht denkbar, in Spalte T sofort Deine tolle Formel für die Summenbildung zu verwenden, oder geht das wegen der Nullsummen nicht? Warum die Hilfsspalte? ... und wie sähe die Formel für die prozentuale Veränderung zum ersten jeweils erfassten Wochenwert aus?
Bin sehr beeindruckt ...
Anzeige
Formel ohne Hilfsspalte möglich? offen
20.12.2021 15:46:41
ChrisL
Hi
Danke für die Rückmeldung.
Zum ersten Thema (Lösung ohne Hilfsspalte) lasse ich die Frage offen. Vielleicht fällt den Formel-Profis etwas dazu ein.
... und wie sähe die Formel für die prozentuale Veränderung zum ersten jeweils erfassten Wochenwert aus?
Meine Formeln haben als Summenbereich die Spalte U. Dies sollte sich relativ einfach auf eine andere Spalte ändern lassen.
cu
Chris
AW: Formel ohne Hilfsspalte möglich? offen
20.12.2021 15:59:16
Sigi.21
Hallo Daniel,
wenn du bei den Spalten flexibel sein möchtest, dann kann eine VBA-Fkt. helfen. (s. Mappe)
Du kannst die Spalten (Mo-Fr) beliebig ändern. Der Bereich (in der Funktion) sollte ca. 3-7 Zellen (wegen Lücken) umfassen, sodass fast immer zwei geeignete Werte zum Rechnen gefunden werden.
Gruß Sigi
https://www.herber.de/bbs/user/149922.xlsm
Anzeige
AW: Formel ohne Hilfsspalte möglich? offen
20.12.2021 16:31:36
Daniel
@Sigi: Dickes Danke! Mit so schnellen und potenten Lösungen habe ich in der Kürze der Zeit garnicht gerechnet; ich arbeite mich mit den Ansätzen ein und melde mich alsbald wieder :-)
AW: Formellösung ohne Hilfsspalte ...
20.12.2021 16:42:24
neopa
Hallo Daniel,
... für die prozentuale Veränderung wäre unter der Voraussetzung dessen, dass die Daten wie in Deiner Beispieldatei sortiert sind, wie folgt möglich:
In T4: =WENN((ANZAHL(M4:S4)&lt7)+(C4&D4C3&D3);"";WENNFEHLER(SUMME(M4:S4)/SUMME(M3:S3)-1;1))
diese ach unten kopiert, ergibt die gleichen Werte wie Du bisher als korrekt bezeichnet hast, Allerdings stellt sich mir dazu die Frage, sind die berechneten Werte wirklich korrekt? Wenn in einer Vorwoche z.B. nur an einem oder eben nicht allen Tage keine Daten erfasst sind, sollte/müsste dies doch mE entsprechend verhältnismäßig beachtet werden. Oder nicht?
Die Ermittlung der absoluten Veränderung zum Erstwert wäre auch ohne Hilfsspalte möglich, wenn Du das benötigen solltest, auch hierzu müsste aber zunächst vorgehende Frage geklärt werden. Oder?
Gruß Werner
.. , - ...
Anzeige
AW: Formelberechnung via VBA
20.12.2021 18:45:06
ChrisL
Hi Daniel
Die Lösungen kurz verglichen.
- Werner beginnt nach Lücken mit 100 %
- Sigi beginnt teilw. mit dem Wert des Vorgängers (andere Person; könnte man sicherlich noch abfangen)
- Selber habe ich die fehlenden Werte mit der Vorwoche aufgefüllt, was evtl. auch nicht gewünscht ist (entspricht gem. deiner Beschreibung fälschlicherweise dem Idealziel 0%)
Falls du aus dem Resultat ein Diagramm erzeugen willst, dann wäre ein #NV (no value) bei Lücken evtl. passend. Diese werden auch in Diagrammen als Lücken dargestellt und können somit von 0% unterschieden werden.
Generell müsste man vielleicht noch testen, ob/wie null und nichts unterschieden wird. Also wenn mal jemand 0h vor dem Spiel verbringt.
Unvollständige Wochen hat Werner bereits angesprochen, falls es die gibt.
Ich dachte erst es sei klar, aber anhand der unterschiedlichen Interpretationen zu urteilen, wäre eine Präzisierung sinnvoll. Vorausgesetzt es ist nicht doch schon eine passende Lösung dabei.
cu
Chris
Anzeige
AW: Formelberechnung via VBA
20.12.2021 19:51:00
Daniel
Guten Abend zusammen,
erstmal Danke, dass Ihr Euch so viele Gedanken macht. Das ist wirklich so ein tolles Forum hier. Gerne präzisiere ich das Setting:
Die Patienten führen täglich ein Medienlogbuch, welches wöchentlich gemeinsam ausgewertet wird. Manchmal werden diese Wochendaten nach Abwesenheit oder Ausfall in der Gruppe beim Folgetermin noch nachgetragen, manchmal wurde es schlichtweg vergessen oder vermieden (bei Suchterkrankungen ist die therapeutische Mitwirkung stark phasisch - egal ob Substanzabhängigkeit oder Verhaltenssucht ...). D.h.
  • Fehlende Werte sind klare No Values und dürfen sich nicht positiv (Idealziel) auf die Bilanz auswirken. Wenn jemand 0 Stunden spielte, dann tragen wir auch eine Null ein.

  • DIe Veränderung zur Vorwoche bezieht sich stets auf die Spielzeit der letzten Woche des selben Patienten, in der belastbare Daten vorliegen. Daher liegst Du richtig Chris! Eine Vermischung der Daten bzw. Vergleiche mit den Spielzeiten anderer Patienten macht in der Behandlung keinen Sinn, da die Suchtausgangsniveaus z.T. stark voneinander abweichen. Deshalb ist der VBA Ansatz von Sigi so nicht anwendbar, da die Datenquellen nicht nur einer Person zuzuordnen sind, sondern sich je nach Filterung auch kreuzen.

  • Ergo: DIe Variante von Chris kommt dem Setting bisher am Nächsten.
    Was ich im Grunde brauche:
  • fehlende Werte (Tageswerte und Wochensummen) als klare NV für eine reibungsfreie inhaltliche und grafische Auswertung

  • eine Spalte mit der Formel zur prozentualen Veränderung der WNS (Spalte T = WochenNutzungsStunden) zur letzten Vorwoche mit Daten - möglichst ohne Hilffspalte

  • eine zweite Spalte mit der Formel der prozentualen Veränderung der WNS zur ersten Woche mit verfügbaren Daten (das ist quasi die Veränderung zur Null-Linie ohne Treatment; später werden wir auch ne Kontrollgruppe ohne Behandlung erheben, um zu schauen ob das von mir entwicklelte Entwöhnungskonzept funktioniert)

  • Klingt spannend? Ist es auch, sag ich Euch. Ihr helft hierbei v.a. vielen Betroffenen ...
    Was ich mit Chris Formel geschafft habe, ist die Erweiterung der kriterienprüfung zur laufenden Staffel (Spalte A). Manche durchlaufen das Programm mehrfach, so dass der Namen als Key nicht ausreicht.
    Freundliche Grüße
    Daniel Jäger, Berlin
    Anzeige
    AW: Formelberechnung via VBA
    20.12.2021 20:35:47
    Sigi.21
    Hallo Daniel,
    die Namen können bei der VBA-Fkt. natürlich auch noch berücksichtigt werden; das hatte ich zunächst übersehen.
    (s. Mappe: Änderungen zur Vorwoche und zur ersten Woche)
    Gruß Sigi
    https://www.herber.de/bbs/user/149925.xlsm
    AW: Formelberechnung via VBA
    21.12.2021 09:51:31
    Daniel
    Guten Morgen Sigi,
    Deine Lösung sieht jetzt deutlich besser aus. Dazu habe ich zwei Fragen:
    - Der Code startet immer mit der ersten verfügbaren Differenz, was absolut schlüssig ist. Kann man mit Deiner Lösung auch einstellen, dass die erste Messwoche mit 100 oder 0 Prozent beginnt? (bei Chris Ansatz geht das, was mir gut gefällt ...)
    - Kann man die Staffel (Spalte A) als Prüfkriterium mit einbeziehen? Manche Patienten durchlaufen das Programm mehrfach (Rückfälle, Abbrüche, Corona etc.). Meine Versuche, die Matrixformel auf =AendVorwoche($A$4:A5;$D$4:D5;$T$4:T5) bzw. =AendVorwoche($A$4:D5;$T$4:T5) anzupassen liefern bisher keine Werte zurück.
    Freundliche Grüße
    Daniel Jäger
    Anzeige
    AW: Formelberechnung via VBA
    21.12.2021 11:03:26
    Sigi.21
    Hallo Daniel,
    die Spalte A (Staffel) kann auch noch mit einbezogen werden.
    Die andere Frage verstehe ich nicht so ganz.
    Die erste Messwoche entspricht doch dem Basiswert der Änderung (und damit 100%). Das ist doch deine Bedingung: (Zitat: Formel: ((Woche minus Vorwoche) / Vorwoche)*100)" (bedeutet Vorwoche ist Basiswert, 100%)
    Die Fkt. rechnet ja nur die jeweilige Änderung(!) (+/-) aus. Da kann auch eine Änderung von 0% (gleichbleibend) oder 100% (Verdoppelung) rauskommen. Also wie soll ich deine Frage verstehen?
    Gruß Sigi
    AW: Formelberechnung via VBA
    21.12.2021 11:29:16
    Daniel
    Guten Morgen Sigi,
    zu Deiner Frage:
    Ja, der erste Wochensatz ist der zugrundeliegende Basiswert, zu welchem die absolute und wöchentliche Veränderung in Prozent von Interesse sind. Rein mathematisch hast Du Recht, aber die Veränderung in der ersten Woche zu einer unbekannten Größe vor Behandlung als Nullpunkt ist für meine KollegInnen etwas griffiger. Daher wäre die Option, diesen Wert als Null Prozent auszuweisen/zu deklarieren schön.
    Meine Frage:
    Mir ist aufgefallen, dass Deine Funktion nur Werte für auf klassischer Summenfunktion beruhende Daten ausgibt. Sobald ich eine Wenn Funktion mit Abfrage eines Summenprodukts für die Spalte T einsetze
    
    WENN(SUMMENPRODUKT(--ISTLEER(M4:S4))>0;"-";SUMME(M4:S4)))
    
    scheint Excel diese Werte nicht so recht zu vertragen. Kannst Du Dir das erklären? Zahlen sind doch Zahlen?
    Viele Grüße
    Daniel Jäger
    Anzeige
    AW: Formelberechnung via VBA
    21.12.2021 11:53:22
    Sigi.21
    Hallo Daniel,
    beim Summenprodukt "WENN(SUMMENPRODUKT(--ISTLEER(M4:S4)) größer 0;"-";SUMME(M4:S4)))" kommt halt auch Text(!) ("-") als Ergebnis raus. Nimm statt dessen eine Null, die kannst du auch über Formatierung unterdrücken, wenn du sie nicht sehen willst.
    Die anderen Punkte sehe ich mir später noch an. Hab' jetzt leider gar keine Zeit dafür. (Evtl. heute am Abend)
    Gruß Sigi
    AW: Formelberechnung via VBA
    21.12.2021 19:58:03
    Sigi.21
    Hallo Daniel,
    anbei eine dritte Variante mit StaffelNr. (s. Mappe)
    Du kannst auch für die "erste Woche" optional einen "Defaultwert/Prozent" (0-100 oder leer lassen) mitgeben.
    Gruß Sigi
    https://www.herber.de/bbs/user/149942.xlsm
    Anzeige
    AW: Formelberechnung via VBA
    22.12.2021 11:48:10
    Daniel
    Hallo zusammen,
    hiermit möchte ich mich herzlich bei Euch, Sigi und Chris, für die tolle Hilfe bedanken. Eure Lösungsansätze sind voll verwertbar und haben das Projekt enorm vorangebracht. Natürlich habe ich für die Tabelle weitere Ideen, die ich aber an anderer Stelle im Forum platziere.
    Bis dahin frohe Weihnachten!
    Viele Grüße
    Daniel Jäger
    AW: Formelberechnung via VBA
    21.12.2021 10:15:51
    ChrisL
    Hi
    Hier ein Vorschlag:
    https://www.herber.de/bbs/user/149927.xlsx
    Wenn tatsächlich auch einzelne Tageswerte fehlen können, dann bleibt m.E. nichts anderes wie mit dem Wochendurchschnitt zu arbeiten.
    Durchschnitt:
    =WENN(ANZAHLLEEREZELLEN(M3:S3)=7;#NV;MITTELWERT(M3:S3))
    Abweichung vom Startpunkt:
    =WENN(L3=MINWENNS(L:L;T:T;">"&0;D:D;D3);0;T3/SUMMEWENNS(T:T;L:L;MINWENNS(L:L;T:T;">"&0;D:D;D3); D:D;D3)-1)
    cu
    Chris
    Anzeige
    AW: Formelberechnung via VBA
    21.12.2021 11:31:18
    Daniel
    Guten Morgen Chris,
    ich habe mir Deine neue Variante angesehen. Zwei Dinge gefallen mir sehr gut:
    - keine Hilfsspalte
    - Unterscheidung zwischen fehlender Wert und Null als Wert
    Geht die NV Deklaration wirklich nur via Mittelwert? Wir arbeiten gerne mit den Summen statt dem Durchschnitt, weil wir so die "Dosis" Zeit als kritische Investition in das Suchtverhalten besser i.S.v. drastischer quantifizieren können. Durchschnitte laden - psychologisch gesehen - zur Bagatellisierung ein (Spritverbrauch, Zigarettenkonsum, Ratenkäufe etc.).
    Ich glaube, durch Dich und Sigi einer sehr guten Lösung schon ganz nahe zu sein und möchte gerne das beste aus beiden "Welten" vereinen.
    Freundliche Grüße
    Daniel Jäger
    AW: Formelberechnung via VBA
    21.12.2021 12:38:59
    ChrisL
    Hi Daniel
    Also wenn ein einzelner Wochentag fehlt, dann würde eine Summe das Bild verzerren. In der Beispieldatei habe ich zu testzwecken die Daten verändert.
    - P4 = kein Wert
    - Q4 = 0 (Wert vorhanden, aber nicht gespielt)
    Mit unvollständigen Wochen kann man wie folgt umgehen:
    a) Die Woche ganz ausschliessen (weil ein fehlender Wert zu einer fehlerhaften Summe/Statistik führen würde)
    b) Mit Mittelwert arbeiten
    Was man auch noch machen könnte wäre den fehlenden Tag mit dem Durchschnittswert aufzufüllen. Also z.B. 6 Werte auf 7 Tage hochrechnen.
    =WENN(ANZAHLLEEREZELLEN(M3:S3)=7;#NV;MITTELWERT(M3:S3)*7)
    Bei vollständigen Wochen ergibt sich dadurch die korrekte Summe. Bei unvollständigen Wochen bekommst du einen "theoretischen" Wert, der zwar vergleichbar ist, aber eben doch nicht ganz der Realität entspricht. Ohne die Formel zu kennen lässt sich der "theoretische" Wert darum nicht nachvollziehen, weshalb mir diese Variante nicht ganz so gut gefällt.
    cu
    Chris

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige