のデータTheRange
は{1,"",1,"",1,"",1,"",2}
.
=Match(2, TheRange, 1)
期待どおりに戻ります9
。=Match(1.5, TheRange, 1)
期待どおりに戻ります7
。=Match(1, TheRange, 1)
5
予想外の返品。
誰もこれに出くわしましたか?誰にも修正がありますか?
さらに、Worksheet.Function.Match
VBA で使用すると、さらに予期しない結果が得られます。
のデータTheRange
は{1,"",1,"",1,"",1,"",2}
.
=Match(2, TheRange, 1)
期待どおりに戻ります9
。
=Match(1.5, TheRange, 1)
期待どおりに戻ります7
。
=Match(1, TheRange, 1)
5
予想外の返品。
誰もこれに出くわしましたか?誰にも修正がありますか?
さらに、Worksheet.Function.Match
VBA で使用すると、さらに予期しない結果が得られます。
"match_type" 引数 (MATCH の 3 番目の引数) に 1 を指定すると、Excel は配列が並べ替えられることを期待します。どうやら、Excel は値のバイナリ検索を実行します。1 を検索するときに、中央から開始して中央の値 (この場合は 5 番目の値) を見つけます。
「match_type」に 0 を指定すると、期待どおりの結果が得られます (少なくともこの場合は)。詳細については、MATCH 関数のドキュメントを参照してください。
これを解決する 1 つの方法は、空白をエラーに変えることです。
次の式を試してください。
=MATCH(1/(2),1/$A$1:$A$9,-1)
=MATCH(1/(1.5),1/$A$1:$A$9,-1)
=MATCH(1/(1),1/$A$1:$A$9,-1)
これらは配列数式であるため、入力するときは、「Enter」ではなく「Ctrl+Shift+Enter」で確定する必要があります。