Mein Problem ist, dass ich ein Kriterium als Zeichenfolge in einer Zelle geschrieben habe, z. B. steht „>= 50“ in Zelle A1. Ich kann dies problemlos mit SUMIFS und COUNTIFS verwenden, da diese Funktionen das boolesche Kriterium als Zeichenfolge verwenden. COUNTIFS(Bereich, A1) würde mir also sagen, wie viele Elemente im Bereich größer oder gleich 50 sind.
Ich möchte dies auch mit einer Funktion ähnlich IF tun können (einfach etwas, das einen logischen Test auswertet), aber es scheint, dass die einzige Möglichkeit, einen Booleschen Wert in der IF-Funktion auszuwerten, darin besteht, die tatsächlichen Booleschen Operationen und nicht eine Zeichenfolge zu verwenden. Ich möchte also das Äquivalent von IF(Bereich >= 50, 1, 0), wenn es auf ein Array angewendet wird (das Ergebnis sollte also ein Bereich von Einsen und Nullen sein, je nachdem, ob die Bedingung erfüllt ist), aber stattdessen wäre die Syntax etwa IF_new(Bereich, ">= 50", 1, 0).
Mein endgültiges Ziel ist es, die Funktion im IF_new(...)-Stil innerhalb eines SUMPRODUCT() zu verwenden (wie ein Indikator dafür, welche Zeilen eingeschlossen werden sollen). Daher suche ich speziell nach einer Möglichkeit, dies mit ">= 50" (so dass der Boolesche Wert in einer Zeichenfolge enthalten ist und auf diese Weise ausgewertet wird, genau wie in COUNTIFS und SUMIFS) innerhalb der Funktion zu tun, anstatt nur >=50.
Ist das ohne VBA möglich? Vielen Dank im Voraus!
Antwort1
Es gibt keine Standardmethode, um =">=50"
eine Zelle in eine boolesche IF-Anweisung umzuwandeln. Ein Verweis auf die Zelle, die=">=50"
dürfenkann in ZÄHLENWENN oder SUMMEWENN verwendet werden, funktioniert aber normalerweise nicht gut in SUMMENPRODUKT-Formeln.
Verwenden Sie OFFSET, um jede Zelle in einem Bereich als einzelne Zelle zu isolierenReichweiteanhand der Kriterien als Text in einem ZÄHLENWENN, um ein Ein/Aus in einer SUMMENPRODUKT-Operation bereitzustellen.
=SUMPRODUCT(COUNTIF(OFFSET(A1, ROW(1:6), 0, 1, 1), A1), B2:B7, C2:C7)
Sie könnten dies wahrscheinlich auch mit EVALUATE und benannten Bereichen erreichen.