|
▼秋刀魚 さん:
上のサンプルは コードと日付のリストを書き出すものでしたが、
該当行を別シートに書き出すなら、(Try1を少し修正して)
こんな感じになります。
Sub Try2() '別シートへ抽出
Dim r As Range
Dim v, s As String, w
Dim i As Long, y As Long, x As Long
Dim dic As Object
Set dic = CreateObject("Scripting.Dictionary")
'元データ
Set r = Worksheets(1).Range("A1").CurrentRegion
x = r.Columns.Count
v = r.Resize(, 2).Value
y = UBound(v)
'「コード」別最新日付行を検索
For i = 2 To y
s = v(i, 2)
If dic.Exists(s) Then
If v(dic(s), 1) < v(i, 1) Then dic(s) = i
Else
dic(s) = i
End If
Next
ReDim w(1 To y, 1 To 1)
w(1, 1) = "temp"
For Each v In dic.Keys
i = dic(v)
w(i, 1) = i 'コード別最新日付行を配列に書き込む
Next
Worksheets(2).UsedRange.ClearContents
With r.Item(1, x + 1).Resize(y)
.Value = w '作業列に
.AutoFilter 1, ">=0" '行番号のある行だけ抽出
r.Copy Worksheets(2).Range("A1") '別シートに転記
.AutoFilter
.ClearContents
End With
Set dic = Nothing
End Sub
|
|