• ベストアンサー

エクセルで困っています

こんばんは。 エクセルが苦手で皆様の助言をお借りしたいのです。 新旧2つの住所録が入ったエクセルデータを比較して、 異なる点をピックアップしたいのです。 VLOOKUP関数で、出来るのかなと思ったのですが、 比較する対象同士が同じ列に入ってないと間違ってはないのに エラーでピックアップされてしまうのです。 (例) sheet1 A B C sheet2 A A" B C 上記の場合、B,Cはsheet1,2とも同データなのに、A"のデータが入っている為、一行ずれているのでエラーとして認識されてしまうのです。 同じ行だけ比較するのではなく、そのデータが入っている行すべてを探してエラーのあるなしを判断する方法ってありますでしょうか? うまくまとめられない文章ですいません。 よろしくお願いします。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.5

こんにちは! すでに回答は出ていますので 参考程度で・・・ ↓の画像の場合、Sheet2の方に表示させるようにしています。 (実際はどちらのSheetでも構わないと思います) Sheet2のB1セルに =IF(COUNTIF(Sheet1!A:A,A1)>0,"○","×") としてオートフィルで下へコピー これでSheet1にあるものは「○」 ないものは「×」と表示されるはずです。 以上、参考になれば幸いです。m(__)m

suimasenga
質問者

お礼

丁寧に画像付きで大変わかりやすくご説明いただいて 有り難うございます。 皆様本当にわかりやすく教えていただいて感謝する ばかりです。 大変大変参考になりました。 ありがとうございました。

その他の回答 (4)

回答No.4

VLOOKをどのように使ったのか分かりませんが あなたのおっしゃるようなことでエラーは出ないと思いますよ? 範囲選択で「$」を付けてないとか そもそも「検索対象が一番左にない」とか「同じに見えて実はどっちかにはスペースが入っていたり」とかでは同じデータでないので一致しませんし。 そういう所に原因はないですか? (ちなみに○を付けるとかでやったのでしょうか?) あなたのやりたい事は#1さんの回答#2さんの回答#3さんの回答 どれでも出来ます。 VLOOKの検証と共にお試しください。

suimasenga
質問者

お礼

ご回答ありがとうございました。 皆様の方法をひとつづつ試してみて すごいなあと舌を巻いているばかりです。 しっかり勉強します。

noname#99913
noname#99913
回答No.3

Sheet1のB1に「=MATCH(A1,Sheet2!A:A,0)」 Sheet2のB1に「=MATCH(A1,Sheet1!A:A,0)」 と入力し、下へ必要なだけコピー。 これで、同じものがあれば、それがある行数を、なければエラーを表示します。 もし、重複しているものを削除したいのなら、Shee11のデータの下に、Sheet2のデータをコピーし、「重複の削除」機能を使うほうが簡単です。あるいは単純に氏名で並べ替えてみるだけでも、2つの住所録の違いがわかると思います。

suimasenga
質問者

お礼

重複しているものの削除の仕方まで! 本当にありがとうございました。 知識不足でお恥ずかしい・・・。 勉強します。

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

(1)VLOOKUPをチェックに使うときは、一意的(ユニークという)コード(キーという)が、ついて無いと内容のチェックに使えないと思う。、 一意的(ユニークという)コード(キー)とは生徒番号や社員番号や商品コードのように、他人(品)には絶対同じコードを振らない建前(実際はエラーは起こりうるが)のコードです。 (2)それとSheet1とSheet2で内容が同数で有るはずなのか、片一方は一部なのか、両方とも同じ対象についてのデータではないのかが肝心です。 そういうことが質問に書いてないということは、こういう課題にもっとデータベース的な勉強が必要と思います。 sheet1 01 a 03 s 05 cc Sheet2 03 s 01 aa 05 cc 06 d ーーー 結果 Sheet1 01 a 不一致 03 s 一致 05 cc 一致 Sheet2 03 s 一致 01 aa 不一致 05 cc 一致 06 d #N/A Sheet1のC1は =IF(B1=VLOOKUP(A1,Sheet2!$A$1:$B$10,2,FALSE),"一致","不一致") Sheet2のC1は =IF(B1=VLOOKUP(A1,Sheet1!$A$1:$B$10,2,FALSE),"一致","不一致") と入れます。#N/Aは見つからない場合で、"見つからない"と出す方法 (IFとISERRORを使う)が有るが略。 ーーー Sheet2 もしデータが下記なら 03 s 一致 01 aa 不一致 05 cc 一致 01 ac 不一致 06 d #N/A の01のようにダブっていても不一致と出ます。 Sheet1で もしデータが下記なら 01 a 不一致 03 s 一致 05 cc 一致 01 ac 不一致 の01もSheet2の上から最初の01としか比べません(エクセル関数のVLOOKUPやMATCHの特徴) こういうことを考えた上で>VLOOKUP関数で、出来るのかなと・・の問題を考えてください。質問のいっているこの箇所の意味が良くわからないが、何かこの関数の誤解が有るのではと思います。 ーーー 絶対こちらが正しい(マスターと言う)のがなければ、以上のように不一致や見つからず、を人間が見て総合的に誤りを判断するほかないと思う。 === 上記のキー(01のような)ガない場合(本質問もそれに該当か?) Sheet1で D1に =IF(B1=VLOOKUP(B1,Sheet2!$B$1:$B$10,1,FALSE),"一致","不一致") と入れて、式を複写し 01 a 不一致 #N/A 03 s 一致 一致 05 cc 一致 一致 01 ac 不一致 一致 となりますが、#N/Aは見つからずで、一致は同じものが有るとはわかるが、住所が同じかは言えない。 だから氏名漢字ででも検索値にしてVLOOKUPを使う。 上記の01などを氏名で置き換えて考える。同姓同名の場合は混乱するが事実上ほとんどないとして、チェックの役にはたつだろう。

