エクセル関数で正しい値が返ってこない理由と解決方法

このQ&Aのポイント
  • エクセルで約4,000件のデータの照合作業を行っている際、一部のMATCH関数の結果が正しくないことがあります。関数の式には問題はなく、件数が多いことが原因と思われます。このような現象は一般的であり、解決方法もあります。
  • エクセルでMATCH関数を使用してデータの照合を行っている際、まれに正しくない値が返ってくることがあります。この問題は件数が多い場合に起こりやすく、関数自体には問題がないと考えられます。
  • エクセルのMATCH関数を使用して大量のデータの照合を行っていると、正しくない値が返ってくることがあります。この問題は件数が多い場合によく発生し、関数の式には問題がありません。解決方法としては、データの照合を別の方法で行うことが考えられます。
回答を見る
  • ベストアンサー

エクセル関数を使うと、まれに正しい値が返ってこない

エクセルで、約4,000件のデータの照合作業を行っています。 MATCH関数を使用して、B列のデータがA列にある場合にはその 行数を返すように設定をしたつもりなのですが、 まれに間違った値が返ってきます。 一応例えを添付しました。 例えと違うのは、実際のデータは、テキストを含む ものもある複雑(?)なものです。 関数の式にも問題はありません。以前にもこのような現象が 起こったことがあります。件数が多いとこのように、バグと言うか エラーが出てしまうものなのでしょうか? 件数が多いので、関数で処理したかったのですが このような現象が起きてしまうと、どこか間違っている個所が あるのでは?と不安になり、かと言って 間違っている個所を一つ一つ確認する訳にもいかず、 困っています。 このような現象は普通なのでしょうか?解決方法はありますか? 分かりにくい説明で申し訳ございませんが、お知恵をお貸し 下さいませ。 よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • chie65535
  • ベストアンサー率43% (8518/19363)
回答No.3

何らかの原因で「セルの再計算」を中断したりすると「再計算を行うまえにセルに入っていた、正しく計算する前の値」がセルの値として残ります。 MATCH関数などのように「ある程度の大きさの範囲を見に行く関数」では、再計算に時間が掛かります。 再計算に時間が掛かっている場合、再計算中に中断キーを押したり、表を大きく激しくスクロールさせたり、、表を自動で再計算しないモードにした場合、セルに表示される値は「正しく計算する前の値」になりますので注意しましょう。 特に「MATCH関数で見付かった件数が1件のみ」とかだと、余計に再計算に時間が掛かると思うので、注意が必要です。

DoggyBen
質問者

お礼

解決致しました。 また、詳細な説明をありがとうございました。 やはり計算中は、じっと待っていることが ベストなようです。

その他の回答 (5)

  • purumin9
  • ベストアンサー率24% (39/161)
回答No.6

4000件って、エクセルにとっては何てことない量です。エクセル側にはきっと問題ないと思います。 照合するデータに不正がないか確認してみてください。 テキストだというなら、全角・半角、大文字・小文字、あとは書式とかかな?

DoggyBen
質問者

お礼

アドバイスをありがとうございます。 書式も関係してくるのですね… ちょっと驚いてしまいました。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.5

(1) aaa <-A1 bbb ccc ddd bbb 1 eee fff ggg hhh kkk C列の式は =MATCH(B4,$A$2:$A$100,0) 正しくは 第2引数 $A$1:$A$100にすべきである。 (2)第3引数 0 が-1や1になっている。 など疑わしい。 式を複写したりするだろうから、いつもこうなるのではないが、部分的に 何かの拍子で式がおかしくなっていたとしか考えられない。 >バグと言うか いつも原因がわからないとソフト側のバグと言う人が多い。 9年間、質問回答を見ているが、こんな質問は無いと記憶する。 エクセルで不一致が出るのはこんな点ではない。 ーー この質問は質問者が原因を探さないと、他では原因がわからないとおもう。 読者に再現させることが出来ないでしょうから。

DoggyBen
質問者

お礼

アドバイス、ありがとうございました。 このような「ズレてしまう」事象は2回目なので >部分的に 何かの拍子で式がおかしくなっていたとしか imogasiさんのおっしゃるように、「何かの拍子」を ご存じの方がいるかと思いこちらで質問させて頂いた 次第です。

回答No.4

>下記が使用している式です。「+1」は >=MATCH(B338,$A$2:$A$4895,0)+1 つまり、MATCH(B338,$A$2:$A$4895,0) は0 考えられない値ですね。ためしに、C338セルに入力してみたものの 例示のようにはなりませんでした。 Excelのバージョンは何でしょうか?

DoggyBen
質問者

お礼

Excelは、2007です。 すみません、言葉が足らなかったようです。 お知らせした式は、実際に使用しているものですが 例としてあげた画像のものは、あくまで例としての ものなので、見出しを入れていないなど 忠実に問題を再現していませんでした。 わざわざお調べ頂き、ありがとうございました。

  • suekun
  • ベストアンサー率25% (369/1454)
回答No.2

直接の回答に繋がりませんが、 「←ここがずれてしまっている」がある列に 想定として左からA列 B列・・・と並んでいるとして 最上段から、 =IF(INDEX(A:A,C1)=B1,"正","誤") なんて入れて下に必要行コピーすれば、間違いは見つけやすいかも?

DoggyBen
質問者

お礼

間違い探しに役立つ情報を ありがとうございました! とても助かります。

  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.1

実際にどんな計算式を使っているのかを提示してもらえませんか。

DoggyBen
質問者

補足

早速のお返事ありがとうございます。 下記が使用している式です。「+1」は 1行目に見出しを入れているのでつけています。 =MATCH(B338,$A$2:$A$4895,0)+1 どうぞ宜しくお願い致します。

