Was wäre anstelle verschachtelter if-Anweisungen eine bessere Möglichkeit (leichter zu lesen und zu pflegen und weniger ressourcenintensiv), das zu tun, was ich brauche?
Die Formeln in den rechten 4 Spalten sind alle gleich, sie beziehen sich nur auf unterschiedliche Teile unterschiedlicher Registerkarten, die alle genau gleich funktionieren. Die Spalte „Ursprünglich gesendete E-Mail“ wird vom Benutzer ausgewählt (Datenüberprüfung). Die hervorgehobene Formel lautet:
=IF(OR([Initial Email Sent]="on hold",[Initial Email Sent]="not applicable"),[@[Initial Email
Sent]],IF(COUNTIF(a414engagement[Status],"<>Not Applicable")=0,"Not
Applicable",(IF((COUNTIF(a414engagement[Status],"Not
Started")+(COUNTIF(a414engagement[Status],"In
Progress"))=0),"Completed",(IF(COUNTIF(a414engagement[Status],"In
Progress")+(COUNTIF(a414engagement[Status],"Completed"))>0,"In
Progress","Not Started"))))))
Das ist ein ganz schöner Brocken. Es bezieht sich auf einen Teil der Registerkarte A414, der folgendermaßen aussieht:
Der Zweck der Formel:
- Wenn in dieser Zeile die erste gesendete E-Mail lautet:unzutreffendDiese Zelle sollte sagenunzutreffend.
- Wenn die erste gesendete E-Mailin der WarteschleifeDiese Zelle sollte sagenin der Warteschleife
Die anderen Funktionen beziehen sich alle auf den Inhalt des Zielarbeitsblatts und nicht auf das Übersichtsarbeitsblatt:
- Wenn alle Elemente markiert sindnicht angefangen, die Zelle A414 in der Übersicht sollte lautennicht angefangen
- Wenn alle Elemente markiert sindvollendetsollte in der Übersichtszelle stehenvollendet.
- In jeder anderen Kombination (z. B. alleim Gange, Hälftevollendet& Hälftenicht angefangen) sollte in der Übersichtszelle stehenim Gange.
Antwort1
Ihre Formel deckt Ihre Beschreibung nicht vollständig ab. Hier ist eine Formel für das von Ihnen beschriebene Szenario:
=IF( OR( [Initial Email Sent]="on hold", [Initial Email Sent]="not applicable" ), [@[Initial Email Sent]], IF( COUNTIF( a414engagement[Status], "<>Not Started" )=0, "Not Started", IF( COUNTIF( a414engagement[Status], "<>Completed" )=0, "Completed", "In progress" ) ) )
Oder vielleicht einfacher verständlich:
=IF(
OR(
[Initial Email Sent]="on hold",
[Initial Email Sent]="not applicable"
),
[@[Initial Email Sent]],
IF(
COUNTIF(
a414engagement[Status],
"<>Not Started"
)=0,
"Not Started",
IF(
COUNTIF(
a414engagement[Status],
"<>Completed"
)=0,
"Completed",
"In progress"
)
)
)
Der Trick besteht hier darin, dass Sie, anstatt alle „nicht gestarteten“ Zellen zu zählen, nach 0 Vorkommen suchen, bei denen die Zelle nicht „nicht gestartet“ ist.