Excel VBA質問箱 IV

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

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


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

【69096】条件移動について シン 11/5/16(月) 22:32 質問[未読]
【69097】Re:条件移動について 通り魔 11/5/17(火) 1:13 発言[未読]
【69109】Re:条件移動について シン 11/5/17(火) 20:26 質問[未読]

【69096】条件移動について
質問  シン  - 11/5/16(月) 22:32 -

引用なし
パスワード
   こんばんわ。
以前、条件移動についてご質問させて頂き
下記のように教えて頂きました。
下記のプログラムはsheet1のA1とsheet2のA1を比較し
これらが同じの場合のみsheet2からsheet1コピーするようなものです。

しかし、困ったことに、A1の列でしか比較ができずにいます。
たとえば、sheet1のD10〜D30の列とsheet2のB7からB27まで
比較し下記のような動作ができるようにしたいのですが。
教えて頂けないでしょうか?

下記は以前教えて頂いた型です。
-----------------------------------------------------------


Sub Try1()        'WS2 → WS1
  Dim WS1 As Worksheet
  Dim WS2 As Worksheet
  Dim r1 As Range, c As Range
  Dim r2 As Range
  Dim r22 As Range
 
  Set WS1 = Worksheets("Sheet1")
  Set WS2 = Worksheets("Sheet2")
 
  Set r1 = WS1.Range("A1", WS1.Cells(WS1.Rows.Count, 1).End(xlUp))
  Set r2 = WS2.Range("A1", WS2.Cells(WS2.Rows.Count, 1).End(xlUp))
  Set r22 = r2.Offset(, 2).Resize(, 5)
  Dim m
  r1.Offset(, 2).Resize(, 5).ClearContents
  For Each c In r1
    m = Application.Match(c, r2, 0)
    If IsNumeric(m) Then
      r22.Rows(m).Copy c(1, 2)
    End If
  Next
 
End Sub

【69097】Re:条件移動について
発言  通り魔  - 11/5/17(火) 1:13 -

引用なし
パスワード
   コードを理解してればsetのとこいじって自分でできるはず
理解してなければコードだけ教えた奴出てきて土下座

【69109】Re:条件移動について
質問  シン  - 11/5/17(火) 20:26 -

引用なし
パスワード
     下記の”A1”のところを”D10”に変更しても
  うまくできないんですが。。。

  うまくできる方法を教えていただけないでしょうか?

  Set r1 = WS1.Range("A1", WS1.Cells(WS1.Rows.Count, 1).End(xlUp))
  Set r2 = WS2.Range("A1", WS2.Cells(WS2.Rows.Count, 1).End(xlUp))


▼シン さん:
>こんばんわ。
>以前、条件移動についてご質問させて頂き
>下記のように教えて頂きました。
>下記のプログラムはsheet1のA1とsheet2のA1を比較し
>これらが同じの場合のみsheet2からsheet1コピーするようなものです。
>
>しかし、困ったことに、A1の列でしか比較ができずにいます。
>たとえば、sheet1のD10〜D30の列とsheet2のB7からB27まで
>比較し下記のような動作ができるようにしたいのですが。
>教えて頂けないでしょうか?
>
>下記は以前教えて頂いた型です。
>-----------------------------------------------------------
>
>
>Sub Try1()        'WS2 → WS1
>  Dim WS1 As Worksheet
>  Dim WS2 As Worksheet
>  Dim r1 As Range, c As Range
>  Dim r2 As Range
>  Dim r22 As Range
> 
>  Set WS1 = Worksheets("Sheet1")
>  Set WS2 = Worksheets("Sheet2")
> 
>  Set r1 = WS1.Range("A1", WS1.Cells(WS1.Rows.Count, 1).End(xlUp))
>  Set r2 = WS2.Range("A1", WS2.Cells(WS2.Rows.Count, 1).End(xlUp))
>  Set r22 = r2.Offset(, 2).Resize(, 5)
>  Dim m
>  r1.Offset(, 2).Resize(, 5).ClearContents
>  For Each c In r1
>    m = Application.Match(c, r2, 0)
>    If IsNumeric(m) Then
>      r22.Rows(m).Copy c(1, 2)
>    End If
>  Next
> 
>End Sub

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