[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『塗りつぶしされているセルのカウントについて』(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.