• ベストアンサー

Excel VBAで比較させたい。

sheet1のA1に山田さん、B1に佐藤さんと打ちます。 で、sheet2のA列に山田さんB列に佐藤さんの情報があります。 それを比較する方法を知りたいんですけど。 ちなみに、sheet1のA1に鈴木さん、B1に山崎さんなど色んなパターンが存在します。 A1に山田さんだったらsheet2のA列、B1に佐藤さんだったらsheet2のB列を見に行って それを比較して、一致しない所だけsheet3に表示させる方法などありますか? 当方まったくの初心者で…(^^;

  • kota3
  • お礼率28% (2/7)

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

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.4

こんな感じ? Sub Test() Dim fs1 As String, fs2 As String Dim fr1, fr2, myCol As Integer  fs1 = Worksheets("Sheet1").Range("B1")  fs2 = Worksheets("Sheet1").Range("A1")  Set fr1 = Worksheets("Sheet2").Rows(1).Find(fs1, LookAt:=xlWhole)  Set fr2 = Worksheets("Sheet2").Rows(1).Find(fs2, LookAt:=xlWhole)  If fr1 Is Nothing Or fr2 Is Nothing Then    MsgBox "比較出来ないよ", vbCritical    Exit Sub  End If  myCol = fr2.Column - fr1.Column  Worksheets("Sheet3").Columns(1).Clear  Set fr1 = Range(fr1, fr1.End(xlDown))  For Each fr2 In fr1   If fr2.Value <> fr2.Offset(0, myCol).Value Then _     Worksheets("Sheet3").Range("A" & fr2.Row) = fr2.Value  Next fr2 End Sub

kota3
質問者

お礼

こんな感じです~! ホントにありがとうございますっ!! また何かありましたら宜しくお願いしますm(_ _)m

その他の回答 (3)

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.3

まだ理解出来ません。 特にSheet2の構造が?です。A列は必ず「山田」、B列は必ず「佐藤」なのでしょうか? だとしたら全部同じなのですが?? Sheet2の構造 --A--B--C--D--E--F 1 山田 佐藤 鈴木 山崎 ○○ ×× 2 山田 佐藤 鈴木 山崎 ○○ ×× 3 山田 佐藤 鈴木 山崎 ○○ ××      ・      ・ > で、Sheet1のA1に鈴木さん、B1山田さんと入れたなら > sheet2のC列とA列を比較しなさい。 「鈴木」とか「山田」とかって、項目タイトルの事? Sheet1のA1とB1に入れるのはShee2の項目タイトルで、それを除いたものをSheet3にしたい? Sheet1 --A--B 1 山田 鈴木 Sheet2の構造 --A--B--C--D--E--F 1 山田 佐藤 鈴木 山崎 ○○ ×× 2 1001 2222 3333 4444 5555 6666 3 1002 2444 3444 4555 5666 6777 Sheet3の結果 --A--B--C--D--E--F 1 佐藤 山崎 ○○ ×× 2 2222 4444 5555 6666 3 2444 4555 5666 6777

kota3
質問者

補足

papayukaさん毎回ありがとうございます。 Sheet2の構造 --A--B--C--D--E--F 1 山田 佐藤 鈴木 山崎 ○○ ×× 2 1001 2222 1001 2222 5555 2222 3 1002 2444 3444 4555 1002 6777 4 1003 2333 1003 4666 5444 1003 5 1004 1004 3666 4999 3666 4999 だとします。 sheet1のA1に山田、B1に鈴木なら Sheet3の結果 --A--B--C--D--E--F 1 鈴木       2  3 3444 4 5 3666 の様に、=なら表示するな、=でないなら後者の方の 情報を入力しなさいといった感じです。 また意味不明になりましたかね・・・?

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

意味が解りません。 Sheet1の「A1」と「B1」に"毎回"入力し、それをSheet2のA列とB列にあるデータのパターンから一致しないものを"毎回"拾うのですか? Sheet1とSheet2のサンプルデータ、Sheet3の結果イメージを書かれた方が解りやすいかも。

kota3
質問者

補足

説明ヘタですいません(^^; Sheet1の「A1」と「B1」には毎回違う人の名前を入力します。 sheet2の「A列~J列」には色んな人のデータを入れときます。 山田さん=A列 佐藤さん=B列 鈴木さん=C列 山崎さん=D列 〇〇さん=E列 〇〇さん=F列 みたいな感じにデータが入ってます。 で、Sheet1のA1に鈴木さん、B1山田さんと入れたなら sheet2のC列とA列を比較しなさい。 って感じにしたいんです。 こんな感じで説明わかりますかね?(^^;

  • a987654
  • ベストアンサー率26% (112/415)
回答No.1

VBAなど使わなくとも sheet3のA1に  @if(sheet1!A1=sheet2!A1,"○","×") と、入れれば同の場合○、否の場合×が表示されます。 B1についてはA1をcopyすれば自動的にB1に変わります。 どうしてもVBAでやりたければマクロ記録で上記の方法を 行うか、VBA事体の勉強をお勧めしますが、ワークシート関数でできるものは 無理してVBAなど使わない方がよろしいかと思います。

関連するQ&A

  • エクセル VBAについて

    エクセル初心者ながら質問させていただきます。 A1に田中 A2に山崎 A3に鈴木 があったとします。 B1からB3まではセルの結合を行っています。 B1に=A1&CHAR(10)&A2&CHAR(10)&A3というCHAR関数をいれてB1の表示をみてみると 田中 山崎 鈴木 と表示されました。 ここで質問なのですが、これでA2の山崎を消すとB1は 田中 鈴木 と、1行開いて表示されます。これをA2の山崎を消すとB1が 田中 鈴木 と、間を開かずに表示させたいのですが、何か良い方法はあるのでしょうか? 詳しい方いましたらよろしくお願いします。

  • excel関数でユニークな数値だけ抜き出したい場合

    以下のようなシート(仮にsheet1)のA列からユニークな番号だけ抜き出したい場合sheet2のA列にどのような関数を使用すれば良いですか? A  B 101 山田 101 山田 101 山田 114 佐藤 114 佐藤 123 鈴木

  • EXCEL(マクロ)2つのデータ比較について

    いつも活用させていただいているものです。 今回は、以下の内容を行いたいと思います Sheet1とSheet2のA列(NO)を比較して、Sheet2にない項目(NO、名前、年齢、性別)をSheet2の4行目に追加したいと考えております。 どのようなプログラムを組めばよろしいでしょうか。 【Sheet1】 |A  |B | C | D | --------------------------- 1|NO  |名前 |年齢 |性別| 2|001 |鈴木 |11  |男 | 3|002 |佐藤 |15  |女 | 4|003 |長島 |29  |女 | 【Sheet2】  |A  |B | C | D | --------------------------- 1|NO  |名前 |年齢 |性別| 2|001 |鈴木 |11  |男 | 3|002 |佐藤 |15  |女 |               ←追加をしたい お願いします。

  • 【エクセル】リストの照合について教えてください!!

    sheet1に、下記の様に600件の氏名が書いてあります。 A      B 1     山田太郎  2     鈴木花子 ・・・ 600   佐藤次郎 sheet2に、地域と氏名がずらっと書いてあります。 A      B      C     D    E 東京都   神奈川県   埼玉県   千葉県  茨城県 山田太郎 鈴木太郎 山田花子 佐藤次郎 ・・・ このsheet2の地域を、sheet1のC列に下記の様に入れたいのですが、 どの様に行ったら良いでしょうか? みなさんのお知恵をください!!宜しくお願い致します。 A      B      C 1     山田太郎   東京都 2     鈴木花子   神奈川県 ・・・ 600   佐藤次郎   埼玉県

  • ExcelのVBAに明るい方・・・

    Excelの、Sheet1 に 1日目,鈴木くん,点数,・・・ 2日目,佐藤くん,点数,・・・ 2日目,山田くん,点数,・・・ 3日目,佐藤くん,点数,・・・ 3日目,鈴木くん,点数,・・・ 4日目,山田くん,点数,・・・ ・・・ という、元ダネの一覧表があって、 このデータを日々追加入力していくごとに、自動的に、 Sheet2 には、鈴木くんのみの一覧表のデータ 1日目,鈴木くん,点数,・・・ 3日目,鈴木くん,点数,・・・ ・・・ Sheet3 には、佐藤くんのみの一覧表のデータ 2日目,佐藤くん,点数,・・・ 3日目,佐藤くん,点数,・・・ ・・・ Sheet4 には、山田くんのみの一覧表のデータ 2日目,山田くん,点数,・・・ 4日目,山田くん,点数,・・・ ・・・ が、自動的に追加入力されるVBAの記述って、 どうすればいいんでしょうか? VBAに明るい方、どうかよろしくお願いします。

  • エクセルで2つの条件を元に

    エクセル2007で名簿を作っています。 1ヶ月ごとにメンバーの順が変わります。 シート1(番号順に名簿を作りました)   A  B   C  1 1     山田 2 2     木村 3 3 副長 佐藤 4 4     鈴木 5 5 班長 田中 6 6     長田  シート2(こちらがメンバーに配る名簿です)   A   B  C   D 1 班長    1    3 2 田中    山田  鈴木 3 4 副長    2    4 5 佐藤    木村  長田 A2に田中,A5に佐藤を選んでくるのはvlookupで成功しました。 質問したいのは C列D列に上記の番号のようにシート1の名前を入れていきたいのですが,田中,佐藤の分を抜いた上で番号の若い順に選んできたいのです。 どのような関数をどのように使えば成功するでしょうか。  

  • エクセルで、次のような自動入力をしたい

      A    B    C    D   E  ・・ AA 1 田中 鈴木 佐藤          山田 2 鈴木 山田              海岡 3 田中 佐藤              佐藤 というような表があり、AAの列に名前を入力したとき、 D1に「山田」、C2「海岡」と、その行に関してAA列に新規の名前が入力されたときにD1,C2に自動入力することは、VBAで簡単にできますか? 3列目には「佐藤」さんがすでいるので入力不要です。 よろしくお願いします。(マクロ初心者です)

  • エクセル VBA リストを参照して 色を変えたい

    Sheet1に リストとして       A    B    C    D --+-------+-------+-------+-------+------+-------+------- 1   山田 --+-------+-------+-------+-------+------+-------+------- 2   鈴木 --+-------+-------+-------+-------+------+-------+------- 3   佐藤 --+-------+-------+-------+-------+------+-------+------- 4   内藤 Sheet2に 一覧表として       A    B     C    D --+-------+-------+-------+-------+------+-------+------- 1   山田   赤松   斎藤   内藤 --+-------+-------+-------+-------+------+-------+------- 2   佐藤   清水   鈴木   米田 --+-------+-------+-------+-------+------+-------+------- 3   上田   今川   藤本   越崎 --+-------+-------+-------+-------+------+-------+------- 4   千葉   尾崎   松田   安西 と、作成した場合、Sheet1のリストにある名前のみ フォントカラーを赤にするマクロを組んでいただきたいのですが・・・ 宜しくお願いします。

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

    下記のようにA列とC列を比較して、 一致した値が存在する場合、B列とC列を比較して、 E列に一致した場合は、●一致しない場合は、空欄にしたいのですが教えてください。 A列 B列 C列 D列 E列 12345 aaa 12389 bbb A2と一致したので● 12389 bbb 22222 bbb 一致しないので空欄 33333 bbb 12345 aaa A1と一致したので●

  • Excel比較関数について教えてください。2

    下記のようにA列とC列を比較して、 一致した値が存在する場合、B列とC列を比較して、 E列に全て一致した場合は○、一致しない場合は×にしたいのですが教えてください。 また、A列にあってC列にない場合は、×を表示したいです。 A列 B列 C列 D列 E列 1 12345 aaa 12389 aaa A1とA3が一致&B1とD3が一致したので○ 2 12389 bbb 22222 bbb A2とC1が一致したが、B2とD1が一致しないので× 3 33333 bbb 12345 aaa A3の値がC列にないので空欄 教えてください。

専門家に質問してみよう