[[20130522161616]] 『特定のセルに入力されたら、その行のデータを別シ』(まっさん) ページの最後に飛ぶ

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

 

『特定のセルに入力されたら、その行のデータを別シートに抽出する』(まっさん)

Windows 7 Excel2013

下記のような名簿みたいな一覧表作成しました。

A4  B4   C4   D4   E4    F4
No. 名前  コース 担当  入日    卒日
1  Aさん Aコース Bさん 2012/5/1  2013/5/1
2  Cさん Bコース Dさん 2012/6/10

F4列の5〜以下に日付が入力されているか、空白な状態で
日付が入力されてる列だけを抽出して、別のシートに
同じように表示させたいのですがどうしたらいいでしょうか?

よろしくお願いします。


 4行目がタイトル行ということだね?

 で、『5〜以下に日付が入力されているか』この意味はよくわかるけど
 『空白な状態で 日付が入力されてる列』 この意味がわからない。

 F列の日付は入力されているけど、A列からE列が空白のもの ということ?
 でも、それだと、『5〜以下に日付が入力されているか』という条件からは A〜Eに値があろうがなかろうが抽出するんだろうから
 ちょっと矛盾してくるね。

 あっ、もしかしたら日付が入っているもののみ、あるいは日付が入っていないもののみ抽出ということ?

 (ぶらっと)

説明不足で申し訳ないです。

ご指摘のように、4行目には、Noや名前などのタイトルが入っており
以下のセルに各タイトルのデータが入力されている状態です。

抽出の条件として、卒日の列のセルに日付が入力されている行のみを
A4からF4の項目ごと、別シートに抽出したいと思っています。

(まっさん)


自分なりに試行錯誤した結果、

ActiveSheet.Range("$A$4:$F$1005").AutoFilter Field:=6, Criteria1:="<>"

    ActiveWindow.SmallScroll Down:=-12
    Range("A5:F9").Select
    Selection.Copy
    Sheets("Sheet2").Select
    Range("A5").Select
    ActiveSheet.Paste

このような感じで、マクロ実行出来たのですが
オートフィルタで抽出しているので
抽出元のSheet1の一覧表がフィルタ掛かった状態になってしまうので
実行しても、Sheet1の表は元のままに(フィルタ解除した状態)できないでしょうか?

よろしくお願いします。

(まっさん)


 設定したオートフィルターを解除する方法はいろいろあるけど、手っ取り早いのは
 そのシート.AutoFIlterMode = False

 以下、コード案。

 Sub Sample()

    With Sheets("Sheet1")
        .AutoFilterMode = False   '念のためいったん解除
        .Range("A4", .Range("A" & .Rows.Count).End(xlUp)).Resize(, 6).AutoFilter Field:=6, Criteria1:="<>"
        .AutoFilter.Range.Copy Sheets("Sheet2").Range("A4")
        .AutoFilterMode = False   '処理後解除
    End With

 End Sub

 (ぶらっと)

ぶらっとさん、返事が遅くなり申し訳ないです。
ありがとうございます。

数日、試行錯誤して

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
ActiveSheet.Range("$A$4:$F$1005").AutoFilter Field:=6, Criteria1:="<>"

    Range("A5:$F$1005").Select
    Selection.Copy
    Sheets("Sheet2").Select
    Range("A5").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    ActiveWorkbook.Worksheets("Sheet2").AutoFilter.Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Sheet2").AutoFilter.Sort.SortFields.Add Key:=Range _
        ("F4"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Sheet2").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    ActiveCell.Select
    Sheets("Sheet1").Select
    ActiveSheet.Range("$A$4:$F$1005").AutoFilter Field:=6
    ActiveCell.Select
End Sub

上記のような感じで出来ました。

ただ、これだと、sheet1でアクティブな状態でしかマクロが実行しないので
Sheet2を開いている状態でも、マクロが実行するように変更したいです。

ご教授よろしくお願いします。


コメント返信:

[ 一覧(最新更新順) ]


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