複数のネストされた IF ステートメントを含む SUM 配列数式があり、非常に非効率的です。私の数式は 500 行を超えていますが、簡単なバージョンを次に示します。
{=SUM(IF(IF(A1:A5>A7:A11,A1:A5,A7:A11)-A13:A17>0,
IF(A1:A5>A7:A11,A1:A5,A7:A11)-A13:A17,0))}
ご覧のように、数式の前半では、配列が 0 より大きい場所をチェックし、ゼロより大きい場合は、数式の 2 番目の部分でそれらを合計します。
同じ IF ステートメントが 2 回繰り返されていることに気付くでしょう。これは私にとって非効率的ですが、正しい答えを得る唯一の方法です。
私が持っているサンプルデータは次のとおりです。
スプレッドシートのサンプル データ http://clients.estatemaster.net/SecureClientSite/Download/TempFiles/example.jpg 上記の式を使用すると、この場合の答えは 350 になります。
配列内に MAX ステートメントを入れようとした場合、ゼロより大きい場所を見つけるためにテストを削除すると、次のようになりました。
{=SUM(MAX(IF(B2:B6>B8:B12,B2:B6,B8:B12)-B14:B18,0))}
ただし、各範囲のデータの最初の行のみを計算しているようで、70 という間違った答えが返されました。
数式のサイズを小さくしたり、そこに IF ステートメントを繰り返す必要がないことでより効率的にしたりできることを知っている人はいますか?
アップデート
ジミー
あなたが提案したMAX式は、実際にはすべてのシナリオで機能しませんでした.
以下のように行 1 から 5 のサンプル データを変更した場合 (一部の数値が行 7 から 11 のそれぞれのセルよりも大きく、一部の数値が小さいことを示しています)
スプレッドシートのサンプル データ http://clients.estatemaster.net/SecureClientSite/Download/TempFiles/example2.jpg
私が達成しようとしている正解は 310 ですが、MAX 式は 275 という間違った答えを与えると提案しました。
正しい答えを得るには、式が配列関数である必要があると推測しています。
他の提案はありますか?