|
▼KAZU さん:
>Sheet1に1000件以上のデータが入力されています。B列に数値が入力されています。
>Sheet2の30行目にSheet1と同じ項目の内容を入力しSheet2 B列の数値と一致するSheet1の行にコピーするにはどうしたらいいのでしょうか。よろしくお願いします。
> Sheet1 Sheet2 Sheet1
>a b c d e a b c d e a b c d e
>1 101 r y t → 1 101 u p y → 1 101 u p y
>2 102 u u o
>3 103 t i p
>4 104 i j o
>5 105 o n u
>
>
質問内容があまり理解できませんでしたのでが以下の処理で
できるとおもいますが…
Dim s1max As Long'sheet1行数
Dim s2max As Long'sheet2行数
Dim i, j, count As Integer'ループカウンタ,一致データ数
'**初期化**
count = 0
s1max = Sheet1.Range("B" & Sheet1.Rows.count).End(xlUp).Row
s2max = Sheet2.Range("B" & Sheet2.Rows.count).End(xlUp).Row
'**集計**
For i = 30 To s2max
For j = 2 To s1max
If Sheet1.Cells(j, 2) = Sheet2.Cells(i, 2) Then
count = count + 1
Sheet2.Range(Sheet2.Cells(i, 2), Sheet2.Cells(i, 5)).Copy
Sheet1.Cells(s1max + count, 2).PasteSpecial Paste:=xlPasteValues
Exit For
End If
Next j
Next i
'**終了**
MsgBox "sheet1とsheet2のデータで同じ値は" & count & "個ありました。", vbOKOnly, "結果表示"
終了時にはsheet2のB30以降のデータを削除しないと処理を行う度にsheet1に
データがコピーされますので…
|
|