Excel VBA質問箱 IV

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

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


3033 / 13644 ツリー ←次へ | 前へ→

【64682】sheet1とsheet2を比較して一致しなかったものをsheet3に張り付ける方法 VBAは初心者です。 10/3/7(日) 21:17 質問[未読]
【64683】Re:sheet1とsheet2を比較して一致しなかっ... ponpon 10/3/7(日) 22:31 発言[未読]
【64684】Re:sheet1とsheet2を比較して一致しなかっ... VBAは初心者です。 10/3/7(日) 23:29 発言[未読]
【64685】Re:sheet1とsheet2を比較して一致しなかっ... かみちゃん 10/3/8(月) 5:16 発言[未読]
【64687】Re:sheet1とsheet2を比較して一致しなかっ... ponpon 10/3/8(月) 10:23 発言[未読]
【64688】Re:sheet1とsheet2を比較して一致しなかっ... VBAは初心者です。 10/3/8(月) 13:17 質問[未読]
【64689】Re:sheet1とsheet2を比較して一致しなかっ... ponpon 10/3/8(月) 13:42 発言[未読]
【64690】Re:sheet1とsheet2を比較して一致しなかっ... VBAは初心者です。 10/3/8(月) 15:58 発言[未読]
【64692】Re:sheet1とsheet2を比較して一致しなかっ... ponpon 10/3/8(月) 16:19 発言[未読]
【64694】Re:sheet1とsheet2を比較して一致しなかっ... VBAは初心者です。 10/3/8(月) 16:56 お礼[未読]

【64682】sheet1とsheet2を比較して一致しなかった...
質問  VBAは初心者です。 E-MAIL  - 10/3/7(日) 21:17 -

引用なし
パスワード
   今、現在VBAでプログラミングしているのですが教えてください。
最近始めたばかりなので初心者です。

sheet1のH列とsheet2のH列を比較して
一致しなかった行をsheet3に張り付けたのですが
どう作ればいいかわかりません。

よろしくお願いします。

【64683】Re:sheet1とsheet2を比較して一致しなか...
発言  ponpon  - 10/3/7(日) 22:31 -

引用なし
パスワード
   こんばんは。

こんな感じでしょうか?

Sub test()
  Dim i As Long
  Dim SH1 As Worksheet, SH2 As Worksheet, SH3 As Worksheet
  
  Set SH1 = Sheets("Sheet1")
  Set SH2 = Sheets("Sheet2")
  Set SH3 = Sheets("Sheet3")
  With SH3
    .Cells.ClearContents
    .Range("A1:C1").Value = Array("行", SH1.Name, SH2.Name)
  End With
  For i = 1 To SH1.Cells(Rows.Count, "H").End(xlUp).Row
    If Not SH1.Cells(i, "H").Value = SH2.Cells(i, "H").Value Then
           
     With SH3.Cells(Rows.Count, "A").End(xlUp).Offset(1)
        .Value = i & "行目"
        .Offset(, 1).Value = SH1.Cells(i, "H").Value
        .Offset(, 2).Value = SH2.Cells(i, "H").Value
     End With
     
    End If
   Next
End Sub

【64684】Re:sheet1とsheet2を比較して一致しなか...
発言  VBAは初心者です。 E-MAIL  - 10/3/7(日) 23:29 -

引用なし
パスワード
   ▼ponpon さん:
回答ありがとうございます。

さっそく実行してみましたが、エラーは出ないですが
なぜかうまく実行されませんでした。
何がいけないんでしょうか?

【64685】Re:sheet1とsheet2を比較して一致しなか...
発言  かみちゃん E-MAIL  - 10/3/8(月) 5:16 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>さっそく実行してみましたが、エラーは出ないですが
>なぜかうまく実行されませんでした。

Sheet3は、どのような結果になったのでしょうか?

うまく実行されないなら、
・元データの内容
・期待している結果
をサンプルで説明されてはいかがでしょうか?

【64687】Re:sheet1とsheet2を比較して一致しなか...
発言  ponpon  - 10/3/8(月) 10:23 -

引用なし
パスワード
   ▼VBAは初心者です。 さん:
>なぜかうまく実行されませんでした。
>何がいけないんでしょうか?

と言われても、正解がわからないので何とも・・・

>>一致しなかった行をsheet3に張り付けたのですが

と言うのが、よくわからなかったので
シート3にシート1とシート2の違う行の行番号と
H列の値を書き出すようにしましたが・・・

