[[20100107151343]] 『奇数行だけオートフィルタ』(taiyo) ページの最後に飛ぶ

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

 

『奇数行だけオートフィルタ』(taiyo)

 下記の表で予定だけを日別に集計して、結果の表のようにしたいんですが、
 以前質問させていただいた時は予定の行だけで、実行の行はありませんでした。

以前の質問→[[20090812114659]]『フィルタオプションの繰り返しを簡略化』

 以前の質問で頂いた回答を参考に今は下記のマクロを使用していますが、
 このままだと、実行も拾ってしまうのか結果がおかしくなってしまいます。

 下記のマクロに何か追加して、結果の表のようには出来ないでしょうか?

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

   A・・・・  L  M  N  O  P  Q ・・・AQ    
 3 会社名    1日 2日 3日 4日 5日・・・31日
 4  
 5 A社  予定 ○
 6     実行 ○       ○
 7 B社  予定 ○
 8     実行   ○ 
 9 C社  予定     ○
10     実行     ○
11 D社  予定     ○
12     実行     
13 E社  予定       
14     実行       ○

《結果の表》

  AT AU AV AW AX AY
 1
 2
 3
 4
 51日 2日 3日 4日 5日 6日 ・・・
 6A社   C社
 7B社     D社
 8    
 9

 Dim x, y
Dim i As Long, j As Long, cnt As Long

    x = Range("A1:AQ2000").Value    '基になるデータを配列xに読み込む
    ReDim y(1 To 2000, 1 To 43) 'xと同じ程度の配列yを準備する
        For i = 13 To 43 '○を調べる列を順次見ていく。M列からならFor i = 13 To 43 のような感じ
            cnt = 0 '列単位でカウントを0に戻す
            For j = 5 To 2000   'データの行順に○を調べる。5行目からならFor j = 5 To 2000のような感じ
                If x(j, i) <> "" Then
                    cnt = cnt + 1
                    y(cnt, i - 12) = x(j, 2) 'y(1,1)から該当データを入れたいので、y(cnt, i - 11) = のようにiの開始値が12ならi-11として1になるようにする
                End If
            Next j
        Next i
    Range("AT4:BX4").Value = Range("M3:AQ3").Value  '列見出しをコピーしているだけなので適切な範囲に修正。= Range("H3:AL3").Value のような感じ
    Range("AT5").Resize(UBound(y), UBound(y, 2)).Value = y

[エクセルのバージョン]Excel2000 [OSのバージョン]WindowsXP


 現状の作りを出来るだけ維持しながら考えるならば、
予定/実行が入っている列はL列、すなわち x(j, 12) になるんでしょうから、
この値が"予定"ならば処理するような形を取ってみるのが早いかも知れません。
(ご近所PG)


 ありがとうございます。 

 マクロは初心者なので、出来ればどこにどのように入力したら良いのか
 具体的に教えていただけますか?

 宜しくお願い致します。

 (taiyo)

 ここです。
            For j = 5 To 2000   'データの行順に○を調べる。5行目からならFor j = 5 To 2000のような感じ
                If x(j, 12) = "予定" Then 'L列が"予定"の行ならば処理する
                    If x(j, i) <> "" Then
                        cnt = cnt + 1
                        y(cnt, i - 12) = x(j, 2) 'y(1,1)から該当データを入れたいので、y(cnt, i - 11) = のようにiの開始値が12ならi-11として1になるようにする
                    End If
                End If
            Next j
脳内でコンパイルしただけなので、動かなかったらごめんなさい。
 
現状のものと今回の改修を追加したものとで、何がどう違って動くのか。
それをステップ実行で一つ一つ確認しつつ試すと、マクロの勘所が分かるかと思います。
もし「ステップ実行」についてよくわからない場合、このサイトの全文検索などで検索してみてください。
過去に説明された事例があります。
(ご近所PG)

 ご近所PGさん

 出来ました。
 ありがとうございました。
 ホントたすかりました。

 (taiyo)

コメント返信:

[ 一覧(最新更新順) ]


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