• 締切済み

Excelのmatch関数エラー原因が分かりません

match関数で「#N/A」と表示される原因が分かりません。 例えば、セルB1に任意の文字列を書込み、セルC1に「=match(B1,A:A,0)」と書き込むと、「#N/A」と表示されます。 ところがA列を選択し、「検索と置換」を使ってB1セルの文字列を「検索する文字列」の欄にコピー/ペーストして検索すると同じ文字列を持つセルが検索できてしまいます。 何が原因でこの様な事が起こるのか教えて頂けないでしょうか。 また、match関数でのエラー回避の方法がありましたら、これも併せてお願いします。

みんなの回答

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.7

No.1です。補足は読みました。 文字列が原因かどうか確認するならB1に「=A5」のようにA列の値を表示させて C1に正しい答えが表示されるか確認してください。 正しい答えが出る場合は、A列の文字列に問題があります。 見えない文字としてはスペースの他、外字、タブ、キャリッジリターン、ラインフィード等あります。 CLEAN関数を使って置換するか、手入力し直してください。 http://office.microsoft.com/ja-jp/excel-help/HP010062560.aspx 逆に「#N/A」が表示される場合は、シートまたはブックそのものが壊れてる可能性があります。 新しいブックを作成して、現在のシートの内容をコピーして同じ結果になるか確認してください。

全文を見る
すると、全ての回答が全文表示されます。
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.6

>以上の処理を行っても問題が解決しないため、困っています。 確認ですが、「区切り位置」の操作は行ってみましたか? それでもうまくいかないなら元データに何らかの表示されない文字コードが挿入されている可能性が考えられます(Webページをコピー貼り付けしたような場合)。 検索対象のA列のセルを参照する以下の数式を入力すると、どのような数字が返されるか調べてみてください。 =CODE(MID(A1,LEN(A1),1))

全文を見る
すると、全ての回答が全文表示されます。
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.5

スキャナーなどのデータがA列で使われているのでしたらB1セルに次の式を入力して下方にオートフィルドラッグします。 =TRIM(SUBSTITUTE(A1,CHAR(9),)) CHAR(9)はタブマークなどがあるのを消すためです。 その後にB列を対象にMATCH関数を使います。C1に検索の文字があるとして =IF(COUNTIF(B:B,C1),MATCH(C1,B:B,0),"")

全文を見る
すると、全ての回答が全文表示されます。
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.4

「検索と置換」の操作では例えばB1セルに太陽と入力してあり、太陽を検索すればA列に太陽を含む文字があれば、例えば太陽光発電の文字についても検索されます。太陽以外の文字があっても検索されるのです。太陽の文字の前後に空白などがある場合でも検索されます。しかしながらMACH関数の場合には太陽の文字の前や後ろに空白があれば見かけはB1セルの文字と同じになっていてもエラーの#N/Aが表示されます。 太陽の文字の前後に空白や文字があってもエラー表示をさせないようにするためには次のような式を使用すればよいでしょう。 =MATCH("*"&B1&"*",A:A,0) A列に太陽の文字がない場合でもエラー表示をしないようにするためには次のような式にします。 =IF(COUNTIF(A:A,"*"&B1&"*"),MATCH("*"&B1&"*",A:A,0),"") もちろん太陽の文字の前後に空白や文字がある場合にはMATCH関数の対象外とするのでしたら、しかもエラー表示をさせないようにするのでしたら次のような式にします。 =IF(COUNTIF(A:A,B1),MATCH(B1,A:A,0),"")

全文を見る
すると、全ての回答が全文表示されます。
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

