- ベストアンサー
Excel - 関数に関する疑問
お世話になります。 たとえばある表で、A1(1月とします)からL1(12月とします)に向かって 5 7 11 14 13 13 25 27 15 16 20 22 と並んでいるとします。 また、この数値は累計で、12月に位置する「22」が最終の値だとします。 このうち、セルに常に最新の値を出す式として =IF(COUNT(A1:L1),LOOKUP(MAX(A1:L1)+1,A1:L1),"") というものをこちらで拝見し、これ自体は非常に便利で活用しているのですが、もひとつこの式の意味するところがよく分からずにいます。 何故COUNTをする必要があるのか? MAX(A1:L1)は「27」のハズなのに、何故最終の「22」が引けるのか? ていうか「+1」って何? どなたか、解説をお願いいたしますm(_ _)m
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>何故COUNTをする必要があるのか? 数値が未入力のときのエラー処理です。 0でなければTRUEとみなされます >MAX(A1:L1)は「27」のハズなのに、何故最終の「22」が引けるのか? >ていうか「+1」って何? の まずは「ていうか「+1」って何?」 から。最大値より大きければ何でもよいです LOOKUP(8^3^8,A1:L1) もありです。 次に、「何故最終の「22」が引けるのか?」 LOOKUP関数は二分探索を行う関数です。VLOOKUPやMATCH関数の検索(照合)の型を「TRUE」にした場合も同様です。 その場合、昇順(降順)に並べ替えるのがヘルプに掲載されている使用法になります。 以下、私見 Excelにおける二分探索のアルゴリズムを逆手に取った方法だと考えています。 大きな値を求めて、右半分、そしてさらにその右半分、さらに・・・と検証するのではないでしょうか? もちろん、L1セルに値があればこの範囲内の最大値とみなされ、そのまま表示されると考えられます
その他の回答 (1)
- mshr1962
- ベストアンサー率39% (7417/18945)
>何故COUNTをする必要があるのか? COUNT(A1:L1)は未入力のときに表示しない設定です。 >ていうか「+1」って何? LOOKUP(MAX(A1:L1),A1:L1)の結果は最大値である27(8月)の位置を表示します。 +1することで存在しない28以下の数値を探すため、 結果として最後に数値のあるセル位置を割り出せるのです。
お礼
はぁーーーー ははぁーーーーー なるほど、よく分かりました! ありがとうございました!!
お礼
ははぁ、なるほど、最大値を上回る数を探して、右へ右へ… 二分探索についても、参考URLからよく分かりました。 ありがとうございました。