• ベストアンサー

エクセルで困っています

こんばんは。 エクセルが苦手で皆様の助言をお借りしたいのです。 新旧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/17069)
回答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