- ベストアンサー
Excel2007でカウントしたいのですが
Excel2007でカウントしたいですがご協力お願い致します。 今ところはセルU6~U4363にデータが入ってますが、それ以上にデータは増えていきます。 幾つか背景カラー(ミドリ)が入ってるセルがありまして、U列の6行目から下のカラーセルの合計個数をセルU4に表したいです。 どなたかご協力お願い致します。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
先ほどのコードにはちょっと間違いがあったので、 VBAの画像を加え再ポストします。 =CntColor(U6:U20000,V3) =SumColor(U6:U20000,V4) ↑が計算式例 ↓がコードです。 Option Explicit '//--------------指定色のセルを数える Function CntColor(TargetRange As Range, BaseColorCell As Range) As Integer Dim wkCounter As Integer Dim wkRange As Range wkCounter = 0 For Each wkRange In TargetRange If wkRange.Interior.ColorIndex = BaseColorCell.Interior.ColorIndex Then wkCounter = wkCounter + 1 End If Next wkRange CntColor = wkCounter End Function '//--------------指定色のセルの値を合計する Function SumColor(TargetRange As Range, BaseColorCell As Range) As Double Dim wkCounter As Double Dim wkRange As Range wkCounter = 0 For Each wkRange In TargetRange If wkRange.Interior.ColorIndex = BaseColorCell.Interior.ColorIndex Then wkCounter = wkCounter + wkRange.Value End If Next wkRange SumColor = wkCounter End Function
その他の回答 (4)
- HohoPapa
- ベストアンサー率65% (455/693)
>先述のソースはSubとかは必要になりますか? セルの中で使う計算式をVBAで用意したものなので subは登場しません
- HohoPapa
- ベストアンサー率65% (455/693)
手前みそですが、過去に似た質問がありコードを紹介しました。 よかったら参考にしてみてください。 https://okwave.jp/qa/q9479525/a26449484.html それぞれ、関数で色を指定するのではなく、 引数に「既に色の染まったセル」を指定するのがミソです。 ■指定した色の染まったセルの数を求める関数 Function CntColor(TargetRange As Range, BaseColorCell As Range) As Integer Dim wkCounter As Integer Dim wkRange As Range wkCounter = 0 For Each wkRange In TargetRange If wkRange.Interior.ColorIndex = BaseColorCell.Interior.ColorIndex Then wkCounter = wkCounter + 1 End If Next wkRange SumColor = wkCounter End Function ■指定した色の染まったセルの値の合計を求める関数 Function SumColor(TargetRange As Range, BaseColorCell As Range) As Double Dim wkCounter As Double Dim wkRange As Range wkCounter = 0 For Each wkRange In TargetRange If wkRange.Interior.ColorIndex = BaseColorCell.Interior.ColorIndex Then wkCounter = wkCounter + wkRange.Value End If Next wkRange SumColor = wkCounter End Function
お礼
HohoPapaさんご返答ありがとうございます。 先述のソースはSubとかは必要になりますか?
- imogasi
- ベストアンサー率27% (4737/17069)
Excelのワークシート関数(普通に言う関数)では、色(文字色やセルの背景色など)は判別できない。このことを知らない人がなんと多いことか。 ーー 質問で言う「カウント」は、件数のことでなく、セルの値の、合計数と解釈した。 ーー そこで、これができるVBAの出番になる。 標準モジュールに ユーザー関数のコードを Function sm(a As Range, clr) s = 0 Dim cl As Range For Each cl In a 'MsgBox cl.Interior.ColorIndex If cl.Interior.ColorIndex = clr Then s = s + cl End If Next sm = s End Function と作って ーー シートの結果を出したいセルに =SM(A1:A10,6) と入れると(6は黄色の色コードです) 例データ のセル範囲がA1:A10で 空白 2 <-背景色黄色 4 5 3 6 <-背景色黄色 7 8 9 <-背景色黄色 11 <-背景色黄色 の場合、結果は 28 となる。 ーー しかし問題があって、「背景カラー」の設定にはいろいろなやり方があって、 この設定したときのことと、VBAが分かっていないと使えない。 やる気があれば、Googleで「vba セルの背景色を設定」で照会し、調べて、勉強するしかない。 例えば http://officetanaka.net/excel/vba/cell/cell05.htm の 「背景色(塗りつぶし色)を設定するには」 で、今回は裏の、「背景色(塗りつぶし色)を取得」に当たることを行う。 色(別は)にはコードが振られているので、その色の仕組み(体系、または定義された名前、(例 黄色ならvbYellow)を探し当てないと話にならない。 他に https://www.tipsfound.com/vba/07006 当初、どのようにして、VBA的に言って、セルに色を振ったかを知らないと 話が進まない。
お礼
説明って難しいですね。ありがとうございます。imogasiさん。
- N5200model05
- ベストアンサー率39% (100/255)
まずはこのへんをご参考に https://okwave.jp/qa/q2000523.html
お礼
ありがとうございました。
お礼
ありがとうございました。