セル 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~100
、I~~W478i~~100
関数MATCH
は #N/A ではなく 1 を返します。
Scott Craner (ありがとう、Scott) が質問のコメントで指摘しているように、G5 をそのままにして、 を使用して、SUBSTITUTE
数式の一部として追加の「~」文字を挿入することもできます。
=MATCH(SUBSTITUTE(G5,"~","~~"),F31:F43,0)
F31:F43 の値に または"*"
文字も含まれる可能性がある場合は、すべてのを に、すべてのを に"?"
変更する必要もあることに注意してください。"*"
"~*"
"?"
"~?"