suimasenga
質問者

お礼

大変丁寧にご説明いただきありがとうございました。 本当に勉強不足を痛感してます。 皆様本当に詳しくていらっしゃってすごいなあと。 しっかり勉強します。

  • gyouda1114
  • ベストアンサー率37% (499/1320)
回答No.1

COUNTIF関数(条件に一致した数を数える関数)をつかいます。 1以上の数値がおなじデータです それぞれに作業列を挿入して  Sheet1の作業列B2に =COUNTIF(Sheet2!A:A,A2) 下方にオートフィル  Sheet2の作業列B2に =COUNTIF(Sheet1!A:A,A2) 下方にオートフィル 1以上の数値がおなじデータです。 条件に一致するセルの数を数えたい-COUNTIF関数 http://www.relief.jp/itnote/archives/000448.php

suimasenga
質問者

お礼

ありがとうございます。画像付きで大変わかりやすくご説明いただけて助かりました。

関連するQ&A

  • エクセルについて質問です。

    エクセルについて質問です。 エクセルにてVLOOK関数を使用し、データベースを作成しております。 AファイルとBファイルを作成し、AファイルのaシートにBファイルのbシートを参照し、表示させることを目的としています。 bシートには約2000行のデータが記入されており、aシートに下記関数を入力し、表示しています。 =VLOOKUP(E6,'[A.xls]asheet'!$B:$AP,41,FALSE) 約1800行までのデータは表示されるのですが、2000行の検索値を入力すると#REF!や#N/Aというエラーメッセージが表示されてしまいます。 データ量が多すぎて処理ができないということなのでしょうか? 他に原因があるのでしょうか? 分かりづらい説明かもしれませんが、ご回答をお願いします。

  • エクセル 関数を使わずにデータを取りたい

    EXCELを使ってデータ入力をしたいです。 下の図のように、シート1のA列にコードを入力すると、シート2のテーブルから値を引っ張ってくるようにしたい。 たとえば、シート1のA1に"C001"を入力したら、B1に"赤"が自動入力されるようにしたい。 シート1 A列 B列 行1 C001 シート2 A列 B列 行1 C001 赤 行2 C002 青 行3 C003 黄色 ただし、シート1のB列の値は、入力後に編集するため、ここには計算式を入れたくないのです。 なので、通常ならばB列にVLOOKUP関数を使えばすむことですが、計算式を入れずに上記を実現する方法を教えてください。

  • VLOOKUPの検索範囲について

    エクセルの関数で質問です。 Sheet1で  A B C      1  1 1       2  1 5      3  2 1      4  2 3 というデータがありSheet2に        A B       1  1 1       2  1 2      3  2 1      4  2 2      5  3 1 というデータがあります。 Sheet1のA1、B1やA2、B2と同様の並びをした行がSheet2にあるかどうか調べたいのですが、関数がわかりません。ちなみにSheet1のCの列に関数を入力したいと思ってます。 VLOOKUPで列Aの条件を満たし、列Bの条件を満たすものと言う検索条件してもうまくいきません。 教えてください。よろしくお願いします。

  • excelで文字列を検索する関数を教えてください。

    いつもお世話になります。 エクセルの関数で、シートAのセルA1に入っている文字列をシートBのC列から探し出し、同じ文字列があればTrueをなければFalseを返す関数を教えてください。 わからないながらも色々調べてみたのですが、検索にはVLOOKUPがよく使われているようですが、シートBのC列は、データの並べ替えができないので、VLOOKUPは、使えないのです。 よろしくお願いします。

  • 複数のEXCELファイルより結果検索(VLOOKUP)

    はじめましてご教授お願いいたします。 現在エクセル関数Vlookupを使用しているのですが 外部の複数エクセルファイルよりデータを抽出するには どうすればよろしいのでしょうか? エクセルファイルA,B,C,Dがあるのですが ファイルAには結果表示用のシートがあります B,C,Dにはそれぞれデータが同じように配置されおります。 ファイルAのシート2セルA1に以下のような関数を記述しております =IF(ISBLANK(A2),"",IF(VLOOKUP(A2,Sheet1!$A$2:$K$60000,2,FALSE)=0,"",VLOOKUP(A2,Sheet1!$A$2:$K$60000,2,FALSE))) 上記関数[Sheet1!A2:K60000]の部分に別ファイルB,C,Dの データ(範囲は同じ)も検索できるようにしたいのですが どのような関数で可能なのでしょうか? ご教授よろしくお願いいたします。

  • ExcelのVLOOKUP関数について教えて下さい

    AのシートにA列に番号、B列に会社名を入力、しB以降のシートは月毎別に作成し、番号を入力して会社名を引っ張ってくると言う形のVLOOLUP関数を作りました。 番号はバラバラに入力するので、1の後に50があったりその後に10があったりします。 今までそれで上手く会社名が引っ張ってこれたのですが、先日24行目に5という数字を入れたら、 「#N/A」のエラーが出ました。 エラー内容は「無効な値のエラー」と出ていますが、Aのシートには5のデータは入力されており、20以降の数字を入れると会社名が正しく表示されます。 関数が間違っているのかと思い、別シートと比べましたが同じでした。 ちなみに関数は次の通りです。Aのシートのデータは2行目から番号1→147行目に番号146のデータが入っています。 =IF(A24="","",VLOOKUP(A24,店名!B22:C167,2,FALSE)) 何がおかしいのか全く分からず、途方に暮れております。 アドバイスをお願いします。

  • エクセル関数につきまして

    皆様の知識を頂きたく、投稿させて頂きます。 EXCELのVLOOKUP関数なのですが、2個の条件から一致する項目を選ぶ事は出来ないのでしょうか? たとえばですが、 ≪参照シート≫ A   B   C   コード 数量  日付 → タイトル行 1   1    1/1 2   1    1/1 1   2    1/2 2   2    1/2 ≪入力シート≫ A   B   C  ~ コード 1/1  1/2  ~ 1 2 といった感じで、入力シートと参照シートのコードと日付が一致するデータを取り出したいのです。 VLOOKUPを重ねて使用したりとか、HLOOKUPを使用したり等考えたのですが、うまくいきませんでした。 現在使用しているのは、Microsoft Office EXCEL2003になります。 どなたかご教授下さい。 よろしくお願い致します。

  • エクセルでHLOOKUP関数の選択範囲について

    エクセルでHLOOKUP関数を使って、検索したいのですが、 シートは、一覧表のシートと データが入っているA101、B203、C305、...シートは300シートくらいあります。 一覧表のシートには、下のような表になっていて、      A列  B列  C列  D列 ...          1003、1004、1005、1006、... 2行目 A101  3行目 B203 4行目 C305       .       .       . データのはいっているシート、A101は下の表になっています。      B列 C列 D列、・・・、Z列 2行目 1004、1005、1006、... 3行目 100、 200、 150、... 一覧表のB列の2行目には HLOOKUP(B2、シートA2のB2:Z3、2行目、FALSE) という感じで、シート名をセルA2のものを参照にして 探して表示させ、B列、C列、D列の2行目から下の行も 表示させたいのですが、うめくできませんでした。 INDIRECT関数を使ってみましたが、セル範囲が無効という エラーがでてしまいます。↓こんな感じで入力してみたのですが... SUMPRODUCT((INDIRECT($A2&"!$B$2:$Z$3"))=$B$1,(INDIRECT($A2&"!$B$2:$Z$3"))) 1つづつデータを見て手打ちはデータが多く、 どんどんデータが増えていくので できれば関数を使って表示させたいと思っています。 詳しい方いらっしゃいましたら、どうか教えてください よろしくお願いします。

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

    Excelの関数で例えば シートAのB行の中の値とシートBのセルA1の値、シートAのC行の中の値とシートBのセルB1の値が一致した行のF列の値を返す関数を考えているのですが、いろいろ試してもエラーになってしまいます。(B列とC列の一致する行は1つしかありません) これができないと家に帰れません;; どなたか、教えてください! よろしくお願いします。

  • エクセル 関数を自動的に入力するVBAで困っています

    VBA初心者です。 エクセルの入力シートで行ごとにデータを下記のように入力しています。      A      B       C 1   日付    品番     商品 2   10/25    10     りんご 3   10/26    20     みかん 4 5 6 2行目から順にデータを入力すると自動的にC列にVBAで VLOOKUP関数をセットして商品を検索したいのですが 上手くできませんでした。 教えてください。よろしくお願いします。

専門家に質問してみよう