前提・実現したいこと
色付きセル(セル内には様々な文字が入力されている)を集計しています。
さらにその集計結果を他のカラムの内容ごとに振り分けなければいけません。
「状況」の列にはいろいろな文字が入っているので、信用できるのは色だけなのです。
お力を貸していただけると幸いです。
試したこと
「状況」の列がオレンジ且つ「部門」の列が集計した表の「部門」名と同じ
という条件の関数を作成すればいいのではないかと考えましたが、見当違いのようで結果は0件になってしまいました。
計算範囲:集計したい列(ここでは上の画像の「状況」の列)を選択
条件色セル:任意の色(ここではオレンジ)のセルを別に用意しておく
計算範囲2:集計したい列(ここでは上の画像の「部門」の列)を選択
条件セル:集計結果を振り分けるキーワード(ここでは下の画像の各部門セル)を選択
vba
1Function CountColor(計算範囲, 条件色セル, 計算範囲2, 条件セル) 2Application Volatile 3' 4CountColor = 0 5' 6For y = 1 To 計算範囲.Columns.Count 7 For x = 1 To 計算範囲.Rows.Count 8 If 計算範囲.Rows(x).Columns(y).Tnterior.ColorIndex = 条件色セル.Tnterior.ColorIndex Then 9 For i = 1 To 計算範囲2.Columns.Count 10 If 計算範囲2.Rows(x).Columns(i).Value = 条件セル.Value Then 11 CountColor = CountColor + 1 12 End If 13 Next i 14 End If 15 Next x 16Next y 17End Function
補足情報
Windows10のPCでExcel2016を使用しています。
『「状況」の列にはいろいろな文字が入っているので』ということは、現状のvalueだとほぼ合わないように思うので、正規表現(RegExp)を調べてもらうと良いかと思います。
とりあえず、Application Volatile を Application.Volatile にして、
Tnterior を Interior にして、
.ColorIndex を .Color に変えたらどうにかなりますかね。
mdj 様
ありがとうございます。
このようなオブジェクトがあったのですね。
初めて見ましたが、かなり使いやすそうです。
jinoji 様
ありがとうございます。
細かな記述のミスが……!
また、ColorIndexとColorについて調べてみたら、こんなに違いがあるのですね。
これからはColorの方を使用するようにします。
回答1件
あなたの回答
tips
プレビュー