[[20140928212414]] 『フィルタオプションで抽出したデータの下に別条件』(みる) ページの最後に飛ぶ

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

 

『フィルタオプションで抽出したデータの下に別条件の抽出データを表示』(みる)

Sheet1に元データがあり、抽出先のSheet2の3行目に抽出する特定の項目(列見出し)を
あらかじめ入力してあります。抽出条件はSheet2に 日付→(>=2014/4/1 <2014/7/31)
が入力してあり、マクロで抽出するようにしてあります。更にそのデータの下に
抽出条件以外の日付、つまり <=2014/4/1 >2014/7/31 のデータを表示する事は可能でしょうか?

sheet1
  A    B   C   D   E 
1 区分 番号 氏名 性別   日付
2 あ  12  田中  男  2014/4/2
3 い  19   山田  男   
4 え  11  佐藤  女  2014/7/19
5 う   22  斉藤  男  2014/2/11

Sheet2
  A   B   C    D   E    F    G
1                       日付   日付
2                      >=2014/4/1 <2014/7/31 ←抽出条件
3 区分 番号  氏名  日付
4 あ  12  田中  2014/4/2
5 え  11  佐藤  2014/7/19

この後6行目に抽出条件以外(空欄含む)のデータを抽出したい

6 い  19  山田
7 う   22  斉藤  2014/2/11

Sub Macro1()

 Dim myRow1 As Long, myRow2 As Long
  myRow1 = Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row
  myRow2 = Sheets("Sheet2").Range("A" & Rows.Count).End(xlUp).Row
   If myRow2>=4 Then
    Sheets("Sheet2").Range("A4:D" & myRow2).ClearContents
   End If
  Sheets("Sheet1").Range("A1:E1" & myRow1).AdvancedFilter Action:=xlFilterCopy,_
   CriteriaRange:=Sheets("Sheet2").Range("F1:G2"),CopyToRange:=Sheets("Sheet2").Range("A3:D3"), Unique:= False
End Sub

上記のマクロに追加して抽出条件以外のデータをその下に抽出したいのです。
つたない説明で申し訳ないのですが、よろしくお願いします。

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


 結局全部抽出するのなら、
  一旦全部コピーして、F列にでも
   =COUNTIFS(E4,$F$2,E4,$G$2)
  の様な数式を入れて、F列を降順で並べ替え後 F列の数式を削除
 と言った仕組みにしてはどうですか?
  
(HANA) 2014/09/29(月) 08:52

HANAさん
コメントありがとうございます。参考にさせていただきます。
できれば作業列を作りたくないという事と 
実は抽出先で必要な列見出しが抽出元の全部ではなく、更に抽出先にはD列以降も後で入力する表が存在します。

以上の事で抽出先に作成した表にデータを簡単に移したかったのですが・・。

マクロで方法はありますでしょうか?

(みる) 2014/09/29(月) 10:10


 マクロでやるのであれば、処理中に作業列を使っても消せば同じことだと思いますけれど。

 Sheet1 全体をコピーして、Sheet2 の3行目以降にコピー
 F列に作業列を追加

 F4=ROW(A4)+IF(COUNTIFS(E4,$F$2,E4,$G$2)>0,0,10^7)
 をF5以下にコピー

 F列を選んでコピー、形式を選んで貼り付けで「値」にし、
 3行目以降のデータ対象範囲を選んで並び替えでF列を選択「先行をデータの見出し・・・」にチェック
 F列を削除

 をマクロの記録にすれば、基本的にそのまま使えると思いますが、どうでしょうか。

 コピー範囲やソート範囲の最終行だけ、Cells(Rows.Count,"E").End(xlup).Row
 などに置き換えてあげれば、汎用的になると思います。
(Mook) 2014/09/29(月) 11:43

 >作業列を作りたくないという事と
 作業列は残らなければいいんでしょ?
 >>F列の数式を削除
 で残らないですよね?

 F列じゃなくても、どこか空いている列を使ってもらっても良いと思いますし
 数式を埋め込む前に、一列挿入して その列に数式を入れて
 並べ替え後 挿入した列を削除してしまえば良いと思いますが。

 >実は抽出先で必要な列見出しが抽出元の全部ではなく
 でしたら、フィルタの詳細設定で 必要な列のデータをすべて抽出する所から始めれば良いのでは?

 マクロの記録等使ってもらうと、コードも割と簡単にできるんじゃないかと思います。
 記録用の詳細な手順でも書きましょうか?
  
(HANA) 2014/09/29(月) 13:22

Mookさん HANAさん ありがとうございます。

一旦全部貼り付けて作業列を削除する方法でやってみます。

HANAさんマクロの記録は出来ると思います。お気づかいありがとうございます。
(みる) 2014/09/29(月) 14:19


コメント返信:

[ 一覧(最新更新順) ]


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