よねさんのWordとExcelの小部屋 なんでも掲示板

HOME HELP 新規作成 新着記事 ツリー表示 トピック表示 検索 過去ログ

[ 最新記事及び返信フォームをトピックトップへ ]

■13112 / inTopicNo.1)  オートフィルターで条件を省く場合について
  
□投稿者/ mr Mail -(2016/12/19(Mon) 22:39:57)
    例えば集計時に毎回、表の中から省く出席番号があるとします。集計時によって、A2からA4の1001,1002,1003を省く、1001だけ省くと変動がある場合、VBAで除外させるのにどのように表現すればよいのかわかりません。
    基本は、
    Sub Adfilter2()
      Range("A4:I14").AdvancedFilter _
        Action:=xlFilterCopy, _
        CriteriaRange:=Range("B1:B2"), _
        CopyToRange:=Worksheets("Sheet2").Range("A1"), _
        Unique:=False
    End Sub
    を利用して別シートに移したいと思っています。
    説明下手ですみません。よろしくお願いいたします。
引用返信/返信 削除キー/
■13113 / inTopicNo.2)  Re[1]: オートフィルターで条件を省く場合について
□投稿者/ よねさん -(2016/12/20(Tue) 07:39:18)
    2016/12/20(Tue) 09:16:22 編集(管理者)
    お書きのコードは AdvancedFilter (フィルターオプションの設定といった機能で、リボンでは 詳細設定というコマンドから実行する機能) です。
    オートフィルターではないです。
    
    コードでは B1:B2が条件設定を行っているセルになりますので
    B2だけに複数の出席番号を除く条件を書くのは、数式で行う必要があると考えます。
    すると、B1セルは空欄のままにしておきます。
    B2セルに =AND(A5<>1001,A5<>1002,A5<>1003) と入力しておくと
    1001、1002、1003を除いたものがSheet2へ抽出されるはずです。
    この数式は A5セルがデータの先頭行としています。4行目は見出しが入力されているものと考えています。
    1001だけを除く場合は B2セルに =A5<>1001 と入力します。
    こういうことでよろしいでしょうか?
    
    (追加)
    条件(数式)の書き方なら
    =NOT(OR(A5=1001,A5=1002,A5=1003))
    〜と同じ をNOTで否定して、 〜でない とすることもできます。
    また、1001から始まっている数値なら
    >=1004 1004 以上のもの といった条件の付け方もあります。
    つまり、いろいろな書き方がありますので、ご自身で理解しやすい方法を取られたら良いと思います。

引用返信/返信 削除キー/
■13115 / inTopicNo.3)  Re[2]: オートフィルターで条件を省く場合について
□投稿者/ mr Mail -(2016/12/20(Tue) 21:56:35)
    ありがとうございます。まさか回答していただけると思っていなかったので感激です。セルに式を入れるなんて発想ありませんでした。
    ほんとがちがちな頭ですね。教えて頂いた方法でためしてみます。
    本当にありがとうございました。
