[[20161216133438]] 『【VBA】オートフィルタ適用後、特定の列の可視セメx(むむむ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『【VBA】オートフィルタ適用後、特定の列の可視セルのみ別シートに貼り付ける方法』(むむむ)

オートフィルタ適用後、特定の列の可視セルのみ別シートに貼り付ける方法を
教えてください。

実際にやりたいことは以下になります

1. オートフィルタでA列の条件を絞る
2. B列に表示されている可視セルのみ選択して別シートに値貼付する
3. 2.で貼り付けたデータの重複削除して完了

どなたかご存知の方がいらっしゃいましたら
お知恵をお借りしたく・・・。

よろしくお願いいたします。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


こんにちは

マクロに記録して整理するだけでいいのでは?

Sub test()

    Dim sh1 As Worksheet
    Dim sh2 As Worksheet

    Set sh1 = Worksheets("Sheet1")   '実際のシート名
    Set sh2 = Worksheets("Sheet2")   '実際のシート名

    sh1.Range("A1").CurrentRegion.AutoFilter Field:=1, Criteria1:="1"   '実際の条件
    sh1.Columns("B:B").Copy
    sh2.Range("A1").PasteSpecial _
        Paste:=xlPasteValues, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    sh2.Range("A1").CurrentRegion.RemoveDuplicates _
        Columns:=1, Header:=xlYes
End Sub    
(ウッシ) 2016/12/16(金) 13:55

フィルタ選択は手動で行ったとして、その後だけ実現する別案なぞ。

 Sub test()
    Sheets("Sheet1").Range("B1:B" & Cells(Rows.Count, "B").End(xlUp).Row).SpecialCells(xlCellTypeVisible).Copy Sheets("Sheet2").Range("A1")
    Sheets("Sheet2").Range("A1").CurrentRegion.RemoveDuplicates Columns:=1, Header:=xlYes
 End Sub
(???) 2016/12/16(金) 14:48

そうか、ウッシさんのようにB列全部指定にすれば、もっと簡単になりますね。

 Sub test()
    Sheets("Sheet1").Range("B:B").SpecialCells(xlCellTypeVisible).Copy Sheets("Sheet2").Range("A1")
    Sheets("Sheet2").Range("A1").CurrentRegion.RemoveDuplicates Columns:=1, Header:=xlYes
 End Sub
(???) 2016/12/16(金) 14:50

 あまりかわりませんが、元領域指定、以下のようにも。

 Sub Sample()
    With Sheets("Sheet2")
        Sheets("Sheet1").AutoFilter.Range.Columns("B").Copy .Range("A1")
        .Columns("A").RemoveDuplicates Columns:=1, Header:=xlYes
    End With
 End Sub

(β) 2016/12/16(金) 14:55


回答いただき、ありがとうございます。

マクロ初心者で不明点が多く、とても助かりました。
参考にさせていただきます。
(むむむ) 2016/12/16(金) 18:19


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.