0

のデータTheRange{1,"",1,"",1,"",1,"",2}.

  • =Match(2, TheRange, 1)期待どおりに戻ります9

  • =Match(1.5, TheRange, 1)期待どおりに戻ります7

  • =Match(1, TheRange, 1)5予想外の返品。

誰もこれに出くわしましたか?誰にも修正がありますか?

さらに、Worksheet.Function.MatchVBA で使用すると、さらに予期しない結果が得られます。

4

2 に答える 2

3

"match_type" 引数 (MATCH の 3 番目の引数) に 1 を指定すると、Excel は配列が並べ替えられることを期待します。どうやら、Excel は値のバイナリ検索を実行します。1 を検索するときに、中央から開始して中央の値 (この場合は 5 番目の値) を見つけます。

「match_type」に 0 を指定すると、期待どおりの結果が得られます (少なくともこの場合は)。詳細については、MATCH 関数のドキュメントを参照してください。

于 2010-03-02T14:40:43.440 に答える
0

これを解決する 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」で確定する必要があります。

于 2010-04-05T21:18:10.983 に答える