すでに皆さんから回答があるように、#N/Aエラーの原因は検索文字とA列のデータが一致しない(同じ値でない)ためです。 また、、「検索と置換」を使ってB1セルの文字列を「検索する文字列」の欄にコピー/ペーストして検索すると、きちんとヒットするのは、検索する値が「文字列数値」の場合、または検索の「オプション」で「完全に一致するセルを検索する」にチェックを入れていないから発生します(部分検索で他の文字が含まれていてもヒットする)。 解決法は、文字列数字の場合は、A列を選択して「データ」「区切り位置」で「完了」します。 スペースが入っている場合は、A列を選択して、検索の「オプション」で「完全に一致するセルを検索する」にチェックを入れて、検索する文字列にスペースを入力し、置換後の文字列には何も入力せず「すべて置換」します。

cokun
質問者

お礼

丁寧なご回答、ありがとうございます。 説明不足な点がありまして、申し訳ありません。

cokun
質問者

補足

説明不足の点がありました。申し訳ありません。補足させて頂きます。 まずスペースの件ですが、A列およびB1セルにおいて、全角と半角スペースを一括変換で削除する処理をしてみました。 また、文字の全角/半角で問題になっている可能性も考えて、asc関数で、A列およびB1セルを半角文字にもしています。 検索の部分検索/完全一致は切り替えても違いはありませんでした。 以上の処理を行っても問題が解決しないため、困っています。 他に考えられる原因がありましたら、お願いします。

全文を見る
すると、全ての回答が全文表示されます。
noname#204879
noname#204879
回答No.2

お示しの式 =match(B1,A:A,0) を次の式にしたらどうなりますか? =MATCH(B1&"",A:A,0) または =MATCH(N(B1),A:A,0)

cokun
質問者

お礼

こんなに早く回答を頂いて、ありがとうございます。 説明不足な点がありましたので、No.3の方のところで補足させて頂きます。

全文を見る
すると、全ての回答が全文表示されます。
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

考えられるのは 1.A:A列の値とB1の値が数値と文字列のため違うものと判断 2.A:A列の文字の前後にスペース等余分な文字列が含まれるため違うものと判断

cokun
質問者

お礼

