
いつもお世話になります。
エクセル2002を使用していますが、特定の色が付いたセルの個数を数えたいのです。
同時に「色が付いてあるセルを数える」に加えて、「色を付けたら直後、そのセルの個数が数えられる」ようにしたいのです。
「色が付いたセルの引数を数える」というのは分かるのですが、「セルだけの合計」となると分かりません…。
以前にも質問しましたが、結局分からず終いでしたので、改めてお願い致します。
例題)A1~G1を赤で色付けした時に、赤色の付いたセルの個数をA2に出す。
理想とする結果) A2に赤色のセルの合計「7」が出た。
No.2ベストアンサー
- 回答日時:
ユーザー定義関数による方法です。
一般の関数のような使い方で、指定した色のセル数をカウント出来ます。
色を変更し、<Enter>等で他のセルに移動した時点で再計算します。
書式: CCount(範囲,色番号(カラーインデックス))
使用例 : CCount(A1:A100,3) A1:A100範囲の赤色をカウント
(赤=3 ですが、他の色の番号を知るには、後述の GetIndx関数で調べられます。)
これで良かったら、詳しく操作手順を書きますので、新しいブックでテストして
みてください。
VBAコード設定方法
1.Alt + F11 で VBE(Visual Basic Editor)を開きます。
2.VBE のメニューから[挿入] -->[標準モジュール] を指定します。
3.モジュールウィンドウに下記コードをコピーして貼り付けます。
4.Alt + Q (または、右上隅の×)でウィンドウを閉じ、シートに戻ります。
5.メニューから[ツール]-->[マクロ]-->[セキュリティ]で「セキュリティレベル」を
「中」にして[OK]します。
Function CCount(Rng As Range, idx)
Dim R As Range
Dim Cnt As Long
Application.Volatile
For Each R In Rng
If R.Interior.ColorIndex = idx Then Cnt = Cnt + 1
Next R
CCount = Cnt
End Function
Function GetIndx(Rng As Range)
If Rng.Count > 1 Then
GetIndx = vbNullString
Exit Function
End If
GetIndx = Rng.Interior.ColorIndex
End Function
'---------------------------------------
◎ 各色のカラーインデックスを調べる関数(付録)
コード後半は、GetIndx関数は、カラーインデックス番号を調べる関数です。
必要なときに使ってみてください。
使い方例: A1をインデックス番号を調べたい色で塗り潰します。
例えば、セルA1を任意の色で塗り潰し、B1に
=GetIndx(A1) を入力するとそのカラーインデックス番号が表示されます。
----------------------------------------
※ CCount関数を自動再計算に対応させる設定
色を変更しただけでは、再計算されませんので Enter等でセルを移動した時点
で、再計算されるようにします。(シートモジュールに記述)
【 操作手順 】
・この関数を使用しているシートのシート名タブを右クリックして「コードの表示」を
指定します。
・開いたコードウィンドウに下記コードをコピーして貼り付けます。
・Alt+ Q (または、右上隅の×)でウィンドウを閉じ、シートに戻ります。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Calculate
End Sub
この回答への補足
お世話になります。
教えて頂いたとおりに行ないました所、完璧に出来ました!!凄いです!!
この数ヶ月、満足が得られない結果のまま過ごしてきましたが、今回の回答は本当に満足のいくものであり、大変、感謝しております。
誠にありがとうございました!!
No.5
- 回答日時:
お返事、有難うございます。
教えて頂いたURLを参照しました。
今回の質問には大きく役立ちそうではありませんでしたが、エクセルの色々な手段が載っていて面白かったです。
No.4
- 回答日時:
(1.セルに色を付ける基準)
(1)条件付き書式などで、セルの値(数値や文字列)で
色をつけている場合は、その値を使って、COUNTIF
、SUMIFやSUMPRODUCTその他の関数で
件数や合計が出せる場合があります。
(2)そうではなくて、人間の総合的な判断でセルに色を付ける場合は、関数式で判別しようがないので、関数式では不可能です。
(3)関数式では、もともとセルの色や書式を設定出来ないのがエクセルの基本原則です。
(2.即時性)>色を付けたら直後、・・・
(1)関数では、値を変えると、基本は即時に再計算され、結果が更新されます。しかし、上記1で述べたように
関数でセル色を捉えることが出来ない(旧いバージョン
での出来る回答があるかもしれないが)ので、これも難しい。
(2)VBAでやればセル色の判断や合計、件数カウントは出来るが、セル書式の変化を捉える「イベント」がエクセルに設けられていないので、1.(1)以外では難しい
と思います。
(3)そういう合計、件数カウントの計数を欲しい時に
ボタンクリックなどの「イベント」をあたえる、労を我慢するならば、VBAで小数行のコードで可能です。
Private Sub CommandButton1_Click()
Dim cl As Range
t = 0
c = InputBox("赤=3,緑=4、黄=6,ブルー=8")
For Each cl In Range("A1:G5")
If cl.Interior.ColorIndex = Val(c) Then
t = t + cl
End If
Next
Range("A6") = t
End Sub
(1)シート上にコマンドボタンを1つ貼りつけ、ダブルクリックして出てくるVBE画面に、上記を貼りつけてください。
(2)対象セル範囲は Range("A1:G5")を適当に変えること。
(3)計数をセットするセルはRange("A6") を適当に変えること。
(4)InputBox("赤=3,緑=4、黄=6,ブルー=8")
はColorIndexを調べて、適当に増やしてください。
ColorIndexは
Sub test02()
For i = 1 To 50
Cells(i, "A").Interior.ColorIndex = i
Next i
End Sub
を実行して、どんな色かシート上で見てください。
(5)セル数ならt = t + clをt = t + 1に変えてください。
(6)実行はシートのボタンをクリックすると実行されます。
お返事、有難うございます。
色々な方からのご回答を頂き、大変、感謝しています。
私のレベルでは相当困難な課題だと認識してはいるのですが、どうしても「数えたい」のです。
とりあえず、教えて頂いた方法も試してみたいと思います。(正直なところ、レベルが高く、回答の内容を理解するにも一苦労です)
No.3
- 回答日時:
エクセルでカラー属性の判定はできません。
私は37年間情報処理会社におりましたが、定年を迎えるまでついに「できます」という話を聞けませんでした。
また、VB等でセル背景色の識別をするときは色を数字で指示する必要があります。例えば#FF0000であれば赤、#00FF00であれば緑、#0000FFであれば青…といった知識がないとあつかえません。老婆心ながらVBでおやりになることを想定して、赤色コード(#FF0000)を例示しておきました。
お返事、有難うございます。
他の方から教えて頂いた方法で試してみたいと思います。
それにしても「セルの色を数える」…単純そうに思えるのですが、シンプルなものほど難しいのでしょうか…。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 条件に合った数値の合計を表示させたい関数と条件指定の方法 3 2023/05/13 16:07
- Excel(エクセル) 条件付き書式の色付きセルのカウント方法について 2 2022/10/21 14:51
- Excel(エクセル) エクセル関数の質問 5 2022/04/20 09:46
- Excel(エクセル) セルに特定の色が出た時だけ、式を発動させたい 4 2022/06/17 10:32
- Excel(エクセル) エクセルの条件付き書式で*を使いたい 4 2022/05/13 16:49
- Visual Basic(VBA) 昨日、質問した件『VBA にて、条件付き書式で背景色を設定しているセルの範囲で、背景色付きのセルをカ 4 2022/04/07 14:39
- 会計ソフト・業務用ソフト エクセル 背景色のついたセル位置を参考にして固定の数値を取得する 4 2022/07/11 08:44
- Excel(エクセル) Excel2019 列と列(2列)の数値の重複を調べたい 1 2023/05/11 13:35
- その他(Microsoft Office) Excel2003,2007の作業です 2 2023/05/17 09:58
- Excel(エクセル) 現時点の年齢を算出して、その年齢と一致したセルを色付けしたい。 4 2022/06/23 17:49
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vba テキストボックスとリフト...
-
枠に収まらない文字を非表示に...
-
(Excel)数字記入セルの数値の後...
-
エクセルで指定したセルのどれ...
-
excelの特定のセルの隣のセル指...
-
貼り付けで複数セルに貼り付けたい
-
対象セル内(複数)が埋まった...
-
Excel 例A(1+9) のように番地の...
-
Excelで数式内の文字色を一部だ...
-
EXCEL VBA セルに既に入...
-
エクセル オートフィルタで絞...
-
エクセルの一つのセルに複数の...
-
数式を残したまま、別のセルに...
-
Excelでのコメント表示位置
-
セルをクリック⇒そのセルに入力...
-
エクセルVBA、ファイル名をセル...
-
【エクセル】IF関数 Aまたは...
-
EXCELのセルの中の半角カンマの...
-
エクセルの書式設定の表示形式...
-
エクセルで、複数の参照範囲を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで指定したセルのどれ...
-
貼り付けで複数セルに貼り付けたい
-
excelの特定のセルの隣のセル指...
-
枠に収まらない文字を非表示に...
-
エクセルの書式設定の表示形式...
-
数式を残したまま、別のセルに...
-
【エクセル】IF関数 Aまたは...
-
セルをクリック⇒そのセルに入力...
-
(Excel)数字記入セルの数値の後...
-
Excelで、「特定のセル」に入力...
-
Excel 例A(1+9) のように番地の...
-
対象セル内(複数)が埋まった...
-
EXCEL VBA セルに既に入...
-
エクセルの一つのセルに複数の...
-
【Excel】 セルの色での判断は...
-
Excelで数式内の文字色を一部だ...
-
エクセルのセルの枠を超えて文...
-
エクセル オートフィルタで絞...
-
Excelでのコメント表示位置
-
連続しないセルから最小値を引...
おすすめ情報