私の問題は、セル内に文字列として記述された条件があることです。たとえば、セル A1 に ">= 50" があります。これらの関数はブール条件を文字列として受け取るため、SUMIFS および COUNTIFS でこれを簡単に使用できます。したがって、COUNTIFS(範囲、A1) は、範囲内の項目のうち 50 以上である項目の数を示します。
IF に似た関数 (論理テストを評価するもの) でもこれを実行できるようにしたいのですが、IF 関数でブール値を評価する唯一の方法は、文字列ではなく実際のブール演算を使用することのようです。したがって、配列に適用する場合は IF(range >= 50, 1, 0) と同等のもの (条件が満たされているかどうかに応じて結果は 1 と 0 の範囲になる) が必要ですが、代わりに構文は IF_new(range, ">= 50", 1, 0) のようになります。
私の最終目標は、SUMPRODUCT() 内で IF_new(...) スタイルの関数を使用することです (どの行を含めるかを示すインジケーターのように)。そのため、関数内で単に >=50 を使用するのではなく、">= 50 (ブール値が文字列内に含まれ、COUNTIFS や SUMIFS と同様にそのように評価される) を使用してこれを行う方法を具体的に探しています。
これは VBA を使用せずに可能ですか? よろしくお願いします!
答え1
=">=50"
セルをブールIFステートメントに変更する標準的な方法はありません。=">=50"
できるCOUNTIF または SUMIF で使用できますが、通常、SUMPRODUCT 数式ではうまく機能しません。
OFFSETを使用して、範囲内の各セルを単一のセルとして分離します。範囲COUNTIF 内のテキストとして基準に照らして、SUMPRODUCT 演算でオン/オフを指定します。
=SUMPRODUCT(COUNTIF(OFFSET(A1, ROW(1:6), 0, 1, 1), A1), B2:B7, C2:C7)
おそらく、EVALUATE と名前付き範囲を使用してもこれを実現できるでしょう。