【64688】Re:sheet1とsheet2を比較して一致しなか...
質問  VBAは初心者です。 E-MAIL  - 10/3/8(月) 13:17 -

引用なし
パスワード
   説明が下手ですみません。
どんな感じは以下に示します。

sheet1のサンプルデータです。左上がA1です。
aaa    aaa    aaa    aaa    aaa    aaa    aaa    123456    aaa
bbb    bbb    bbb    bbb    bbb    bbb    bbb    234567    bbb
ccc    ccc    ccc    ccc    ccc    ccc    ccc    345678    ccc

sheet2のサンプルデータです。左上がA1です。
aaa    aaa    aaa    aaa    aaa    aaa    aaa    123456    aaa
ddd    bbb    ddd    bbb    bbb    ddd    bbb    456789    ddd
ccc    ccc    ccc    ccc    ccc    ccc    ccc    345678    ccc

この二つを比較してsheet3には
ddd    bbb    ddd    bbb    bbb    ddd    bbb    456789    ddd
の行を出力したいのですがお願いします。

【64689】Re:sheet1とsheet2を比較して一致しなか...
発言  ponpon  - 10/3/8(月) 13:42 -

引用なし
パスワード
   一行目に項目行があると考えています。
Sub test2()
  Dim i As Long
  Dim SH1 As Worksheet, SH2 As Worksheet, SH3 As Worksheet
 
  Set SH1 = Sheets("Sheet1")
  Set SH2 = Sheets("Sheet2")
  Set SH3 = Sheets("Sheet3")
  With SH3
    .Cells.ClearContents
    .Range("A1:I1").Value = SH2.Range("A1:I1").Value
  End With
  For i = 1 To SH1.Cells(Rows.Count, "H").End(xlUp).Row
    If Not SH1.Cells(i, "H").Value = SH2.Cells(i, "H").Value Then
      SH2.Rows(i).Copy SH3.Cells(Rows.Count, "A").End(xlUp).Offset(1)
    End If
   Next
End Sub

【64690】Re:sheet1とsheet2を比較して一致しなか...
発言  VBAは初心者です。 E-MAIL  - 10/3/8(月) 15:58 -

引用なし
パスワード
   実行してみたのですがのシート2の内容がシート3に丸々コピーされただけでした。
サンプルデータを見直したところ僕がサンプルデータを間違えてました。
もう一度修正したサンプルデータを掲載しますので、よろしくお願いします。

sheet1のサンプルデータです。左上がA1です。
aaa aaa aaa aaa aaa aaa aaa 123456 aaa aaa
aaa bbb bbb ccc aaa bbb ccc 234567 bbb aaa
aaa ccc bbb ccc ccc ccc ccc 345678 ccc ccc

sheet2のサンプルデータです。左上がA1です。
aaa aaa aaa aaa aaa aaa aaa 123456 aaa aaa
aaa bbb ddd ccc aaa bbb ddd 456789 bbb aaa
aaa ccc bbb ccc ccc ccc ccc 345678 ccc ccc

この二つを比較してsheet3には
aaa bbb ddd ccc aaa bbb ddd 456789 bbb aaa
の行を出力したいのですがお願いします。

【64692】Re:sheet1とsheet2を比較して一致しなか...
発言  ponpon  - 10/3/8(月) 16:19 -

引用なし
パスワード
   >シート2の内容がシート3に丸々コピーされただけでした。

シート1とシート2のH列を見て
違っていたら、シート3にシート2の内容をコピーするですよね?
こちらでは、出来てますがこれでは?

Sub test3()
  Dim i As Long
  Dim SH1 As Worksheet, SH2 As Worksheet, SH3 As Worksheet
 
  Set SH1 = Sheets("Sheet1")
  Set SH2 = Sheets("Sheet2")
  Set SH3 = Sheets("Sheet3")

  SH3.Cells.ClearContents
  For i = 1 To SH1.Cells(Rows.Count, "H").End(xlUp).Row
    If Not SH1.Cells(i, "H").Value = SH2.Cells(i, "H").Value Then
      SH2.Rows(i).Copy SH3.Cells(Rows.Count, "A").End(xlUp).Offset(1)
    End If
  Next
End Sub

【64694】Re:sheet1とsheet2を比較して一致しなか...
お礼  VBAは初心者です。 E-MAIL  - 10/3/8(月) 16:56 -

引用なし
パスワード
   しっかり動くことが確認できました。

何度も何度も回答を頂き本当にありがとうございました。

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