エクセルの関数で、CELLの色パターンを数えたりできるのでしょうか。例.セルのパターンが赤色のものをカウントするなど。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

#1さんの方法が本道だと思いますが、


「なぜ、そのセルを赤にしたのか?」を判定条件にしたらCOUNTIF関数等でもカウントできませんか?
    • good
    • 9
この回答へのお礼

おお!!確かに。灯台下暗し?でした。早速やってみます!

お礼日時:2005/02/19 14:45

すみません、自分で補足するのも変なんですが、#3、


#4の回答文は、ブラウザの環境によって文字の桁が
ずれてしまうようです。
 (注釈の矢印が意図しないところを指している)

 もし可能なら文章をテキストエディタにコピーして
等幅フォントで表示していただけると、もっと分かり
易くなると思います。
    • good
    • 1

  ★隠れ関数?「ゲットセル」の続きです。



 色つきセル(指定した書式のセル)だけを計算する方法の別解。
 (計算式に名前を付けて「 ="付けた式の名前"」で計算する)

1 色を判定する式を登録する

 (1) 「挿入」→「名前」→「定義」と進み「名前の定義」画面の
   「参照範囲」欄に…、
   「=GET.CELL(判定の種類を指定する番号,判定したいセル番地)
   を記述します。

     ※判定の種類を指定する番号の一例
                     太字か否か?:20
                     フォントの色:24
                     塗りつぶし色:63

   例   A     B
    1 赤い○ (この列で判定)←ここに判定式を書きたい場合
    2 青い○         参照範囲欄の式は
    3 黄色○         「=GET.CELL(24,A1)」
                        ↑
         ※「24」なのは、フォントの色を判定したいから
          第2引数のセル番地は後で相対参照してくれる

 (2) 「名前」欄に計算式の名前(任意だが判り易く)を入力して
   「追加」→「OK」で「名前の定義」画面を閉じます。
    例えば式「=GET.CELL(24,A1)」の名前を "フォントの色" に

2 判定結果を表示したいセルに、「 =任意に定義した式の名前」を
 記述します。

   例   A     B
    1 赤い○ フォントの色 ←判定結果は「3」と表示
    2 青い○ フォントの色 ←判定結果は「5」と表示
    3 黒い○ フォントの色 ←判定結果は「0」と表示

3 判定結果のセルを、SUMIF や COUNTIF関数等で活用、計算する。

   例   A     B
    1 赤い○ フォントの色 ←表示は「3」
    2 青い○ フォントの色 ←表示は「5」
    3 黒い○ フォントの色 ←表示は「0」
    4   (標準カラーパレットのインデックス番号を参照)
    5 =COUNTIF(B1:B3,3,A1:A3) ←A1~A3の範囲で赤い
    6              フォントのデータのある
    7              セルだけカウント
    8 =SUMIF(B1:B3,5,A1:A3) ←データが数値である場合
                   青いフォントのセルだけ
                   合計


 …以上です。自分でも何を言っているのか判らなくなるほど文章で
