Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


9584 / 13646 ツリー ←次へ | 前へ→

【26555】一致していないデータの抽出 nameT 05/7/9(土) 16:29 質問[未読]
【26557】Re:一致していないデータの抽出 ichinose 05/7/9(土) 17:19 発言[未読]
【26558】Re:一致していないデータの抽出 nameT 05/7/9(土) 18:02 お礼[未読]

【26555】一致していないデータの抽出
質問  nameT  - 05/7/9(土) 16:29 -

引用なし
パスワード
   教えて下さい。
Sheet1のB列とSheet2のB列を比較して(行は共に可変)
Sheet1のB列にはないSheet2のB列のデータ
(Sheet1のB列と重複していないSheet2のB列のデータ)
をSheet3に表示させるためにはVBAではどのように
書けば良いのでしょうか?
下記のような結果を出したいのです。

Sheet1
A    B    C
Code  Group  No.
AAA   MA1  888
BBB   MB1  888
CCC   MD2  888
DDD   MC1  888

Sheet2
A    B   C
Code  Group  No.
AAA   MA1  888
BBB   MD1  888
CCC   ME2  888
DDD   MB1  888

Sheet3
A    B   C
Code  Group  No.
BBB   MD1  888
CCC   ME2  888

よろしくお願いします。

【26557】Re:一致していないデータの抽出
発言  ichinose  - 05/7/9(土) 17:19 -

引用なし
パスワード
   ▼nameT さん:
こんにちは。

>Sheet1のB列とSheet2のB列を比較して(行は共に可変)
>Sheet1のB列にはないSheet2のB列のデータ
>(Sheet1のB列と重複していないSheet2のB列のデータ)
>をSheet3に表示させるためにはVBAではどのように
>書けば良いのでしょうか?
>下記のような結果を出したいのです。
>
>Sheet1
>A    B    C
>Code  Group  No.
>AAA   MA1  888
>BBB   MB1  888
>CCC   MD2  888
>DDD   MC1  888
>
>Sheet2
>A    B   C
>Code  Group  No.
>AAA   MA1  888
>BBB   MD1  888
>CCC   ME2  888
>DDD   MB1  888
>
>Sheet3
>A    B   C
>Code  Group  No.
>BBB   MD1  888
>CCC   ME2  888
>
>よろしくお願いします。
標準モジュールに
'========================================
Sub main()
  Dim rng1 As Range
  Dim rng2 As Range
  With Worksheets("sheet1")
   Set rng1 = .Range("a2", .Cells(.Rows.Count, 1).End(xlUp))
   End With
  With Worksheets("sheet2")
   Set rng2 = .Range("a2", .Cells(.Rows.Count, 1).End(xlUp))
   End With
  If rng2.Row >= 2 Then
    With Worksheets("sheet3")
     .Range("a1:c1").Value = Array("Code", "Group", "No.")
     If rng1.Row >= 2 Then
      For Each rng In rng2
        If IsError(Application.Match(rng.Offset(0, 1).Value, rng1.Offset(0, 1), 0)) Then
         .Range("a" & idx + 2 & ":c" & idx + 2).Value = rng.Resize(, 3).Value
         idx = idx + 1
         End If
        Next
     Else
      .Range(rng2.Resize(, 3).Address).Value = rng2.Resize(, 3).Value
      End If
     End With
    End If
End Sub

これで試してみて下さい

【26558】Re:一致していないデータの抽出
お礼  nameT  - 05/7/9(土) 18:02 -

引用なし
パスワード
   ▼ichinose さん:
希望通りの結果になりました。
本当にどうもありがとうございました。

9584 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free