VBAで「日付と曜日」使って集計表示する

目安時間:約 5分

今回は、日付から曜日を求めて「売上合計」「日数」「平均売上」を集計する
【課題】
売上合計が多い順に背景色を設定
売上合計1位背景色 → 赤
売上合計2位背景色 → 緑
売上合計3位背景色 → 水色
G2〜I8に「売上合計」「日数」「平均売上」を設定する

【VBA】

Sub weekdate()
    Dim i As Long
    Dim lp As Long
    Dim intW As Integer
    Range("G2:I8").ClearContents
    For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
        intW = Weekday(DateSerial(Cells(i, 1), Cells(i, 2), Cells(i, 3)), vbMonday)
        Cells(intW + 1, 7) = Cells(intW + 1, 7) + Cells(i, 4)
        Cells(intW + 1, 8) = Cells(intW + 1, 8) + 1
    Next
    For i = 1 To 7
        Cells(i + 1, 9) = Cells(i + 1, 7) / Cells(i + 1, 8)
    Next
    Set rng_jp = Range("G2:G8")
    lp = 2
    For Each Rng In rng_jp
        rk = WorksheetFunction.Rank(Rng.Value, rng_jp)
        Select Case rk
            Case 1
                Cells(lp, 7).Interior.Color = vbRed
            Case 2
                Cells(lp, 7).Interior.Color = vbGreen
            Case 3
                Cells(lp, 7).Interior.Color = vbCyan
        End Select
        lp = lp + 1
    Next
End Sub


簡単な説明
・「Range("G2:I8").ClearContents」では、セル範囲の値をクリアをする
・「Cells(Rows.Count, 1).End(xlUp).Row」は以前説明をしたのでこちらを御覧ください
・「DateSerial(year,month,day)」は、3つの引数で指定された日付を意味するシリアル値を返す
ー 引数yearは、年を表す0〜9999の範囲の数値または数式を指定します。
ー 引数monthは、月を表す1〜12の範囲の数値または数式を指定します。
ー 引数dayは、日を表す1〜31の範囲の数値または数式を指定します。
ー ※ 引数yearに0〜29を指定すると、2000年〜2029年と読み替えられます。
ー また、30〜99を指定すると、1939年〜1999年と読み替えられます。
・「Weekday(シリアル値,種類)」は、シリアル値から曜日に対応する数値を求める。
・「vbMonday」は、「DateSerial(Cells(i, 1), Cells(i, 2), Cells(i, 3))」で指定した日付が何曜日かを返す。
・「Cells(i + 1, 9) = Cells(i + 1, 7) / Cells(i + 1, 8)」は平均売上を算出する。
・「Set rng_jp = Range("G2:G8")」は、Setを使ってRange型変数に代入する。
・「WorksheetFunction.Rank(Rng.Value, rng_jp)」は、指定された範囲の中で数値の高い順位を返します。
・「Select Case rk」は、1〜3位の背景色を設定する。

あなたのお役に立てるなら、コピーして使用してください。

今後も勉強した内容を記載して行きますので、お役に立てるものがあれば使ってください。

VBA開発もしておりますので開発のご要望があればご連絡をください。

VBA開発依頼受付はこちらから

この記事に関連する記事一覧

コメントフォーム

名前

メールアドレス

URL

コメント

CAPTCHA


トラックバックURL: 
プロフィール

50歳、派遣社員。いつもいつも派遣切りにビクビクしながら生きています。50歳という大台を迎えると派遣先がほとんどなく、次の派遣先は無いに等しい。でも、家庭を支えなければならない。だから私は、複数の仕事が出来るように在宅ワークが出来るプログラミング、ブログを選択。50歳からフリーランスを目指してプログラミング、ブログを始めました。

私と一緒に始めませんか?

お問い合わせ
プログラミング依頼

 

最近の投稿
アーカイブ

ページの先頭へ