こんなに早く回答を頂いて、ありがとうございます。 説明不足な点がありましたので、No.3の方のところで補足させて頂きます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルのMATCH関数について

    エクセルのMATCH関数についての質問ですが、どうしてもエラーが表示され悩んでいます。どうか教えていただければと思います。 たとえば下記のような場合なぜかエラーが発生してしまいますがどうしてでしょうか?      A列   B列   C列   D列   E列   F列 1行              A     B    A+B  戻り値 2行    2.0        1.0    1.2   2.2   2 3行    2.2        0.9    1.1   2.0   1 4行    2.4        1.1    1.3   2.4   #N/A 5行    2.6        1.0    1.4   2.4   3 使用している関数は、 E列2行 =C2+D2  F列2行 =MATCH(E2,$A2:$A5,0) E列3行 =C3+D3  F列3行 =MATCH(E3,$A2:$A5,0) E列4行 =C4+D4  F列4行 =MATCH(E4,$A2:$A5,0) E列5行 =C5+D5  F列5行 =MATCH(E5,$A2:$A5,0) です。ここでどうしても、F列4行にエラー値(#N/A)が発生してしまいます。どうしてでしょうか? E列4行とE列5行は同じ値にもかかわらず戻り値が違うのはどうしてでしょうか? また、不思議なことにE列4行に手入力で2.4の値を入力した場合は戻り値は3となり、正しい値を表示します。どうしてでしょうか? 以上、よろしくお願いします。

  • エクセル MATCH関数について

    エクセル2013の練習でMATCH関数とINDEX関数を利用した データを作っていました。 添付した画像のD79でMATCH関数を使って番号を表示しています。 D79に入力した式は=MATCH(C79,B73:B76)です。 指定の行はB73~B76までの4行で、春、夏、秋、冬の順番で並んでいますが C79に春と入力すると、順番としては1番目の春が何故か3と表示されます。 他の夏、秋、冬は順番通り2,3,4と結果が表示されます。 シートの設定を変にしてしまったのかもしれないと新規で開いて試しましたが結果は同じでした。 MATCH関数の検索を行ではなく列側に変えて試しもしましたが、結果は同じでした。 春以外の言葉や数字だとこのようなことは起こりません。 また、リストにしても直接打ち込みにしても同じ結果でした。 この現象を春を使用しない以外に回避する方法がありますでしょうか? 宜しくお願い致します。

  • vlookupに、Indirect と Match 関数を組み合わせる

    vlookup関数で、検索値にSheet1(Book1)から、範囲は、Sheet2(Book1)のセルにある名前のついているSheet1(Book2), そして、列番号は、指定した名前とマッチするSheet1(Book2)の列番号から、導き出そうとしています。 ところが、Matchで指定した範囲は、Indirect内の関数として認識されないようで、結果が得られません。 たとえば、 Book1のA1~E1にタイトルが入っています。(Index, Title, Book, Author, Frequency) Book2には、 シート1: InputName シート2: Output シート2に以下の関数を入れてみましたが、うまくいきません。 ちなみに、VLOOKUPの列番号を Match関数の代わりに、5 とすると、結果オーライですが、Book1 の列順が変わっていることがあるので、Matchを使ってエラーを避けたいのですが、以下の関数のどこを直すべきでしょうか? =IF(ISNA(VLOOKUP(C2,INDIRECT("'["&InputName!$A$2&"]"& InputName!$B$2&"'!"&"$A$2:$E$1400"),MATCH("Frequency",$A$2:$E$2,0),FALSE)),0,VLOOKUP(C2,INDIRECT("'["&InputName!$A$2&"]"& InputName!$B$2&"'!"&"$A$2:$E$1400"),MATCH("Frequency",$A$2:$E$2,0),FALSE)) よろしくお願いします。

  • エクセルVBA MATCHをユーザー定義関数で使う

    ユーザー定義関数の質問です。 ある値をB列で探し、見つけたセルの行番号を取得したいのですが分かりません。 条件が一つあってそれはAの値が10以下のものは検索から除外するということです。 例 A  B 6  50 5  45 7  2 12 45 11 9 例えばBが45かつAの値が10以上であるセルの行番号はこの例だと4になります。 ワークシート関数を使うと{=MATCH(45,(A1:A5>=10)*(B1:B5),0)}でできました。しかしユーザー定義関数で.Match(45, Worksheets("Sheet1").Range("A1:A5>=10") * Worksheets("Sheet1").Range("B1:B5"), 0)とやっても#VALUE!となってしまいました。何がおかしいのでしょうか。

  • INDEXとMATCH関数について。

    業務で使用しているファイルにINDEXとMATCHを組み合わせた関数を使っています。 =INDEX(Sheet4!E2:E999,MATCH(Sheet1!F17,Sheet4!A2:A999,0)+2,0) です。 教えて頂きたいことは、 ・上記の関数の説明(詳細)この関数はどういったしくみになっているのか。 ・セルが空白のときに#N/Aを表示させないこと。 ・完全一致型にしたいこと。 この3点を教えて頂けませんか?よろしくお願いします。

  • MATCH関数について

    A1  B1 C1 1 ○   3 2 × 13 3 × 44 4 ○   4 5 ○ 5 A列に色んな数字が入っています。A1セルの数がC列の数字の中にあれば、B1に○、なければ×を表示させるにはどうすればいいのでしょうか。MATCH関数を使うのだと思っているのですが・・・。 順番にA1の数がC列にあれば○、A2の数がC列にあれば○A3の数がC列にあれば○とA列にもC列セルに大量の数字があります。一気に処理できないでしょうか。

  • エクセル関数について

    エクセルの関数式についてです。 ネットでもいろいろ検索してみたのですが、どうしても解決できません。 どなたかお分かりになる方、教えてください。 たとえば。。 [A1]のセルに、"(1)という文字列が含まれる場合は、[B11]のセルのコピーを、 "(2)"という文字列が含まれる場合は、[B12]のセルのコピーを、 "(3)"という文字列が含まれる場合は、[B13]のセルのコピーを表示させたいのです。 ちなみに、[B11],[B12],[B13]のセルには、SUM関数式が入っています。

  • Excelの関数について教えてください。

    前にも同じような質問をしたのですが、よく理解できなかったので、もう一度質問させていただきます。 まず、A列に1~10まで入力します。次にB列に11~20まで入力します。同様にC列に21~30まで入力します。そして、セルE3に2、セルE5に12に入力します。 それから、セルE3の値をA列から検索し、セルE5の値をB列から検索し、その重なったB行のC列の値を求めたいのです。ここでは22になります。 自分なりに考えてみましたが、 =IF(MATCH(F3,A:A)=MATCH(F5,B:B),INDEX(A2:C10,MATCH(F3,A:A)=MATCH(F5,B:B),C:C,"")) ではエラーがでてしまいます。 いくら考えてもわかりません。 どなたか教えてください。よろしくお願いします。

  • エクセルで 二行の値をマッチさせるには?

    A列とB列があるとして、それぞれランダムな数字が入っています A列には100個の値、B列には150個の値が入っていて、 Bの列にはA列の値がすべて入っています A列の値が、B列に存在するか検索し、 A列の値がB列になかった場合、印をつけるか 削除(「-」かなにかに置換でもよい)できるような関数はありますか? 例) こういうデータを A   B 1   9 2   8 3   7 4   6 5   5 6   4 7   3    2    1 こうしたい A   B 1   1 2   2 3   3 4   4 5   5 6   6 7   7 該当なしの値(8,9)は 最終的に抹消したいのです ----------- MATCHでは、検索値が一つしか入れられず A列すべての値を、B列すべてにマッチできませんでした (やり方が悪かったのかも) IFで、Aの値がBに存在すればTRUE、存在しなければ「-」に置換 ・・・・というのをやってみたのですが、 たぶん書き方が悪くて(?)うまく動きませんでした 私は独学で基礎をきちんと理解できているか 自分で自信がないのですが、どうぞよろしくお願いします

  • 関数MATCHを利用して、該当がある場合のみ数字を出したい

    お世話になります。 シートの中に重複データそれがどのデータと一致しているかセル番号を出す関数をつくりたいと調べています。 http://oshiete1.goo.ne.jp/qa2495843.html こちらで紹介のあったようにMATCHを使って、 たとえばA列に名前が入っていた場合、となりのB列に =MATCH(B2,B:B,0) といれてみました。 すると一致している場合は、その一致しているセルの行番号が出るのですが、一致するものがない場合は、そのB列の行番号が出ます。 これを、一致するものがある場合のみ、数字を表示する、としたいのですが、どのようにすればよいでしょうか。 イメージとしては もし B2と(MATCH(B2,B:B,0)の結果)が一緒なら空白にする もし B2と(MATCH(B2,B:B,0)の結果)が違ったら(MATCH(B2,B:B,0)の結果)を表示する といった感じです。 空白は、0と入力されてもいいです。 アドバイス、ご指導お願いいたします。

このQ&Aのポイント
  • パソコンを買い替えて最近ドライバーをインストールしようとすると、「この種類のファイルはデバイスに損害を与える可能性がある為ブロックされました」と表示されてインストールできません。使用しているパソコンはDELLのノートでWINDOWS10 64bitです。
  • パソコンのドライバーをインストールする際に、セキュリティソフトのマカフィーによって「この種類のファイルはデバイスに損害を与える可能性がある為ブロックされました」というエラーメッセージが表示され、インストールができません。
  • ドライバーをインストールしようとすると、セキュリティソフトのマカフィーによって「この種類のファイルはデバイスに損害を与える可能性がある為ブロックされました」という警告が表示されてしまい、インストールができません。使用しているパソコンはDELLのノートでWINDOWS10 64bitです。マカフィーはインストールされています。
回答を見る

専門家に質問してみよう