一致は #N/A を返します

一致は #N/A を返します

セル G5 に値があります:

I~W478i~100

F31:F43の配列:

I~W478i~100
II~W707a~79
I~W621c~97.5
II~W693a~81.5
I~W452n~80
I~W693a~71.5
II~W707a~64
I~W478i~75
II~W724a~100
I~W707a~79
I~W693a~91.5
I~W587a~69
III~W724a~75

配列内の値の位置を決定するための MATCH 式は次のとおりです。

=MATCH(G5,F31:F43,0)

これは #N/A を返します。

F31 の値は G5 の値と一致するはずです。念のため、別の数式を作成します。

=IF(G5=F31,TRUE,FALSE)

これは TRUE を返します。ただし、MATCH 関数は依然として #N/A を返します。値と配列の両方を確認しましたが、どちらもデータ型は「一般」です。

この問題の考えられる原因は何でしょうか?

答え1

問題は、関数の最初のパラメータで「~」文字が特殊文字として使用されることですMATCH。これは、「~」に続く文字がワイルドカード文字ではないことを示すために使用されます(ドキュメンテーション最初のパラメータに「~」文字を含める場合は、「~」文字を 2 つ使用する必要があります。

したがって、G5 の値を から に変更するとI~W478i~100I~~W478i~~100関数MATCHは #N/A ではなく 1 を返します。

Scott Craner (ありがとう、Scott) が質問のコメントで指摘しているように、G5 をそのままにして、 を使用して、SUBSTITUTE数式の一部として追加の「~」文字を挿入することもできます。

=MATCH(SUBSTITUTE(G5,"~","~~"),F31:F43,0)

F31:F43 の値に または"*"文字も含まれる可能性がある場合は、すべてのを に、すべてのを に"?"変更する必要もあることに注意してください。"*""~*""?""~?"

関連情報