関連するQ&A

  • エクセルの検索関数

     エクセルのVlookup関数は半角全角はもちろん、全く同じ文字列でないと値を返しませんが、検索機能の*「アスタリスク」のようにワイルドカード機能を持たせて、一部でも一致すれば値を返すようにはならないでしょうか?または他に良い関数、方法はないでしょうか?  ある2つの表を照合しているのですが、大変行数が多く書き方がバラバラで困っています。一つのセルにかっこ()で注釈が入っていたり、点やスラッシュが入っていたりもします。  宜しくお願い致します。

  • Excel 別々のBookの照合と値の返し方

    いつもお世話になっております。 質問するカテゴリを間違えてしまったので、重複してしまい申し訳ありません。 エクセルのデータで別々のBookの照合をしたいと思い、VLOOKUPで試しましたが、上手くできませんでした。。。 画像を添付しましたので、それにそって質問したいと思います。 (1)Book1のB列に式を入れたい。 (2)Book1のA列とBook2のA列の照合を行いたい。 (3)同じ内容なら、その隣のセル(Book2のB列に入っている値)を(1)に表示させたい。 というものです。この場合どのような関数式を入れたらよいのでしょうか。 以上、宜しくお願い致します。

  • エクセルで複数の条件を満たした値を返す関数を教えてください。

    エクセルで複数の条件を満たした値を返す関数を教えてください。 (画像を添付しました) 左の表(A1からD9)のデータを右の表でIDと製品を選択すると 会社名、名前が抽出するような関数を教えてください。 INDEXやMATCHなど使ってみたんですが、組み方が悪いのかうまく抽出できませんでした。 よろしくお願いします。

  • Excel 別々のBookの照合と値の返し方

    いつもお世話になっております。 エクセルのデータで別々のBookの照合をしたいと思い、VLOOKUPで試しましたが、上手くできませんでした。。。 画像を添付しましたので、それにそって質問したいと思います。 (1)Book1のB列に式を入れたい。 (2)Book1のA列とBook2のA列の照合を行いたい。 (3)同じ内容なら、その隣のセル(Book2のB列に入っている値)を(1)に表示させたい。 というものです。 以上、宜しくお願い致します。

  • エクセル関数で飛び飛びのデータの値を表示したい

    こんにちは。お世話になります。 エクセル(2000)で質問です。 ある表があり、一番左の列にはインデックス(仮にB列とします)、 2列目(C列)には日付、3列目(D列)には値が入っています。 イメージだと   A  B    C   D   1   コーラ  5/30  20    2        6/10  10    3        6/11  20    4   ミルク  4/30  10    5        5/11  35    のような感じです。(セルは結合されてません) データベースとして扱うならば、B2にもコーラという値が 入っている、という認識ですが、実際は空白セルとなっています。 そこで、A列に、Bのインデックスの値を入力したいのですが、 どのようにしたら良いのか悩んでいます。 上記で言うと、A1~A3にはコーラ、A4~A5にはミルク、という 値がはいってほしいです。 次のインデックスまでの空白セルの数は不規則です。 データの件数は何千件とかなり多いので、関数で一気に出せると 非常に助かります。 分かりにくい質問で申し訳ありませんがどうぞよろしくお願いします。

  • エクセルvlookup関数で値を取得したいリストの行数が多すぎてエクセ

    エクセルvlookup関数で値を取得したいリストの行数が多すぎてエクセルで表示できない 単純にa列をキーにしてb列の値を取得したいですがリストの行数が65***行以上でエクセルで開くと欠落します。リストはcsvでオープンしないで値を取得することはできますか? 宜しくお願いいたします。

  • Excelの関数で

    お願いします。 Index関数とMatch関数を使用して表の中の値を求めようとしましたが、 検索行が複数あるため、うまくいきません。 検索する列は1列(a,b,c)ですが、検索行(あ、い、う~)が複数になっています。 更に空白もあります。 こんな感じ↓です。 ---------------------   あ  い   う   え      お   か ---------------------    a  10  20  30 b  40  50  60 c  70  80  90 --------------------- こういった場合にはどんな関数を使って一致する値を求めたら良いのでしょうか? 大変困っております。よろしくお願いします。

  • Excel検索等関数

    Excelのデータで同じ列の中に番号が重複している値を探し出しなおかつ任意の行数に出す関数はありますか? Sheet1   |Sheet2   A  B |   A  B        1 あ 10 | 1 あ  10 2 あ 11 | 2 あ  11 3 い 21 | 3 い  21 4 う 22 | 4      ←A4:b4は、「い」が2行ないので空白        | 5 う  22        | 6      ←A6:b6も、「う」2行ないので空白 このように、縦の重複したセルを検索して、指定行数内の場合は、空白となる関数式があればお教えください。

  • EXCEL 関数 条件に当てはまる行数を求める

    1行の中の、複数の列の値に条件をつけ、それに当てはまる行数を関数で求めたいのですが、どうやれば良いのでしょうか? 行数を求めるのはおそらくROWS?だと思うんですが、その行の中の複数の列の条件をどのように指定すれば良いのか分からずに困っております。 (例) 列Cに文字列"青"、列Fに数値"5"が両方満たす行がいくつあるかを、どこかのセルに関数で求める。 よろしくおねがいいたします。

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

    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、存在しなければ「-」に置換 ・・・・というのをやってみたのですが、 たぶん書き方が悪くて(?)うまく動きませんでした 私は独学で基礎をきちんと理解できているか 自分で自信がないのですが、どうぞよろしくお願いします

専門家に質問してみよう