• 締切済み

エクセルで照合に適切な関数を教えてください。

すっごく困っているのでよろしくお願いします。 sheet1・・・Aの情報  sheet2・・・Bの情報 sheet3・・・二つの照合結果 A・Bはそれぞれ入力件数、並び順(行・列)もまったく違います。 例) sheet1・sheet2  A列・・・都道府県  B列・・・市区  C列・・・町 件数は同じ東京都○○区でもC列の町名が違った場合は、複数件になります。

みんなの回答

  • Ryocchi
  • ベストアンサー率38% (38/98)
回答No.4

例)の内容でしか作れませんが、ちょっと作ってみました。 前提) 1.Sheet3に#2で書かれた例)を用意して下さい。   1行目には支社名(A1)、住所(B1)と見出しを入れて(別に支社名、住所でなくても良いですが、見出し行を用意して下さい)A列に支社名、B列に住所を入れて下さい。 2.Sheet4を作成し、A1にA支社、B1にB支社と入れて下さい。 [マクロの作成] [ツール]-[マクロ]-[Visual Basic Editor]を開き、VB側のメニューから[挿入]-[標準モジュール]を開きます。そうすると、Module1(コード)と書かれた白紙のウィンドウが開きます。 そこに以下のコードをコピー&ペーストして下さい。 Sub Furiwake() Dim low1 As Integer Dim low2 As Integer low1 = 2 low2 = 2 Do Until Worksheets("Sheet3").Cells(low1, 1) = "" If Worksheets("Sheet3").Cells(low1, 1) = "A支社" Then If Worksheets("Sheet4").Cells(low2, 2) <> "" Then low2 = low2 + 1 Else If Worksheets("Sheet4").Cells(low2, 1) <> "" Then low2 = low2 + 1 End If End If Worksheets("Sheet4").Select Worksheets("Sheet4").Cells(low2, 1) = Worksheets("Sheet3").Cells(low1, 2) Else If Worksheets("Sheet4").Cells(low2, 1) <> Worksheets("sheet3").Cells(low1, 2) Then low2 = low2 + 1 End If Worksheets("Sheet4").Cells(low2, 2) = Worksheets("Sheet3").Cells(low1, 2) End If low1 = low1 + 1 Loop End Sub ペーストが完了したら、F5を押して見て下さい。 急いで作ったのでバグはあるかも知れません。 ただ、本物のマクロを作る為には実際のレイアウトを見なければ出来ませんので、ここでの回答はこれ以上は不可能です。 後はVBAの書籍等を購入して勉強して下さい。 覚えると結構楽しいですよ。

  • Ryocchi
  • ベストアンサー率38% (38/98)
回答No.3

>sheet4に >A支社 セルA~H >B支社 セルO~AA >sheet3で照合結果が出た、*付の重複しているものを >sheet4でA支社・B支社ごとにわけたい。 つまり、 A支社              |B支社 ------------+------------ 東京都中央区新川町一丁目|東京都中央区新川町一丁目 ------------+------------ 東京都中央区新川町二丁目|東京都中央区新川町二丁目 ------------+------------ 東京都足立区保木間五丁目|東京都足立区保木間五丁目 ------------+------------ 東京都足立区保木間五丁目| ------------+------------ こうしたいという事ですね。 すいません。いろいろ考えて見ましたが、マクロじゃないと出来ないと思います。 どなたか良い案をお持ちの方、お知恵を貸して下さい。お願いします。

Rika92
質問者

補足

こんなイメージのデータをつくりたいのですが、、、 マクロだとどのようにしてやるのでしょうか? 教えてください。

  • Ryocchi
  • ベストアンサー率38% (38/98)
回答No.2

sheet3の照合結果とはどういったものをお考えですか? 質問の内容から勝手に解釈して、「sheet1とsheet2の内容を重複しないようにsheet3にまとめたい」と言う事でしたら、 1.sheet1とsheet2の列の並びを統一する。 2.sheet1の行をsheet3にコピー&ペーストする。 3.sheet2の行をsheet3に(2で貼り付けた行の下に)コピー&ペーストする。 4.sheet3をチェックしたい内容で並べ替える。 5.チェックしたい項目を全て結合する。 Rika92さんの例で言うと =CONCATENATE(A1,B1,C1) と関数をD列に入れます。 そうするとD1には東京都○○区○○町とA,B,C列か結合されます。(CONCATENATE関数でなくても良いです) 6.5.で入れた関数を全行にコピー&ペーストする。 7.E列に=IF(D1=D2,"*","")と関数を入れる。 8.7.で入れた関数を全行にコピー&ペーストする。 これで、下の行と同じ内容の行のE列に"*"が表示されます。 9.E列にオートフィルターを設定して、"*"列のみ選択して、表示された行を削除すれば、重複は無くなります。 以上 検討違いだったらごめんなさい。

Rika92
質問者

補足

ここまでは完璧でした。ありがとうございます。 sheet1 A支社 sheet2 B支社 sheet3 A支社とB支社の照合結果 sheet4 A支社とB支社の比較 例)sheet3 A支社 東京都中央区新川町一丁目 * B支社 東京都中央区新川町一丁目 A支社 東京都中央区新川町二丁目 * B支社 東京都中央区新川町二丁目 A支社 東京都足立区保木間五丁目 * A支社 東京都足立区保木間五丁目 * B支社 東京都足立区保木間五丁目 sheet4に A支社 セルA~H B支社 セルO~AA sheet3で照合結果が出た、*付の重複しているものを sheet4でA支社・B支社ごとにわけたい。 どんな関数をつかえばいいでしょうか・・・ ど素人なのであまり難しい関数はわかりません よろしくお願いします。

  • arukamun
  • ベストアンサー率35% (842/2394)
回答No.1

Sheet3のA1セルに =IF(Sheet1!A1=Sheet2!A1,"等しい","等しくない") のようにSheet名から記述すれば比較できますよ。 また、Sheet3のA1セルをコピーしてSheet3上の別のセルにペーストすることで他のセルに対しても同じ計算ができます。 とんちんかんな回答でしたら、申し訳ありません。

関連するQ&A