[[20091211113603]] 『マクロ』(マクロ初級者) ページの最後に飛ぶ

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

 

『マクロ』(マクロ初級者)

オートフィルタで抽出したデータのみフォントの色を赤に変えるマクロって、出来るんでしょうか?
その後、違う条件でオートフィルタを抽出し、それは太字に変える・・・出来ますでしょうか?

【例】

A1 1:00 10

A2 2:00 12

A3 3:00 15



A24 24:00 5 

の場合、
1ヶ月分(31日)1:00の値を抽出した値のみフォントを赤に、
続いて、12:00の値をフィルタで抽出し、12:00の値のみ太字に・・・です。
ご教授お願いします。


 オートフィルタは手動でかけるのですか?
 マクロでフォントを変えたいだけでしたら置換をマクロ記録で出来そうですが

  Sub test()
  Application.ReplaceFormat.Font.ColorIndex = 3
  ActiveSheet.Columns("A").Replace What:="1:00:00", Replacement:="", LookAt:=xlWhole, _
      SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=True
  With Application.ReplaceFormat.Font
    .FontStyle = "太字"
    .ColorIndex = xlAutomatic
  End With
  ActiveSheet.Columns("A").Replace What:="12:00:00", Replacement:="", LookAt:=xlWhole, _
          SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=True
  End Sub

 (momo)

A         B     C

2008/12/1  1:00    10

2008/12/1  2:00    12

2008/12/1  3:00    15

2008/12/1  4:00    12

1日1時間毎のデータが1年間続きます。

オートフィルタもマクロで自動化できればそれに越したことはありません。
実際の作業の詳細を書きますと、

オートフィルタで12:00と18:00の値を抽出し、抽出データ(B列とC列のみ)のフォントを赤に、

続いて
1:00の値をフィルタで抽出し、抽出データ(A列とB列とC列の値)を太字に・・・です。ご教授お願いします。


 momoさんが書いて下さっているコードは
 ご希望の様には成らなかったのですか?

 >置換をマクロ記録で出来そうですが
 と言うアドバイスもありますが。。。どうなんでしょう?

 (HANA)

momoさんが書いてくださったコードではできなくて・・・。

詳細を書き上げます。

A列に日付(2009/12/18の書式)、

B列に時間(1:00:00〜24:00:00の書式で24時間分)、

C列にはデータが入力されており、1年間分(約8700行くらい)あります。

オートフィルタで6:00と18:00の値を抽出し、抽出されたB列(時間)とC列(抽出データ)のみフォントを赤にし、抽出されたC列の値をD列にコピーする。

続いて1:00の値をオートフィルタで抽出し、抽出データ(B列とC列)を太字に・・・です。

この作業を1ヶ月ごとに繰り返します。
なんとかできますでしょうか?

オートフィルタもマクロで自動化できればそれに越したことはありません。

よろしくお願いします。

  


    Sub test()
        Dim mRa As Range, DT As Variant
        Dim r As Long
        Set mRa = ActiveSheet.AutoFilter.Range
        With Application.Intersect(mRa, mRa.Offset(1, 0))
            DT = .Value
            For r = 1 To .Rows.Count
                Select Case Format(DT(r, 2), "hh:mm")
                    Case "06:00", "18:00"
                        .Cells(r, 2).Font.ColorIndex = 3
                        .Cells(r, 3).Copy .Cells(r, 3).Offset(0, 1)
                        .Cells(r, 3).Font.ColorIndex = 3
                    Case "01:00"
                        .Cells(r, 2).Font.Bold = True
                        .Cells(r, 3).Font.Bold = True
                End Select
            Next r
        End With
    End Sub

 あ・・・、 
 オートフィルタ使ってなかったですね・・・。 
 すません。まぁ参考にということで。

 (白茶)


白茶さん、ありがとうございます!抽出データのフォントの色は希望通りできました!が、

D列にコピーしたデータのフォントの色も赤でできないでしょうか?

あと、オートフィルタで抽出した1:00の抽出データ(C列)を太字にした後、E列に太字のままコピーする・・・もご教授ください。どうぞよろしくお願いします。


    Sub test()
        Dim mRa As Range, DT As Variant
        Dim r As Long
        Set mRa = ActiveSheet.AutoFilter.Range
        With Application.Intersect(mRa, mRa.Offset(1, 0))
            DT = .Value
            For r = 1 To .Rows.Count
                Select Case Format(DT(r, 2), "hh:mm")
                    Case "06:00", "18:00"
                        .Cells(r, 2).Font.ColorIndex = 3
                        .Cells(r, 3).Copy .Cells(r, 3).Offset(0, 1) '←┐
                        .Cells(r, 3).Font.ColorIndex = 3            '←┘順番入れ替える
                    Case "01:00"
                        .Cells(r, 2).Font.Bold = True
                        .Cells(r, 3).Font.Bold = True               '↑と同様Copyメソッドを追加する。
                End Select
            Next r
        End With
    End Sub

 (白茶)


白茶さん…ありがとうございます!!できました。

すみません、あと1例、お教えいただけたらありがたいのですが・・・。

E列の1:00のデータは、1:00→24:00のAVERAGEのデータになっています。

この数式を生かしたまま・・・というマクロもご教授ください!!


 本当はmomoさんのコードでも出来ていたはず。
 あなたが
 >E列の1:00のデータは、1:00→24:00のAVERAGEのデータになっています。 
 という重要な事を書かないから出来ないのであって、回答者は2度も3度も手間が増える。
 VBAの前に質問の仕方とEXCELを学んだ方がいいですね。
 (トゥルーマン)

トゥルーマンさん、すみません。

2つのパターンがあったので、質問してみました。

momoさん、白茶さんご教授ありがとうございました。

そして、お手間をとらせて大変申し訳ありませんでした。

あとは自分で勉強してやってみます。


コメント返信:

[ 一覧(最新更新順) ]


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