[[20150727092808]] 『マクロでオートフィルタにて3つ以上の条件を抽出』(えくせら) ページの最後に飛ぶ

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

 

『マクロでオートフィルタにて3つ以上の条件を抽出』(えくせら)

閲覧ありがとうございます。
オートフィルタにて3つ以上の条件を含まないものを抽出→削除→残っているデータを表示までしたいと思っています。

2つまでは出来てはおりましたが、3つ以上の条件は動かなくなりました…
よろしければご教授願えますでしょうか。
よろしくお願いします。

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


こんにちは

マクロで処理されるならフィルタオプションを使ってはどうですか?

手作業でフィルタオプションで抽出する作業をマクロに記録してコードを整理するといいですよ。

(ウッシ) 2015/07/27(月) 09:46


ウッシ様
ご回答ありがとうございます。
説明不足で申し訳ございません。

・データ量がその月ごとに変わってしまう
・そのデータには作業列が作成不可

この為、フィルタオプションを使用せずマクロを組んだほうがいいのかと思ったのですが
恐縮ですが教えて頂けませんでしょうか…
(えくせら) 2015/07/27(月) 10:10


こんにちは

どっちの意味でしょうか?

Sub test1()

    Dim tSh As Worksheet
    Dim mSh As Worksheet

    Set mSh = Worksheets("Sheet1")  '処理対象シート

    'テストデータ作成
        mSh.UsedRange.ClearContents
        mSh.Range("A1") = "dummy1"
        mSh.Range("A2:A18").Formula = "=ROW(A1)"
        mSh.Range("A2:A18").Value = mSh.Range("A2:A18").Value

    Set tSh = Worksheets.Add        '一時作業シート
    tSh.Range("A1:C1").Value = mSh.Range("A1")  '抽出項目名
    tSh.Range("A2:C2").Value = Array("<>1", "<>3", "<>5")   '抽出条件例

    mSh.Range("A1").CurrentRegion.AdvancedFilter _
        Action:=xlFilterInPlace, CriteriaRange:= _
        tSh.Range("A1:C2"), Unique:=False

    mSh.Range("A1").CurrentRegion.Offset(1) _
        .SpecialCells(xlCellTypeVisible).EntireRow.Delete

    mSh.ShowAllData
    Application.DisplayAlerts = False
    tSh.Delete
    Application.DisplayAlerts = True
End Sub

Sub test2()

    Dim tSh As Worksheet
    Dim mSh As Worksheet

    Set mSh = Worksheets("Sheet1")  '処理対象シート

    'テストデータ作成
        mSh.UsedRange.ClearContents
        mSh.Range("A1:D1").Formula = "=""dummy""&COLUMN(A1)"
        mSh.Range("A1:D1").Value = mSh.Range("A1:D1").Value
        mSh.Range("A2:D18").Formula = "=ROW(A1)*COLUMN(A1)"
        mSh.Range("A2:D18").Value = mSh.Range("A2:D18").Value

    Set tSh = Worksheets.Add        '一時作業シート
    tSh.Range("A1:C1").Value = mSh.Range("A1:C1").Value  '抽出項目名
    tSh.Range("A2").Value = "<>3"                        '抽出条件例
    tSh.Range("B3").Value = "<>6"                        '抽出条件例
    tSh.Range("C4").Value = "<>9"                        '抽出条件例

    mSh.Range("A1").CurrentRegion.AdvancedFilter _
        Action:=xlFilterInPlace, CriteriaRange:= _
        tSh.Range("A1:C4"), Unique:=False

    mSh.Range("A1").CurrentRegion.Offset(1) _
        .SpecialCells(xlCellTypeVisible).EntireRow.Delete

    On Error Resume Next
    mSh.ShowAllData
    On Error GoTo 0
    Application.DisplayAlerts = False
    tSh.Delete
    Application.DisplayAlerts = True
End Sub

新規ブックで試してみて下さい。

(ウッシ) 2015/07/27(月) 11:49


コメント返信:

[ 一覧(最新更新順) ]


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