|
カスミ さん、こんばんわ。
>エクセルのSheet1のとある行(1行目)のいくつかのセルの中にデータが入っているとして、そのデータの中に重複するものがあればそのセルの位置と内容をそれぞれSheet2のセル1Aにそれぞれ内容を出力し、重複が複数ある場合はその出力が改行して下に続いていくという判定を行いたいのですが・・・
>同様に列(1列目)もその列に含まれているデータの中で重複を調べ、重複があればセル5A(複数重複なら改行)に出力する方法を教えていただけないでしょうか。
こういう意味ですかね。
Sub test()
Dim r1 As Range, r2 As Range, r3 As Range, NN As Long, II As Integer
'
For II = 1 To 2
If II = 1 Then
'1行目を処理
With ThisWorkbook.Worksheets("Sheet1")
Set r1 = Application.Intersect(.UsedRange, .Rows(1))
End With
Set r3 = ThisWorkbook.Worksheets("Sheet2").Cells(1, 1) '転記先
Else
'1列目を処理
With ThisWorkbook.Worksheets("Sheet1")
Set r1 = Application.Intersect(.UsedRange, .Columns(1))
End With
Set r3 = ThisWorkbook.Worksheets("Sheet2").Cells(5, 1) '転記先
End If
'
NN = 0: br = ""
For Each r2 In r1
If Application.WorksheetFunction.CountIf(r1, r2.Value) > 1 Then
'複数あったら転記する
NN = NN + 1
With r3
'値:アドレス
.Value = .Value & br & r2.Value & " : " & r2.Address(False, False)
End With
If NN = 1 Then br = vbCrLf
End If
Next
Next
'終了
Set r1 = Nothing: Set r2 = Nothing: Set r3 = Nothing
End Sub
ところで、A1やA5を時々逆に書くのはなぜですか?
|
|