[[20220203134821]] 『colorcount関数』(けい) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『colorcount関数』(けい)

 色付のセルの数を数えるのに、ColorCount関数を使用しましたが、
 #NAME?エラーが出てしまいます。

 =colorcount(B7:B26,$A$2)

 ● 色付セルは条件付書式です。
 ● ColorCount と入力しても小文字になってしまいます。
 ● 関数の引数 ダイアログボックスも ”未定義”の表示になります。

 netで調べても、最新情報が得られませんでした。

 もう廃止された関数なのでしょうか?
 セルの色の数を数える関数は、違ったものになったのでしょうか?

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

< 使用 Excel:Excel2016、使用 OS:Windows10 >


それは【ユーザー定義関数】であって、Excelにもともと用意されている関数ではありません。
VBA(マクロ)を使ったものです。

>netで調べても、最新情報が得られませんでした。
ほんとですか?たくさんヒットしますが・・・
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_color.html
https://hamalabo.net/excel-countcolor

(もこな2) 2022/02/03(木) 14:06


すみません。書き忘れました。

ちなみに、↓ならその条件自体を数えたほうが良いと思います。(無理してマクロを導入する必要もないですし)
>色付セルは条件付書式です。

(もこな2) 2022/02/03(木) 14:14


 >色付セルは条件付書式です。
条件をCOUNTIFS関数の条件で出来そうだけど
(どん) 2022/02/03(木) 14:23 


もこな様
どん様

すぐにお礼を投稿したのですが、反映されていないことに
今、気付きました。
回答いただいていたのにすみませんでした。

お二人の言われる通り、条件自体を数えることにしました。
(ご提示いただいたURLも質問前に確認したのですが、解決できず)

もう少し柔軟に考えられるよう、努力します。

本当にありがとうございました。

(けい) 2022/02/04(金) 14:07


私ももこな2さん、どんさんの提案に賛成です。

といいつつ、昔議論したもの([[20210325141131]])を思い出したので、
参考までに挙げておきます。

 紹介のあったサイトのユーザー定義関数は、条件付き書式によるものは対象外です。

 条件付き書式にも対応したものが下記のユーザー定義関数CountColorAです。

 ・以下を標準モジュールにコピーしてください。
 ・ユーザー定義関数としての使い方はサイトのものと同じです。
    =CountColorA(B1:D10,A1)   
    A1と同色の塗りつぶしのセルの数を返します。 (色は条件付き、手作業付与いずれも対象)

 【参考コード】

 Rem  セル範囲aRngの中で、 基準セル範囲cRngと同一の塗りつぶし色のセルの数を返します。
 Rem 色は条件付き書式を含めたものすべてがカウントの対象です。
 Function CountColorA(aRng As Range, cRng As Range) As Long
     Dim sh       As Worksheet
     Dim r        As Range
     Dim col      As Long
     Dim colorCnt As Long

     Application.Volatile
     Set sh = aRng.Parent
     col = sh.Evaluate("AColor(" & cRng.Address & ")")  '基準セルの色
     For Each r In aRng
         If sh.Evaluate("AColor(" & r.Address & ")") = col Then
             colorCnt = colorCnt + 1
         End If
     Next r
     CountColorA = colorCnt
 End Function

 Rem DisplayFormatがUDFの中では使えない制約を回避するため、あえてUDFから外に出したもの
 Function AColor(r As Range) As Long
     AColor = r.DisplayFormat.Interior.ColorIndex
 End Function

 このユーザー定義関数は自動再計算関数なので、
 対象セルなどと無関係のセル(別シートも含む)であっても、
 変更があるたびに再計算が行われます。(無駄といえば無駄です)
 ですから、結果が得られたら別セルに値のみコピーして、
 '=CountColorA(B1:D10,A1) などと単なる文字列にしておくと、無駄な再計算は回避できます。
 必要な時に関数に戻します。
(γ) 2022/02/04(金) 15:18

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.