引用返信/返信 削除キー/
■13117 / inTopicNo.4)  Re[3]: オートフィルターで条件を省く場合について
□投稿者/ mr Mail -(2016/12/22(Thu) 00:28:30)
    すみません。混乱しています。説明不足、ひどい言葉遣いかもしれません。ごめんなさい。

    例えばですが、
    sheet1

    会員番号 氏名   科目  得点
    abc-123456 あらた 国数  250
    abc-345678 さきた 英国  372
    abc-234567 こくら 英数  215
    abc-456789 さささ 英英  300

    ※sheet1のデータは集計時によって
    増減があります。


    sheet2
    会員番号   会員番号
    <>abc-123456 <>abc-234567

    ※sheet2の列はどんどん増えるとします。
    集計時によって増減がある場合。

    sheet3←集計結果をだしたい
    会員番号 氏名   科目  得点
    abc-345678 さきた 英国  372
    abc-456789 さささ 英英  300

    以下のようなマクロの記録に足して書きました。
    Sub test1()
    Dim gyo as long
    gyo =sheets("Sheet1").Cells(1, 1).End(xlDown).Row

    Range(cells(1, 1),cells(gyo, 4)).Select
    Range(cells(1, 1),cells(gyo, 4)).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheets( _
    "Sheet2").Range("A1:B2"), CopyToRange:=Range("A20"), Unique:=False
    End Sub

    -----

    ここでわからないのが、sheet2の最終列の指定方法です。
    Dim retu as long
    retu =sheets("Sheet2")Cells(1, 1).End(xlToRight).Column

    で、表せると思うのですが、

    CriteriaRange:=Sheets( _
    "Sheet2").Range("A1:B2"), CopyToRange:=Range("A20"), Unique:=False

    に、どうやってあてはめていいのかわからない。

    "Sheet2").Range("A1:B2")をcellsに置き換えればいいのかしら?


    一番最初の
    Range(cells(1, 1),cells(gyo, 4)).Select
    も、本来はsheet1を指定しないといけないのかな??その指定方法はどうすれば・・・


引用返信/返信 削除キー/
■13118 / inTopicNo.5)  Re[4]: オートフィルターで条件を省く場合について
□投稿者/ よねさん -(2016/12/22(Thu) 08:28:15)
    「本来はsheet1を指定しないといけないのかな??」<---この方がコードがわかりやすいと思います。
    また、どのシートからでも実行することができるようになりますので。
    Sheetを省略するとアクティブシートのことになるので、ほかのシートから実行するときに都合が悪くなります。
    ただし、コードが長くなりますけど、それはしょうがないですね。
    
    コードを修正してみました。
    抽出先はSheet3のA1としていますので、ご注意ください。
    
    Sub test1()
    Dim gyo As Long
    Dim retu As Long
    gyo = Sheets("Sheet1").Cells(1, 1).End(xlDown).Row
    retu = Sheets("Sheet2").Cells(1, 1).End(xlToRight).Column
    
    Sheets("Sheet3").Range("A:D").Clear
    Sheets("Sheet1").Range(Sheets("Sheet1").Cells(1, 1), Sheets("Sheet1").Cells(gyo, 4)).AdvancedFilter _
            Action:=xlFilterCopy, _
            CriteriaRange:=Sheets("Sheet2").Range(Sheets("Sheet2").Cells(1, 1), Sheets("Sheet2").Cells(2, retu)), _
            CopyToRange:=Sheets("Sheet3").Range("A1"), _
            Unique:=False
    End Sub
    
    

引用返信/返信 削除キー/
■13122 / inTopicNo.6)  Re[5]: オートフィルターで条件を省く場合について
□投稿者/ mr Mail -(2016/12/23(Fri) 00:04:24)
    ありがとうございます。できました!!

    CriteriaRange:=Sheets("Sheet2").Range(Sheets("Sheet2").Cells(1, 1), Sheets("Sheet2").Cells(2, retu)), _

    と、書くのですね。シートの指定とセル位置の指定とで混乱していて、なんだかすっきりとしました。ありがとうございます。
    頑張ってもう少し勉強いたします。
    また、ご迷惑をかけることがあるかもしれませんがよろしくお願いいたします。
引用返信/返信 削除キー/
■13123 / inTopicNo.7)  Re[6]: オートフィルターで条件を省く場合について
□投稿者/ よねさん -(2016/12/23(Fri) 10:47:19)
    2016/12/23(Fri) 10:47:51 編集(管理者)
    今更ですが、除外するNoをテーブルとして入力することによって、
    数式の変更や検索条件の範囲を変更する必要がなくなります。
    ちょっとややこしく感じられるかもしれませんが、↓のページの最後の方に書いてみましたので、
    興味をひかれましたらご覧ください。
    http://www4.synapse.ne.jp/yone/excel/excel_data_filter_not.html

引用返信/返信 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

Pass/

HOME HELP 新規作成 新着記事 ツリー表示 トピック表示 検索 過去ログ

- Child Tree -