|
▼kiki さん:
おじゃまします。
>今後の勉強のためにも複数件あるデータを検索して転記する方法を
[Sheet2]のA列にあるリストに重複はなかったですか?
一般機能ですが、
フィルタオプションで、その[Sheet2]A列を抽出条件(リスト)範囲とすると
簡単なコードで、リストにあるデータだけ[Sheet2]に抽出できますよね
それをマクロにしたものが、以下です。
Sub Try1() 'Sheet1より抽出転記、並び替え
Dim Rng1 As Range
Dim Rng2 As Range
Dim Rng3 As Range
With Worksheets("Sheet1")
'[Sheet1]1行目には A列から必要列まで(F1, F2,F3, F4,... F30のように)
' 列見出しが入っているものと仮定しています
Set Rng1 = .Range("AD1", .Cells(.Rows.Count, 1).End(xlUp))
End With
With Worksheets("Sheet2")
If Not .Cells(1).HasFormula Then
.Rows(1).Insert
.Cells(1).Formula = "=Sheet1!D1"
End If
Set Rng2 = .Range("A1", .Cells(1).End(xlDown)) '抽出リスト
Set Rng3 = .Range("C1").Resize(, Rng1.Columns.Count)
End With
Rng3.EntireColumn.ClearContents
Rng3.Rows(1).Value = Rng1.Rows(1).Value '列見出しをコピーします
'A列にリストのあるデータ行だけ転記します(フィルタオプション)
Rng1.AdvancedFilter xlFilterCopy, Rng2, Rng3
'転記後、第4列で並び替えます
Rng3.CurrentRegion.Sort Key1:=Rng3.Columns(4), Order1:=xlAscending _
, Header:=xlYes
End Sub
なお、[Sheet2]A列の抽出リストが 単純な昇順リストとかになっていないときは
並び替えのオプションをユーザー定義で 「[Sheet2]A列の抽出リスト」を追加し
てこのSortOrderで並び替えてやる方法があります。(単純な昇順リストのほう
が、あとで読みやすいと思われますが)
|
|