条件付き書式を利用したガントチャート生成エクセルを組んでおります。
タスク、開始日、締め切りを入力すると、カレンダーのセルに色がついてガントチャートになるというアイデアです。
このうち、タスクがいくつ平行しているかを数値化したく、下記画像の青枠のように、その日の列を参照し、色つきのセルの数をカウントする関数またはVBAを組みたいと思っております。
(下記の画像は単に手打ちで数字をいれているだけです)
セルに手動で色をつけている場合は下記のようなVBAでセルの数をカウントできますが、これを条件付き書式で実現するにはどうすればよろしいでしょうか。
https://nako-itnote.com/excel-color-count/#STEP3
どうぞよろしくお願いいたします。
参考までに、条件付き書式自体は下記のようなマクロを使用しています。
VBA
1Sub 条件付き書式のセット() 2 3 Dim Con 4 '条件付き書式を削除 5 Range("範囲_ガントチャート").FormatConditions.Delete 6 '締め切り1 7 Set Con = Range("範囲_カレンダー").FormatConditions.Add(Type:=xlExpression, Formula1:="=AND($G4>=K$2,$G4<L$2)") 8 '緑 9 Con.Interior.ColorIndex = 12 10 Con.StopIfTrue = False 11 '作業期間 12 Set Con = Range("範囲_カレンダー").FormatConditions.Add(Type:=xlExpression, Formula1:="=AND(タスク_開始<=K$2,タスク_終了>=K$2)") 13 '黄緑 14 Con.Interior.ColorIndex = 35 15 Con.StopIfTrue = False 16 17End Sub
回答1(ありがとうございます)をうけまして、下記のようか関数を定義してみましたが、
エラーが返ってきてしまいます。
条件付き書式が設定されており、かつ色がついているセルをカウントするという設定にしていますが、
If c.DisplayFormat.Interior.ColorIndex <> xlNone Then
の行がうまく効かないようです。何がいけないのでしょうか。。。
VBA
1Function CountColorA(Rng As Range) As Long 2 Dim c As Range 3 Dim cnt As Long 4 Application.Volatile 5 Col_cnt = 0 6 For Each c In Rng 7 If c.FormatConditions.Count > 0 Then 8 If c.DisplayFormat.Interior.ColorIndex <> xlNone Then 9 cnt = cnt + 1 10 End If 11 End If 12 Next c 13 CountColorA = cnt 14End Function
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。