[[20180522230348]] 『塗りつぶしされているセルのカウントについて』(Shotan) ページの最後に飛ぶ

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

 

『塗りつぶしされているセルのカウントについて』(Shotan)

条件付き書式である条件を満たしていた場合、赤と黄色に塗りつぶしてある一覧表があります。
この表の黄色セルの箇所だけをカウントする方法はありますか?数が多いのでコードと数式か何かで出せるとありがたいです。
自分なりにいくつか試してみましたが、うまくカウントできませんでした。
お忙しいところ申し訳ないですが教えていただけるとありがたいです。

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


 >条件付き書式である条件を満たしていた場合

 その条件(式?)を提示いただく訳にはいかないですか?

(半平太) 2018/05/22(火) 23:39


半平太さんが指摘されてるところも気になるけど

>自分なりにいくつか試してみましたが、うまくカウントできませんでした。
どのようなことを試して、どのようにダメだったんでしょうか。

たしか、条件付き書式で塗りつぶしされているという場合、普通に
Range.Interior.Colorを調べてもダメだったような・・・

自分で試してないので外してるかもしれないですけど↓が参考になるかも
http://www.relief.jp/docs/excel-vba-get-cells-color-coditional-formatting.html

(もこな2) 2018/05/23(水) 07:25


 2016(2010以降)であればDisplayFormatで表示形式で変化した書式も含めて現在の書式を取得できる。
 ただしユーザー定義関数では使えないのでマクロ内での使用に限られるが。
(ねむねむ) 2018/05/23(水) 09:12

ありがとうございます。

以前のこちらの回答のコードを参考に作成してみましたが、
条件付き書式のセルはカウントしてくれないようです。
試しに条件付き書式ではなく、手動で塗りつぶしたセルはカウントしました。

※参考にしたコード
【20180119164500】

 「色付け」が条件付き書式での背景塗りつぶし、と仮定して・・。
 カウント範囲と条件付き書式で背景色を塗りつぶした色番号を指定して
 カウントする関数を作成してみました。

 ワークシート上で =CntInteriorColor(範囲、色番号)
 と入力します。

 Function CntInteriorColor(Target As Range, ColorNo As Long)

    Dim Rng As Range
    Dim Cnd As FormatCondition
    Dim Flag As Boolean
    Dim Cnt As Long

    For Each Rng In Target
        Flag = False
        For Each Cnd In Rng.FormatConditions
            If Cnd.Interior.Color = ColorNo Then
                If Evaluate(Cnd.Formula1) Then
                    Flag = True
                    Exit For
                End If
            End If
        Next
        If Flag = False Then
            Flag = (Rng.Interior.Color = ColorNo)
        Else
            Cnt = Cnt + 1
        End If
    Next Rng

    CntInteriorColor = Cnt

 End Function

 色番号は下記のコードで取得できます。(A1セルの場合)
 Sub GetColorNo()
    Dim Rng As Range
    Set Rng = Range("A1")
    MsgBox Rng.DisplayFormat.Interior.Color
 End Sub

(Shotan) 2018/05/24(木) 23:59


 >条件付き書式のセルはカウントしてくれないようです
 >試しに条件付き書式ではなく、手動で塗りつぶしたセルはカウントしました。

 (1)前段は、そりゃそうだろうなぁと思います(※1)

 (2)後段は、本当ですか? とお聞きしたい。
   どんなコードを使って、どんな事したら、正常にカウントが出来たんですか?(※2)

 ※1
 例示されたコードは、個々のセルの条件合否を判定していないです。
 個々のセルを見には行ってますが、条件式は自セルを判定する文字式になっていません。
 先頭セルとおなじ判定式です。

 なので、
 先頭セルに色が付けば、範囲のセル個数と同じになり、
 先頭セルに色が付かなければ、常に0個です。

 ※2
 例示されたコード(CntInteriorColor)は条件付き書式のカウントですよ。
 手動で塗りつぶしたセルをカウントするもんじゃないと思うんですけど?

(半平太) 2018/05/25(金) 11:56


コメント返信:

[ 一覧(最新更新順) ]


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