[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『colorcount関数』(けい)
色付のセルの数を数えるのに、ColorCount関数を使用しましたが、 #NAME?エラーが出てしまいます。
=colorcount(B7:B26,$A$2)
● 色付セルは条件付書式です。 ● ColorCount と入力しても小文字になってしまいます。 ● 関数の引数 ダイアログボックスも ”未定義”の表示になります。
netで調べても、最新情報が得られませんでした。
もう廃止された関数なのでしょうか? セルの色の数を数える関数は、違ったものになったのでしょうか?
よろしくお願いいたします。
< 使用 Excel:Excel2016、使用 OS:Windows10 >
>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
といいつつ、昔議論したもの([[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.