説明するのは難しいんですが、実際の操作は意外と簡単なのです。
 まぁ、トライ・アンド・エラーということで…。(^^;

※蛇足的な注意
  後から書式変更しても結果が自動更新されないので、NOW 関数を
 組み込んで、適宜「F9」キーで更新させると良いでしょう。
  例:「=GET.CELL(**,**)+NOW()*0」
              ↑(0を掛ければ結果に影響しない)
    • good
    • 1

 #1さんの回答にあるユーザー定義関数で第2引数に指定している


色番号とは、恐らく下記のことだと思います。

  ☆ブックの標準カラーパレットのインデックス番号
   (VBエディタのヘルプにて「ColorIndex」を検索して参照)

  1    2 白   3 赤   4 黄(薄)緑 5 青
  6 黄   7 桃色  8 水色  9 茶色   10 緑
  11 紺    (濃い緑)

以下 ~ 56 までありました。


>といっても、VBAはさっぱりなんですが・・・。

 オイラもよく分かりませんが、VBA を使ったユーザー定義関数なら
他にもいろいろ工夫された方がいるようです。以前オイラが教わった
マクロの例を紹介しておきましょう。


例その1

(1)[ツール]-[マクロ]-[VisualBasicEditor](又は Altキー+F11)
 で、VBE 画面にします。

(2)VBE画面上で[挿入]-[標準モジュール]を選択します。
 するとコードウィンドウが出ますので、以下のコードを記します。
(コピー&ペーストでも可)

 ---------------------------- 以下 ------------------------
 Function SpecialCell(targetRange As Range) As Integer
 Dim myCell As Range

 For Each myCell In targetRange
If myCell.Font.Color = vbRed _
Or myCell.Interior.Color = vbYellow Then
SpecialCell = SpecialCell + 1
End If
 Next
 End Function
 ------------------------- 以上終わり ---------------------

(3)元のワークシートに戻って、適当なセルに
 =SpecialCell(A1:E5)
などと、通常の関数の要領で、調べたい範囲を引数(例ではA1:E5)で
指定して、Enterキーを押せば答えが出るでしょう。


例その2

 次のユーザー定義関数で各色に対応できるハズです。

 ---------------------------- 以下 ------------------------
Function SpecialCell(targetRange As Range, _
intColor As Integer) As Integer
'赤は3,緑は4,青は5,黄は6
Dim myCell As Range

For Each myCell In targetRange
If myCell.Font.ColorIndex = intColor _
Or myCell.Interior.ColorIndex = intColor Then
SpecialCell = SpecialCell + 1
End If
Next
End Function
 ------------------------- 以上終わり ---------------------

赤をカウントする式は =SpecialCell(A1:E5,3)
青をカウントする式は =SpecialCell(A1:E5,5)
黄をカウントする式は =SpecialCell(A1:E5,6)

 ただし、フォント色が黄でセル色が青などというのは、どちらにも
カウントされてしまいます。


例その3

 ---------------------------- 以下 ------------------------
Function ColoredCell(rngArg As Range, rngSample As Range) As Long
For Each c In rngArg
If c.Interior.ColorIndex = rngSample.Interior.ColorIndex Then
ColoredCell = ColoredCell + 1
End If
Next
End Function
 ------------------------- 以上終わり ---------------------

 使う際には、=ColoredCell(A1:A10,A5) のように、第1引数は調べ
たい範囲を、第2引数には指定する色の(サンプル)セルを当てます。


 オイラが先人に教わった方法は以上ですが、見よう見まねのオイラ
でも、コードの貼り付けで何とか結果を確認することができました。

 ただし、これらマクロを使って作成したブックは、エクセルの環境
設定(メニュー「ツール」→「マクロ」→「セキュリティ」)により
「セキュリティレベル」を「高」にしていると、ブックをうまく開け
なかったり、「中」にしている場合はユーザー側の判断を求める警告
メッセージが出たりします。

 念のために元に戻す方法を書いておくことにします。

 ★マクロを解除する方法

1 ツール → マクロ → Visual Basic Editor を開きます

2 画面左上のプロジェクトの欄に VBAProject があり、その配下に
 モジュールがあります。
  そのモジュール配下に作成したときのマクロの名前あるはず。

3 そのモジュール配下にあるマクロの名前ところで右クリック。

4 メニューがでて、「モジュールの名前」+の削除があります。
 もしくは「モジュールの開放」が出たら、それをクリックしてみま
 しょう。

5 エクスポートしますか?と訊いてきたら「いいえ」をクリック。

6 Excelに戻り、上書き保存して終了。
  再度Excelファイルを呼び出すと、警告・確認メッセージは
 もう出てこなくなるはずです。


 このセキュリティに関する制約がうっとうしい場合はマクロを使わ
ない方法も、あることはあります。
 しかし、文章のみで説明するのはかなり難しい上に、何より字数が
尽きたようです。

 ★隠れ関数?
  「=GET.CELL(検査の種類を指定する番号,検査したいセル番地)」
    • good
    • 1

ユーザー定義関数を使えばできます。



VBAで標準モジュールにこのようなプログラムを書いておきます。
あとは、ワークシート上で =COUNTCOLOR(範囲, 色番号) の形で式を入れれば、範囲内である色番号で塗られたセルの数を表示します。
※色番号と色の対応は、パレットの設定を変えると変化します。

Function COUNTCOLOR(ByRef 範囲 As Range, ByVal 色 As Integer) As Long
Dim 個数 As Long
Dim セル As Range
Application.Volatile
個数 = 0
For Each セル In 範囲
If セル.Interior.ColorIndex = 色 Then
個数 = 個数 + 1
End If
Next
COUNTCOLOR = 個数
End Function
    • good
    • 3
この回答へのお礼

なるほどVBAを使うんですね。といっても、VBAはさっぱりなんですが・・・。とにかくトライしてみます。ありがとうございました。

お礼日時:2005/02/19 14:43

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q【Excel】 色の一致するセル数をカウントしたい。

こんにちは。

ある条件にあてはまるセルに、書式でセルの色を設定してあります。
いくつかの条件で色分けしてあるのですが、これらのセルの色が「赤」は幾つ、「青」は幾つというふうに、
カウントすることは出来るのでしょうか。

よろしくお願いいたします。

Aベストアンサー

繰り返し何度も出てくる質問です。関数でと考えているなら、直接はできません。
VBAで中身たった1行のユーザー関数を作ればできます。
http://hp.vector.co.jp/authors/VA016119/hajimete/udf1.html
など
Googleで「エクセル セル 色 カウント」などで照会すると似た質問が出る。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1225959
にはCELL関数のことも載っているが、旧いバージョンの関数なので
私は、除外して言ってます。

Qエクセル・・色の着いたセルの個数を数える関数はある?

エクセルの表内で塗りつぶしされているセルだけを数える様な関数はありますか?
セルには文字や数値は入力されておらず、塗りつぶしているだけです。
よろしくお願いいたします。

Aベストアンサー

こんにちは。

ユーザー定義関数で作ってみました。Ver4 マクロ関数で十分だと私は思いますが、Ver 4 マクロ関数ではケシカランというような方?は、以下のようなVBAでの解決方法が便利かなって思います。

VB Editor の標準モジュールに貼り付けてください。(挿入-標準モジュール)

なお、一般のブックの標準モジュールのユーザー定義関数に、Public キーワードをつけたところで、グローバル関数になるわけではありませんので、もしその点に不安のある方は、マニュアル等で、確認されたほうがよいかもしれませんね。

なお、以下は、引数のインデックスに0を入れると、配列出力するようにしてあります。

'------------------------------------
Function ColorCellCount(範囲 As Range, Optional インデックス As Integer = 1, Optional パターン As Integer = 0)
  Dim myRng As Range
  Dim myIndex As Integer
  Dim myPattern As Integer
  Dim myColor() As Integer
  Dim Ret() As Double
  Dim c As Range
  Dim i As Long
  Dim j As Long
  Set myRng = 範囲
  myIndex = インデックス
  myPattern = パターン
For Each c In myRng
   On Error Resume Next
   If myPattern = 0 Then
     i = WorksheetFunction.Match(c.Interior.ColorIndex, myColor, 0)
   Else
     i = WorksheetFunction.Match(c.Font.ColorIndex, myColor, 0)
   End If
   If i = 0 Then
     ReDim Preserve myColor(j)
     ReDim Preserve Ret(j)
      If myPattern = 0 Then
       myColor(j) = c.Interior.ColorIndex
      Else
       myColor(j) = c.Font.ColorIndex
      End If
      Ret(j) = 1
     j = j + 1
     On Error GoTo 0
     Else
      Ret(i - 1) = Ret(i - 1) + 1
   End If
  Next
  If myIndex <= 0 Then
   ColorCellCount = Ret()
  ElseIf myIndex > UBound(Ret) + 1 Then
   ColorCellCount = Ret(UBound(Ret()))
   Else
   ColorCellCount = Ret(myIndex - 1)
  End If
  Set myRng = Nothing
End Function

ワークシート上での使い方は、

A列
色付き
色なし
色なし
色付き
色付き

=ColorCellCount(A1:A5, 1 )

とすれば、上から数えて、1番目の色のセルの数が出ます。

=ColorCellCount(A1:A5, 2 )
を入れれば、色なしのセルの数が出ます。

=SUMPRODUCT(ColorCellCount(A1:A5, 0 ))

とすれば、全部の合計が出ます。

なお、
=ColorCellCount(A1:A5,1,1)

とすれば、文字の色を数えます。

こんにちは。

ユーザー定義関数で作ってみました。Ver4 マクロ関数で十分だと私は思いますが、Ver 4 マクロ関数ではケシカランというような方?は、以下のようなVBAでの解決方法が便利かなって思います。

VB Editor の標準モジュールに貼り付けてください。(挿入-標準モジュール)

なお、一般のブックの標準モジュールのユーザー定義関数に、Public キーワードをつけたところで、グローバル関数になるわけではありませんので、もしその点に不安のある方は、マニュアル等で、確認されたほうがよいかもし...続きを読む

Qエクセルで網掛けをしたセルをカウントしたいのですが。

エクセルで,カレンダーを作成しています。
1 12ヶ月の月曜日(他の曜日も)の中で,勤務日が何日あるかカウントしたいのですが,うまくいきません。そこで,網掛け(または色つけ)したセルの数をカウントしたいのですが,どんな方法がありますか?
2 また,このような目的で,他にいい方法があったら教えてください。

Aベストアンサー

通常の関数では出来ないと思います。
こちら↓を参考にどうぞ。

はじめてのユーザー定義関数 - 色のついたセルを合計
http://hp.vector.co.jp/authors/VA016119/hajimete/udf1.html

(EXCEL)CELLの色をカウントする。
http://oshiete1.goo.ne.jp/qa1225959.html

Q背景色のカウント方法

いつもお世話になります。
Win7 Excell2010 です。

背景色のついたセルを関数でカウントしたく色々と調べました。
マクロでは知識不足の私なのでなんとか関数でと思ったのですができないようです。
何かいい方法で関数ではやはり無理でしよう

カウントするには関数か若しくはVBAでご指導仰ぎたいです。
私としては申し訳ないですが知識がなく是非ご協力いただけないでしょうか。

お願いは、例えば
B7 ~ B17 で “青色” B125=1
C7 ~ C17 で “青色” C125=2
D7 ~ D17 で “赤色” D125=1
 のようにカウントができればいいです。

よろしくお願いします。

Aベストアンサー

こんばんは!

7~17行目の色付けは手作業でしょうか?それとも条件付き書式によって色付けされているのでしょうか?
Excel2010以降であれば、
条件付き書式で色付けされているセルが判断できる「DisplayFormatオブジェクト」が使えます。

一例です。
A列の124行目以降のセルを検索したい色にあらかじめ塗りつぶしておいてください。

Sheetモジュールです。
尚、1行目は何らかのデータが入っているという前提です。
(A列の最終行を取得するために、ダミーでもよいので1行目に何らかのデータが必要です)

まず、手作業で色を付けている場合のコードです

Sub 条件付き書式なし()
Dim i As Long, j As Long, k As Long, endRow As Long, endCol As Long
endRow = ActiveSheet.UsedRange.Rows.Count
endCol = Cells(5, Columns.Count).End(xlToLeft).Column
If endRow > 123 Then
Range(Cells(124, "B"), Cells(endRow, endCol)).ClearContents
End If
For j = 2 To endCol
For i = 124 To endRow
For k = 7 To 17
If Cells(k, j).Interior.Color = Cells(i, "A").Interior.Color Then
Cells(i, j) = Cells(i, j) + 1
End If
Next k
Next i
Next j
Range(Cells(124, "B"), Cells(endRow, endCol)).SpecialCells(xlCellTypeBlanks) = 0
End Sub

次に条件付き書式によってセルが色付けされている場合のコードです。
(内容はほとんど一緒です)

Sub 条件付き書式で色付け()
Dim i As Long, j As Long, k As Long, endRow As Long, endCol As Long
endRow = ActiveSheet.UsedRange.Rows.Count
endCol = Cells(5, Columns.Count).End(xlToLeft).Column
If endRow > 123 Then
Range(Cells(124, "B"), Cells(endRow, endCol)).ClearContents
End If
For j = 2 To endCol
For i = 124 To endRow
For k = 7 To 17
If Cells(k, j).DisplayFormat.Interior.Color = Cells(i, "A").Interior.Color Then
Cells(i, j) = Cells(i, j) + 1
End If
Next k
Next i
Next j
Range(Cells(124, "B"), Cells(endRow, endCol)).SpecialCells(xlCellTypeBlanks) = 0
End Sub

※ 空白セルには「0」を表示するようにしていますが、「0」が目障りであれば
最後の
>Range(Cells(124, "B"), Cells(endRow, endCol)).SpecialCells(xlCellTypeBlanks) = 0
の1行を削除してください。m(_ _)m

こんばんは!

7~17行目の色付けは手作業でしょうか?それとも条件付き書式によって色付けされているのでしょうか?
Excel2010以降であれば、
条件付き書式で色付けされているセルが判断できる「DisplayFormatオブジェクト」が使えます。

一例です。
A列の124行目以降のセルを検索したい色にあらかじめ塗りつぶしておいてください。

Sheetモジュールです。
尚、1行目は何らかのデータが入っているという前提です。
(A列の最終行を取得するために、ダミーでもよいので1行目に何らかのデータが必要です)

まず...続きを読む

QexcelのCOUNTIF関数で、『範囲=色のついたセル』に設定したいです。

excelのCOUNTIF関数で、『範囲』の設定で、『ある一定の範囲内の色のついたセル』を
範囲として選択したい場合、どのように操作したらよいでしょうか?

たとえば、A1~A30までのセルの中で、A9、A10、A18、A19、A20、A29、A30のセルが赤で、
そのうちのA10、A18、A29、A30に「○」の記号が入っていて、その○の数を調べたい場合です。

ご存知の方、よろしくお願いいたします。

Aベストアンサー

ワークシート関数ではセルの「色番号」は取得できません。
マクロ(ユーザ定義関数)が必要です。

ユーザ定義関数で「背景色が赤で、文字列が○のセル」を数えることも可能ですが、質問は「例えば」で書かれていそうなので、あまりきっちりとマクロを書くと修正が必要になりそうです。
そこで汎用的に使えそうな「手抜きバージョン」で回答します。

まず以下のマクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて下さい。

Function Cidx(ByVal trg As Range) As Integer
 With trg.Cells(1, 1).Interior
   If .ColorIndex = xlNone Then
     Cidx = 0
   Else
     Cidx = .ColorIndex
   End If
 End With
End Function

次にVBE画面を閉じてワークシート画面に戻り、
 =Cidx(A1)
の式を1行目の空いている列(例えばB列)に入力し、30行分下にコピーします。するとA列のセルの「色番号」が表示されます(背景色なしは0)
ただしセルに値を入力した後で背景色を変更した場合は、ユーザ定義関数の結果は自動的に変わりません。Alt+Ctrl+F9で強制再計算させる必要がありますのでご注意ください

後は別の関数で赤色(色番号=3)で「○」印があるセルをカウントします
 =SUMPRODUCT((A1:A30="○")*(B1:B30=3)*1)

ワークシート関数ではセルの「色番号」は取得できません。
マクロ(ユーザ定義関数)が必要です。

ユーザ定義関数で「背景色が赤で、文字列が○のセル」を数えることも可能ですが、質問は「例えば」で書かれていそうなので、あまりきっちりとマクロを書くと修正が必要になりそうです。
そこで汎用的に使えそうな「手抜きバージョン」で回答します。

まず以下のマクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて下さい...続きを読む

Qエクセルで文字色がついているセル数をカウント

エクセル初心者です。
エクセルセルに
佐藤
鈴木
青山
渡辺
と入力されてあって佐藤と鈴木の文字の色が青だった場合文字色(青)がついているセルをカウントし,あるセルに2と表示することはできるのでしょうか。条件付書式や検索と思いましたがわかりません。よろしくお願いします。

Aベストアンサー

 質問者様お使いのエクセルのバージョンが不明なので何がアレですが
いちおう 2000 で作成した経験からアドバイスさせていただきます。


>文字色(青)がついているセルをカウントし,

1 残念ながらマクロを使わないと,ご希望のことは難しいようです。
  以下に手順を記しますので参考にしてください。

(1) [ツール]-[マクロ]-[VisualBasicEditor](またはAlt + F11)で
 VBE画面にします。

(2) VBE画面上で[挿入]-[標準モジュール]を選択します。
 するとコードウィンドウが出ますので、以下のコードを記します。
 (コピー&ペーストでもOK)

----------------------------------------------------------------
Function SpecialCell(targetRange As Range, _
intColor As Integer) As Integer
'赤は3,緑は4,青は5,黄は6
Dim myCell As Range

For Each myCell In targetRange
If myCell.Font.ColorIndex = intColor _
Or myCell.Interior.ColorIndex = intColor Then
SpecialCell = SpecialCell + 1
End If
Next
End Function
----------------------------------------------------------------

(3) 元のワークシートに戻って、カウント結果を表示させたいセルに、

赤字のカウントは =SpecialCell(A1:E5,3)
青字のカウントは =SpecialCell(A1:E5,5)
黄字のカウントは =SpecialCell(A1:E5,6)

 などとすればOKです。

 ただし、フォント色が黄でセル色が青などというのは、どちらにも
カウントされてしまうので注意が必要です。


 ☆参考:ブックの標準カラーパレットのインデックス番号
  (VBエディタのヘルプにて「ColorIndex」を検索、参照した)

  1 黒   2 白   3 赤   4 黄(薄)緑 5 青
  6 黄   7 桃色  8 水色  9 茶色   10 緑
  11 紺    (濃い緑)

以下 ~ 56 まであるようです。



2 別解(参考)
-----------------------------------------------------------
Function ColoredCell(rngArg As Range, rngSample As Range) As Long
For Each c In rngArg
If c.Interior.ColorIndex = rngSample.Interior.ColorIndex Then
ColoredCell = ColoredCell + 1
End If
Next
End Function
----------------------------------------------------------------
 使う際には =ColoredCell(A1:A10,A5) といったように、第1引数は
調べたい範囲、第2引数には指定する色の(サンプル)セルを当てる。
 ※SUMIF 関数の併用も可



2 実は、マクロを使わない方法があります。
  5~6年程前に、何処かで教わった記憶があります。

  色を判定する式(=GET.CELL(**,**))をブックに登録、判定結果を
 表示したいセルに、登録した式の定義名で記述する。
  その判定結果を SUMIF や COUNTIF 関数の引数として再利用する。

 以下は、その手順です。

 (1) 色を判定する式を登録
   メニューバー「挿入」→「名前」→「定義」名前の定義画面にて
  「参照範囲」欄に
   「=GET.CELL(検査の種類を指定する番号,判定したいセル番地)」
   名前欄に式の名前を(「文字の色」や「セルの色」等)付けて
  「追加」→「OK」で登録完了
☆検査の種類を指定する番号とは?
20→フォントは太字か否か?を判定
24→文字フォントの色を判定
63→セルの塗りつぶし色を判定
 
 なお、後から書式を変更しても結果が自動的には更新されないので、
NOW 関数を組み込み「F9」キーで更新させた方が良いようです。
 例「=GET.CELL(**,**)+NOW()*0」(0を足している為、値に影響なし)

 (2) 判定した結果を表示させる
   判定結果を表示したいセルに「=定義した名前」という式を入力
  すると色の種類すなわち色の番号を判定結果として表示してくれる
   色の番号(Excel のヘルプでカラーインデックスを参照できる)
   例☆黒字(無指定)=>0
     赤      =>3
     青      =>5
     緑      =>10
     薄緑     =>4
     ※その他も、実際に試してみれば結果は分かるはず

 (3) 判定した結果を、SUMIF や COUNTIF関数の引数として利用する。

 言葉で説明するのは非常に難しくこれで理解していただけるかどうか
自信がありませんが、この、色の判定式を登録してしまうという方法は
Excel97 から Excel2002までのバージョンで活用できることは確認済み
です。 もちろんこれも SUMIF 関数との併用(数字として計算する)が
可能です。
 実際のサンプルファイルを見ていただければいいのですが、なかなか
良い方法が思いつきません。

 Excel2007 で読み込んでも反映されましたが、2007でどう作成するの
かは、残念ながら 2007 での作成経験がないので説明できません。



 ところで、この OkWave には Office 系ソフト専門のカテゴリもあり
ます。 そっちの方が詳しい人が多いと思うので、今後は使用ソフトの
バージョンも併記してそちらで質問されるようにした方が解決が速いと
思われます。

http://okwave.jp/207/218/c232.html

 なお、老婆心ながら、その場合の複数カテゴリにわたる(多重投稿)
マルチポストには気をつけましょう。

参考URL:http://miyahorinn.fc2web.com/faq/faq030.html,http://hp.vector.co.jp/authors/VA016119/hajimete/udf1.html

 質問者様お使いのエクセルのバージョンが不明なので何がアレですが
いちおう 2000 で作成した経験からアドバイスさせていただきます。


>文字色(青)がついているセルをカウントし,

1 残念ながらマクロを使わないと,ご希望のことは難しいようです。
  以下に手順を記しますので参考にしてください。

(1) [ツール]-[マクロ]-[VisualBasicEditor](またはAlt + F11)で
 VBE画面にします。

(2) VBE画面上で[挿入]-[標準モジュール]を選択します。
 するとコードウィンドウが出ますので...続きを読む

Qエクセル 塗りつぶししたセルの個数をカウントしたい

表の集計で、【セルの色を塗りつぶして区別したデータの個数】を、カウントする方法を教えて下さい。

事例ですが、飲食店の月間の宴会データ作成で、売上・客数・組数など集計表に数値で表示されているものは、SUM、COUNT関数で求めています。

質問は、【送迎付きの宴会】データがあり、集計表に数値ではなく【セルの塗りつぶし】で記録されています。目視で数えるのがめんどくさいため、この塗りつぶしの個数をカウントする良い方法がありましたら教えて下さい。

Aベストアンサー

マクロを使わない限り関数で色を指定してセルの数を数えることはできません。次のようにしてはどうでしょう。
Ctrlキーを押しながらFキーを押します。
「検索」のタブで「検索する文字列」は空白のままで「書式」をクリックします。
「パターン」タブでセルの色を選択しOKします。
元の画面で「すべて検索」をクリックすれば下方にどのセルがその色になっているかが表示されると同時に一番下の枠部分には例えば「3セルが見つかりました」のように表示されます。それが答えとなりますね。
このような操作をマクロの記録で取ることでマクロの操作からセルの数を数えることもできるようになるでしょう。

QEXCELで、色つきセルだけカウントしたい

エクセルで「条件付書式」を使って、セルに色がつけてあります。
その色が付いたものだけを、カウントして、件数を表示させたいのです。色つきセルが、3個なら、別のセルに、3というぐあいに…可能でしょうか?

Aベストアンサー

#02です
それでは折衷案で、シートの条件付き書式が設定してあるセルの値が「ある値」と同じ場合にカウントするのではどうですか?

シートを一旦保存した後で、以下のマクロを「シート名右クリック」→「コードの表示」で開く画面に貼り付けてください。その後すぐに3行目、4行目のセルアドレスを実際のシートに合わせて変更してください。(サンプルではA4,A5としています)

Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range, clCount As Long
Const trgADRS As String = "A4" '「ある値」のセルアドレス
Const setADRS As String = "A5" '結果を格納するセルアドレス
 For Each c In ActiveSheet.Cells.SpecialCells(xlCellTypeAllFormatConditions)
  If c.Value = Range(trgADRS).Value Then
   clCount = clCount + 1
  End If
 Next
 Range(setADRS) = clCount
End Sub

シートに戻ってどこかのセルの値が変わったタイミングで結果が表示されます。

#02です
それでは折衷案で、シートの条件付き書式が設定してあるセルの値が「ある値」と同じ場合にカウントするのではどうですか?

シートを一旦保存した後で、以下のマクロを「シート名右クリック」→「コードの表示」で開く画面に貼り付けてください。その後すぐに3行目、4行目のセルアドレスを実際のシートに合わせて変更してください。(サンプルではA4,A5としています)

Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range, clCount As Long
Const trgADRS As String = "A4" ...続きを読む

QEXCELでCOUNTIF(,,)のようにセルの書式を条件でセルの数をカウントする方法

表計算ソフトのEXCELでCOUNTIF(,)関数では検索条件には数字や文字列だけのようですが、セルの書式(塗りつぶした色等)の検索条件でセルの数をカウントする方法はありませんか?
生産計画日程表に実績日を色塗りして日程毎に集計する場合に有効な気がします。計画日のセルに△を記入して、実績日のセルに○等を記入すればできることはできるのですが、計画日と実績日が同じ場合はうまくいきません。紙の上でやるように計画に△、実績日のセルを赤色に着色して、赤色のセルをカウントさせることができれば、計画と実績が同じでも問題なく好都合なのです。データーが少ない場合は紙の帳票なら簡単にできるのですが、データーが多いと大変です。

Aベストアンサー

過去ログの一例:
http://oshiete1.goo.ne.jp/qa2165726.html

Q色が付いたセルの合計を出したいのですが…

いつもお世話になります。

エクセル2002を使用していますが、特定の色が付いたセルの個数を数えたいのです。
同時に「色が付いてあるセルを数える」に加えて、「色を付けたら直後、そのセルの個数が数えられる」ようにしたいのです。
「色が付いたセルの引数を数える」というのは分かるのですが、「セルだけの合計」となると分かりません…。

以前にも質問しましたが、結局分からず終いでしたので、改めてお願い致します。

例題)A1~G1を赤で色付けした時に、赤色の付いたセルの個数をA2に出す。
理想とする結果) A2に赤色のセルの合計「7」が出た。

Aベストアンサー

ユーザー定義関数による方法です。

一般の関数のような使い方で、指定した色のセル数をカウント出来ます。
色を変更し、<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

ユーザー定義関数による方法です。

一般の関数のような使い方で、指定した色のセル数をカウント出来ます。
色を変更し、<Enter>等で他のセルに移動した時点で再計算します。

書式: CCount(範囲,色番号(カラーインデックス))
使用例 : CCount(A1:A100,3)   A1:A100範囲の赤色をカウント
(赤=3 ですが、他の色の番号を知るには、後述の GetIndx関数で調べられます。)

これで良かったら、詳しく操作手順を書きますので、新しいブックでテストして
みてください。

VBAコード設定方法
1.Alt +...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報