dポイントプレゼントキャンペーン実施中!

セルの合計数(縦)から、色付のセルの個数を引いた数を自動入力したく、

=COUNTA(E3:E19)-ColorCellCount(E3:E19, 2)

と、入れてみたのですが、エラーになってしまいました。
(#NAME? と出てしまいます・・・。)
どなたか、アドバイスをお願いします(:_;)

A 回答 (3件)

ColorCellCount と作っている方がいるようですし、


http://oshiete.goo.ne.jp/qa/2000523.html

できるできないかというよりも、VBAを使うか使わないかの違いでしかありませんね。

私は、VBAが中心としている回答者ですから、私には、Excelの機能の一部のVBAは利用しないままに使いましょうという話に読めました。

google検索で「Excel 色付きセルをカウント」と入れると、いろんなものが出てきます。

https://matome.naver.jp/odai/2146839682141749501

こんなまとめサイトもありますが、それらを否定してしまうのか、はたまた、VBA自体を使うこと自体が問題のかは、私には分かりません。色の付いたセルの処理は、長い間繰り返されてきた話です。

Microsoft 社内部でも、VBAについては、同じ議論が繰り返されているようです。使わないで同じことができればとは思いますが、そのために複雑化させるのは得策ではないですし、他の言語で処理しましょうといのは、本末転倒になってしまいます。(実際は、後者の他の言語で処理しましょうという方向にあるようです)

標準モジュールに、くだんのコード、
Function ColorCellCount

何か不具合が生じるのか、今のExcelにはなじまないようなので、作り変えてみました。

=COUNTA(E3:E19)-ColorCellCount(E3:E19, 2)

ColorCellCount(範囲, 見本のセル, Fontの色なら=なしか、False、塗りつぶし=True)
= ColorCellCount(E3:E19, 2, True)
意味は、E3~E19の範囲の、E4の塗りつぶしの色と同じものを探して数えろ、という意味です。
= ColorCellCount(E3:E19, 2)
意味は、E3~E19の範囲の、E4のフォントの色と同じものを探して数えろ、という意味です。


'//
Function ColorCellCount(範囲 As Range, Optional セルの順番 As Integer, Optional パターン As Boolean = False)
 ''範囲, セルの色の見本-上から順 ,パターンか文字か(False=文字の色)
 Dim myRng As Range
 Dim blnPattern As Boolean
 Dim myIndex As Long
 Dim fntCnt As Long
 Dim innCnt As Long
 Dim c As Range
 Dim dblSum As Double
 Dim idxInColor As Long
 Dim idxFnColor As Long
 Set myRng = 範囲
 myIndex = セルの順番
 blnPattern = パターン 'False =文字, True=塗りつぶし
 idxInColor = myRng(myIndex).Interior.Color
 idxFnColor = myRng(myIndex).Font.Color
 For Each c In myRng
  If Not IsError(c) Then
   If blnPattern Then
    'パターンの色
    If c.Interior.Color = idxInColor Then ' c.Interior.ColorIndex > 0 Or
     innCnt = innCnt + 1
     dblSum = dblSum + c.Value
    End If
    Else
    '文字の色
    If c.Font.Color = idxFnColor Then ' Or Then 'c.Font.ColorIndex > 0 Or
     fntCnt = fntCnt + 1
     dblSum = dblSum + c.Value
    End If
   End If
  End If
 Next
 If blnPattern Then
  ColorCellCount = innCnt
  Else
  ColorCellCount = fntCnt
 End If
End Function
    • good
    • 0

何をどうした結果 その数式に行きついたのでしょうか。

Excelに
「ColorCellCount」という関数はありません。おそらくユーザー
定義関数だろうと思います。

VBAの知識があるなら「ColorCellCount」関数を自分で作れば
使えるようになりますが そもそも「色を数える」という発想そ
のものから見直した方がいいように思います。

E2:E19の範囲を選択した状態で フィルタを設定し「色フィルタ」
で 色のついていないセルだけ抽出してやれば SUBTOTAL関数か
オートカルク機能でデータ個数を集計できると思います。
    • good
    • 0

>ColorCellCount



はユーザー定義関数で、Excelに元から入っている関数ではありません。
基本的に一般機能では色などの書式でカウントすることはできないと思ってください。
(できないことはないけど、お勧めではない)
オートフィルタを設定して、どこかにSUBTOTAL関数を入れ色なしでフィルタリングするとか、色が何かの規則性にしたがってつけているのならその条件を使ってカウントするとかで如何でしょうか?
    • good
    • 0
この回答へのお礼

解決しました

そうだったんですね!!!
アドバイス、ありがとうございます!!
すぐにでも使用したかったので、とても助かりました。

規則性のないものだったので、他の方法を考えてみます!
ありがとうございます。

お礼日時:2017/02/03 13:48

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