web-dev-qa-db-ja.com

ブール値のマルチステップ合計を単一の式に変換します

センサーの読み取り値がいくつかあり、値が許容範囲内にあるかどうかを確認しています。

これを行うには、IFを使用して、値が>または<計算された(平均)値であるかどうかを確認します。結果はそれぞれの列に保存されます。最後に、結果を合計して、範囲外(つまり平均を上回っている)の数を取得します。

たとえば、AxMean.Axと比較して、1.Ax0またはIf value is outside accepted boundsを取得します。

Image 1

次に、If value is outside accepted bounds.Axの合計を実行して、Number of values outside bound.Axを取得します。

Image 2, summation

質問
これを単一の数式に変換するにはどうすればよいですか?

10
clmno

あなたが求めている関数はCOUNTIF()です:

Worksheet Screenshot

_G3_に次の数式を入力し、_G3:I3_にctrl-enter/copy-paste/fill-rightを入力します。

_=COUNTIF(A3:A8,">"&D3)
_

COUNTIF()は、最初の引数の各値を2番目の引数の基準と照合し、それが満たされた回数をカウントします。


COUNTIF()を使用するのが、最も簡単で最良の解決策です。

もちろん、次のような式を理解するために、より複雑で難しいものを使用することもできます。

_=SUMPRODUCT(--(A3:A8>D3))
_

または配列が次のように入力されました

_{=SUM(--(A3:A8>D3))}
_

またはそれらのさらに不必要に複雑なバージョン。

ただし、この特定のケースでこれらのいずれかを使用することで得られるメリットはnoです。


実際、ヘルパー列の数を減らすことに関心があるように思われる場合、さらに優れた全体的な解決策は、平均ヘルパー列も省くことです。

Worksheet Screenshot

_D3_に次の数式を入力し、_D3:F3_にctrl-enter/copy-paste/fill-rightを入力します。

_=COUNTIF(A3:A8,">"&AVERAGE(A3:A8))
_

(もちろん、この式を=SUMPRODUCT(--(A3:A8>AVERAGE(A3:A8)))または{=SUM(--(A3:A8>AVERAGE(A3:A8)))}に変換することで、初心者にとっても理解しにくくなる可能性があります。)

11
robinCTS

SUMPRODUCT関数も問題を解決できます。

enter image description here

この式をG102で記述し、G102からI102に直接入力します:

=SUMPRODUCT(--(A102:A107>D102:D107))

N.B。必要に応じて数式のセルアドレスを調整します。

2
Rajesh S