-PR-
解決済み

Excelで色のついたセルの数を数えたい

  • 困ってます
  • 質問No.59571
  • 閲覧数1374
  • ありがとう数4
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 25% (1/4)

教えて下さい。お願いします。
3000件程のデータが入力されていて、セルの値の種類ごとに
セルの色で色分けされています。
これを、赤のセルは何件、青のセル何件、というふうに
関数を使用して集計するにはどうすればいいでしょうか。
色は全部で3種類と色がないもの、合計4種類です。
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.4
レベル11

ベストアンサー率 42% (91/216)

----------------色番号を調べる関数------------------------------------------
Function iroban(iro)
iroban = iro.Interior.ColorIndex
End Function
-------------------ここまで----------------------------------------

-------------------色数カウント関数---------------------------
Function irosuu(gyoutou, gyoumatu, iroban)
For i = gyoutou.Row To gyoumatu.Row
If Cells(i, gyoumatu.Column).Interior.ColorIndex = iroban Then irosuu = irosuu + 1
Next
End Function
--------------------ここまで---------------------------------------

■「色を調べる関数」で調べたい色のセルを指定(色がなしの場合は-4142になります)

■「色数カウント関数」はカウントする列の行頭と行末のセルを指定。
「色を調べる関数」を入力したセルを指定するか、色番号を入力。

再計算はしてくれないのでユーザー関数の数式バーで、一部分をクリックして、[Enter]キーを押す必要があります。(マクロにしておくと楽だと思います)
お礼コメント
yamachisa

お礼率 25% (1/4)

お答えありがとうございます。大変参考になりました。
これを元に集計作業ができるようになりました。
ありがとうございました。
投稿日時 - 2001-04-06 14:09:14
-PR-
-PR-

その他の回答 (全3件)

  • 回答No.3
レベル10

ベストアンサー率 63% (65/102)

こんにちは

>セルの値の種類ごとにセルの色で色分けされています。

とありますが、その色分けのルールで判定したほうが正確かつ早くないですか?


余計なアドバイスだったらすみません。

  • 回答No.1
レベル7

ベストアンサー率 33% (7/21)

エクセル上にコマンドボタンを配置してVBAを起動させます。
そのプロシージャに以下のようなプログラムを書けばできるのでは
ないかと思います。

Private Sub CommandButton1_Click()

Dim count1 As Long "色の数だけ宣言してください
Dim count2 As Long
Dim in_color As Long
Dim i As Long

count1 = 0
count2 = 0

Worksheets("Sheet1").Activate
Worksheets("Sheet1").Range("K3").Activate "始める位置を指定

For i = 0 To 253 "行数を指定
in_color = ActiveCell.Interior.ColorIndex
Select Case in_color "ColorIndexはヘルプで参照できます
Case 3         "3は赤です
count1 = count1 + 1"色の数だけSelect文を増やして下さい
Case Else
count2 = count2 + 1
End Select
ActiveCell.Offset(1, 0).Activate
Next

ActiveCell.Offset(1, 0).Activate
ActiveCell.Value = count1 "赤のセルの数を表示します
ActiveCell.Offset(0, 1).Activate
ActiveCell.Value = count2 "それ以外を表示します

End Sub
補足コメント
yamachisa

お礼率 25% (1/4)

お答えありがとうございます。
しかし、できることならば、ユーザー関数を設定して
セル上の値として表記したいのですが。
範囲と色の指定のできるユーザー関数です。
それと、色の指定のないセルもカウントしたいので
その場合はColorIndexでは指定できないので
どうしたらいいでしょうか。
全体から、色つきセルの合計を引けばいいんですが
できれば、その方法ではない方法でできないものかと・・。
お手数ですが、よろしければ教えて下さい。
投稿日時 - 2001-04-04 12:59:00
  • 回答No.2
レベル7

ベストアンサー率 33% (7/21)

あまり詳しくはないもので・・
>ユーザー関数を設定してセル上の値として表記したい
結果をセル上に出すだけでなく、関数もセル上に表記するということですか?
私が書いたものだとボタンと結果しかセルに出ませんね。
すみませんがわかりません。
範囲と色は引数として下記の関数になげれば良いと思います。
ちょっと改造が必要ですが・・
>色の指定のないセルもカウントしたいので


For i = 0 To 253 "行数を指定
in_color = ActiveCell.Interior.ColorIndex
Select Case in_color
Case 3
count1 = count1 + 1
Case 2


Case Else"Elseにはそれ以外(色に指定が無い)物が来ると思うんですがだめですかねー?
count2 = count2 + 1
End Select
Next
ActiveCell.Offset(0, 1).Value = count1"ちょっと変更しました
ActiveCell.Offset(0, 2).Value = count2
補足コメント
yamachisa

お礼率 25% (1/4)

お答えありがとうございます。
ちょっとやってみたのですが、上手く集計ができませんでした。
Worksheets("Sheet1").Range("K3").Activate '始める位置を指定
の「K3」というのは答えを表記したいセルの指定ですよね?
それと For i = 0 To 253 '行数を指定
は何の行数を指定するのでしょうか。すみません。VBAは初心者なので
よくわからないんです。
お答えいただいたプログラムをVBAで記載して、集計したい範囲を
ドラッグしてからコマンドボタンを押すと、「0」と「254」としか
(この場合、宣言している色は赤のみ)セルにでてきません。
もちろん、赤色のセルはいくつかあります。
私のやり方に問題があるのかもしれません。
それと、集計するデータの範囲とか、色とかがその都度違うのですが
その場合はVBのエディタでそれを変更することになりますよね。
となると、多少のVBの知識が必要となり、誰でもこれを使用できるわけでは
なくなってくるので、できれば、関数のマクロを組めればと思ったわけです。
もし、何か解決方法があるならばお手数ですが教えて下さい。
投稿日時 - 2001-04-05 10:30:01
このQ&Aのテーマ
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


専門家があなたの悩みに回答!

-PR-

ピックアップ

-PR-
ページ先頭へ