4年に一度のスポーツの祭典 全競技速報中

=MATCH(1,0/(I42:I50<>""))の「0/(I42:I50<>"")」の意味を教えてください。

gooドクター

A 回答 (1件)

珍しい記述ですね。


普通はこんな特殊な記述は使いません。

これは普通MATCH関数では配列の左側から検索するものを、右側から検索するという意味です。

これは結構面倒なんですよ。
Excelのいくつかの仕様を理解していないと、呪文にしかなりません。

・・・面倒な説明・・・

まず、MATCHの3番目のパラメータが省略されています。
普段使うときは省略せず、「0」を指定するのではないでしょうか。
「0」は、完全一致で検索するというオプションです。
(検索値が見つからないとエラーを返しますね)
省略されると「1」が指定されているとみなされます。
「1」は、一致するものがない場合、検索値以下の最大の値を検索する。ただし、データは昇順に並んでいることが必要。
…です。
これ、「データは昇順に並んでいることが必要」が重要になります。
すなわち、
 1,2,3,4,5,6,7,8,9
のように並んでいる必要があるわけです。
これが
 1,2,2,4,5,6,7,8,9
である場合に
「2.5」を検索すると3番目に並んでいる「2」が抽出され値として「3」が返ります。
【↑ここ重要】

同じ数字が並んでいたら、後ろ(右側)の値が抽出されてその位置が値として返るわけです。

・・・

それでは、なぜ論理値(TrueとFalse)でゼロを割るのか。
ゼロをTrueで割るという事は
 0/1
ですので、
 0
が返ります。
対して、ゼロをFalseで割るという事は
 0/0
ですので
 #DIV/0!
と、ゼロで割るな!と怒られます。
この怒られた場合、値は無い空白扱いになります。
【↑これも重要】

すると、条件式の「I42:I50<>""」の結果が
 Trueの場合は「0」
 Falseの場合は「空白」
になります。
 0,,0,0,,,,,0,
なんて配列が出来上がります。
この配列の中から「1」以下で最も大きい値があるのはどこ?
…と言うわけです。

・・・

ですので、
 =MATCH(1,0/(I42:I50<>""))

 =MATCH(2,0/(I42:I50<>""))
 =MATCH(2,0/(I42:I50<>"",1))
としてもOK。

ね。面倒でしょ。
呪文にならないよう、置き換えられる数式を示しましたので、
意味を忘れてしまったら、この置き換えられる数式を頑張って思い出してください。
すると、きっと、たぶん、意味を思い出せるのではないでしょうか。


・・・余談・・・

この式は Ctrl+Shift+Enter で確定させ
 「配列数式」 
にしないと正しく動作しません。
    • good
    • 2
この回答へのお礼

ありがとうございます。初心者の私には理解するのに時間がかかりそうです。少しづつ理解したいと思います。

お礼日時:2021/05/12 09:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング