[[20030901150737]] 『同一データの比べ合わせ』(mgm) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『同一データの比べ合わせ』(mgm)

別々のシートで作成された住所録名簿AとBがあります。

2つは同一の書式ではないのですが、氏名の部分が同一の

データを摘出して、重複氏名のみの一覧を作成したいの

ですがどうしたらよいのでしょうか?

5000名以上のデータがあります。


 簡単に作っただけなので、不都合があるかもしれませんが・・(INA)
 Private Sub CommandButton1_Click()
  Dim C1 As Integer '行カウンタ
  Dim C2 As Integer '行カウンタ

  Dim sht1 As Worksheet
  Dim sht2 As Worksheet
  Dim sht3 As Worksheet

  Set sht1 = Worksheets("名簿A")
  Set sht2 = Worksheets("名簿B")
  Set sht3 = Worksheets("名簿C")

  For C1 = 1 To sht1.Range("A65536").End(xlUp).Row

   For C2 = 1 To sht2.Range("A65536").End(xlUp).Row

    If sht1.Cells(C1, 1).Value = sht1.Cells(C2, 1).Value Then
     sht3.Range("A65536").End(xlUp).Offset(1, 0).Value = sht1.Cells(C1, 1).Value
    End If

   Next C2

  Next C1

 End Sub


ありがとうございます。

しかし、あまり慣れていないので

手順がよくわかりません・・すみません。

(mgm)


 では、こういう方法はどうでしょう?

 Sheet1のA列とSheet2のA列に氏名が入力されているとして、
 Sheet1のB1に =MATCH(A1,Sheet2!A:A,0)と入力。B2以下にコピーします。
 重複していない場合はエラー値#N/Aが表示されるので、
 編集>ジャンプ [セル選択]で、数式のエラー値にチェックし、OK
 エラー値#N/Aが選択されるので、編集>削除>行全体
 これで、重複しているものだけが残ります。
 (YS)


 コントロールツールボックスのコマンドボタンをシート上に配置して
 ダブルクリックしたところにコピペして下さい。
 シート「名簿A」のA列とシート「名簿B」のA列を比較して
 同じ文字があると、シート「名簿C」のA列にコピーされます。(INA)


詳しいアドバイスありがとうございました。
いろいろと苦労しつつもトライしてみました。

YSさんの方法はなんとかできました。

INAさんに教えていただいたコマンドボタンを使う方法は

初めてで今一つわかりません。

ダブルクリックしたところにペーストまでできたと

思うんですが、その先に進めません。

自動的にシートCにデータが表示されるんでしょうか?
(mgm)


 新規ブックにシート(名簿A,名簿B,名簿C)を用意して下さい。
 コントロールツールボックスのコマンドボタンをシート上に配置して、
 ダブルクリックするとVisual Basic Editor が起動します。
 すると以下のように表示されますので、
  Private Sub CommandButton1_Click()
     ↑
   ここの間に処理部分のコードをコピペして下さい。
     ↓
  End Sub

 コントロールツールボックスのデザインモードを終了して、ボタンを押せば実行されます。

  (INA) 


コントロールツールボックスのデザインモードを終了しようとすると

「このプロジェクトのマクロは無効に設定されています。」

の表示が出てしまうのですが・・。

(mgm)


 [ツール]−[マクロ]−[セキュリティ]を ”中”に設定して、
 ファイルを開きなおして、マクロを有効にして下さい。
 そうすれば、マクロを実行できるようになります。 (INA)

できました。しかし今度は「インデックスが有効範囲にありません」

の表示が出てしまいます。

(mgm)


 どの部分でエラーになりますか?
 たぶんシート名が、合致していない為だと思うのですが・・
 名簿A 名簿B 名簿C になっていますか?
 (半角Aでもダメですよ。)
 (INA) 

何度もご丁寧にありがとうございます。

シート名は大丈夫なのですが、よくわからないので、

念の為もう一度簡単なサンプル表を作り直してトライしたところ

実行できました!

しかし、よく見るとシートAの部分がそのままCにコピーされました。

(mgm)


 大変申し訳ないです。1行間違えていました。

 If sht1.Cells(C1, 1).Value = sht1.Cells(C2, 1).Value Then
                 ↓
 If sht1.Cells(C1, 1).Value = sht2.Cells(C2, 1).Value Then
  
 すみません。m(_ _)m   (INA)


できました!!

不慣れなもので何度も何度もお答えいただきありがとうございました。

でも苦戦した甲斐あって、だいぶ慣れたというなんとなくわかってきました。

エクセルって面白いですね。

いろいろ参考にして勉強します!本当にありがとうございました。

(mgm)


また、わからないことがあって質問します。
よろしくお願いします。

教えていただいた通りで同じデータを抽出することができたのですが

データ数が大量の場合「オーバーフローしました」というエラーが出たり

ボタンを押しても押しっぱなしのように固まってしまったりうまくいきません。

比較するデータ数は名簿Aが54000、名簿Bは400ぐらいです。

(mgm)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.