[[20200421210201]] 『条件付き書式』(ガラパゴス) ページの最後に飛ぶ

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

 

『条件付き書式』(ガラパゴス)

今まで手動で色付していて色のついたセルの数とそのセルの値の合計数を出していたのですが、量が増えてきたので条件付き書式で色付をするようになりました。
が、その途端式が反応しなくなりました。
下記VBAいれてあります。合計数のところにはCOLORCOUNTとCOLORSUMがいれてあります。何か解決策はないでしょうか?

Function ColorCount(R1 As Range, C As Range)

    Dim r As Range
    Application.Volatile
    ColorCount = 0
    For Each r In R1
        If r.Interior.Color = C.Interior.Color Then
            ColorCount = ColorCount + 1
        End If
    Next r
End Function
Function ColorSum(R1 As Range, C As Range)
    Dim r As Range
    Application.Volatile
    ColorSum = 0
    For Each r In R1
        If r.Interior.Color = C.Interior.Color Then
            ColorSum = ColorSum + r.Value
        End If
    Next r
End Function

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


 条件付き書式の色はカウントしないのですね。仕様です。。
過去ログを探してみましたが、、ちょっとわからなかったです。すみません。

 条件付き書式の場合は、、その条件をカウントする様になると思います。
ありました。
[[20050316093234]]
(SoulMan) 2020/04/21(火) 22:03

回答ではないんですが、コメントします。既にご指摘のとおりです。

条件付き書式の結果を取り出せるDisplayFormatというプロパティが
2010から導入されているんですが、
あいにく、これはユーザー定義関数の中では使えません。

ユーザー定義関数ではなく、通常のマクロ実行に代えれば、可能は可能ですね。
そのマクロをどういうタイミングで動作させるかという問題は残りますけど。

(γ) 2020/04/21(火) 22:58


DisplayFormatというのがあるのですね💦 
勉強になりました。
ありがとうございます😊
(SoulMan) 2020/04/21(火) 23:04

そうなんですね。
更新ボタン作ってマクロ実行させる場合にしたらどのようにしたらできますかね?
無知ですみません。
(ガラパゴス) 2020/04/22(水) 08:04

 横から失礼致しますが、「条件付き書式」は数式で設定されたわけですよね?
 でしたら、その数式を用いて、セル上でカウントしたほうが早いと思いますがいかがでしょう?

 例えば、1〜50未満が赤 =AND(A1>=1,A1<50)
     50〜80未満が青=AND(A1>=50,A1<80)
     80以上が黄    =A1>=80
 という条件付き書式を設定しているなら
 下記表を参考に、COUNTIFに置き換えることでカウントできると思います。

 D1=COUNTIFS(A:A,">="&C1,A:A,"<"&C2)
 D2=COUNTIFS(A:A,">="&C2,A:A,"<"&C3)
 D3=COUNTIFS(A:A,">="&C3)

    |[A]|[B]   |[C]|[D]|[E]
 [1]| 50| 青  |  1|  1|人 
 [2]| 60| 青  | 50|  3|人 
 [3]| 40|赤    | 80|  1|人 
 [4]| 80|  黄|   |   |   
 [5]| 60| 青  |   |   |   

 条件付き書式のカウントはマクロに頼らなくてもできることが多いと思いますよ。 
(稲葉) 2020/04/22(水) 08:15

If r.Interior.Color = C.Interior.Color Then
の代わりに、
If r.DisplayFormat.Interior.Color = C.DisplayFormat.Interior.Color Then
とします。
こんな風にすればできますよ。

(γ) 2020/04/22(水) 10:42


[[20200421221740]]
が参考になるでしょうか。

(γ) 2020/04/22(水) 10:47


【追記】
 DisplayFormatは、Excel2010で導入されたRangeのプロパティです。
 条件付き書式の結果の各種書式を得ることができます。
 なお、条件付き書式が設定されていないRangeに適用した場合は、通常の書式の内容を返します。
 注意点としては、
 ・ワークシート上で、いわゆるユーザー定義関数としては機能しない点です。
 ・しかし、関数プロシージャのなかで使えないわけではありません。
 ・マクロから、その関数プロシージャを呼び出せば正常に機能します。

 下記のtestは、使い方の一例です。(ここは、質問者さんが適宜修正して下さい。)

 Sub test() 
     Range("A1").Value = "件数"
     Range("A2").Value = "合計"
     Range("B1").Value = ColorCount(Range("D1:F100"), Range("C1"))
     Range("B2").Value = ColorSum(Range("D1:F100"), Range("C1"))
 End Sub

 Function ColorCount(R1 As Range, C As Range) As Long
     Dim r As Range
     '''Application.Volatile
     ColorCount = 0
     For Each r In R1
         If r.DisplayFormat.Interior.Color = C.DisplayFormat.Interior.Color Then
             ColorCount = ColorCount + 1
         End If
     Next r
 End Function
 Function ColorSum(R1 As Range, C As Range) As Long
     Dim r As Range
     '''Application.Volatile
     ColorSum = 0
     For Each r In R1
         If r.DisplayFormat.Interior.Color = C.DisplayFormat.Interior.Color Then
             ColorSum = ColorSum + r.Value
         End If
     Next r
 End Function

(γ) 2020/04/22(水) 17:02


 条件付き書式を設定した「範囲と条件」を提示してください。

 ユーザー定義関数を使わなくても件数、合計の計算はできると思います。

 以上
(笑) 2020/04/22(水) 17:32

皆さんありがとうございます。

書式の範囲は=$F$5:$Q$424の範囲で

=AND($C5=$B$1,F5<>"")の式が入っていてヒットすると赤くなります。
$B$1を$B$2と$B$3に変えて違う色が付きます。

BI1.BK1.BM1に各色の数が入って
BI2.BK2.BM2に各色の数値の合計数を足した数値を入れてました。

(ガラパゴス) 2020/04/22(水) 18:31


 思ってたより範囲が広い・・・

 集計のところ
 BI1セルに =B1
 BK1セルに =B2
 BM1セルに =B3 を入力

 2行目を件数、3行目を合計にします。

 ■件数
 BI2 =SUMPRODUCT(($C$5:$C$424=BI1)*($F$5:$Q$424<>""))

 BI2をコピーして、BK2 と BM2に貼り付け

 ■合計
 BI3 =SUMPRODUCT(($C$5:$C$424=BI1)*($F$5:$Q$424<>""),$F$5:$Q$424)

 BI3をコピーして、BK3 と BM3に貼り付け

 これでできますか?

 以上
(笑) 2020/04/22(水) 21:47

 ↑ の式で重たく感じられるようだったら作業列を使った方がいいでしょう。

 作業列
 R5 =COUNT(F5:Q5)
 S5 =SUM(F5:Q5)
 424行目までコピー

 件数と合計
 BI2 =SUMIF($C$5:$C$424,BI1,$R$5:$R$424)
 BI3 =SUMIF($C$5:$C$424,BI1,$S$5:$S$424)

 先ほどと同じように、コピーして BK列、BM列に貼り付け。

 参考まで
(笑) 2020/04/22(水) 23:30

ありがとうございます!できました!!

本当にありがとうございました。。
(ガラパゴス) 2020/04/23(木) 16:41


コメント返信:

[ 一覧(最新更新順) ]


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