[[20050316093234]] 『条件付書式でカラー関数』(mutsu) >>BOT

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

 

『条件付書式でカラー関数』(mutsu)

 おはようございます。本日もよろしくお願いいたします。

[[20030522020924]]『色のついたセルの数え方』(ミヤ)

から発展した、UFClr0322をDLしました。

 これは、条件付書式で着色した色には使えないのでしょうか??
 条件付書式で着色の部分のみ反応してくれませんでした。
 何か対応策はありますか?


 「条件付書式」の条件でカウントする仕様にするのがよいでしょう。
  (INA)


 INAさん、ありがとうございます。
 >「条件付書式」の条件でカウントする仕様
 えっと・・・今回作成したいのは、色の着いたセルの値の合計です。
 実際の表は、条件付書式で「土曜日を青」「日曜日をピンク」「入力済セルを黄色」
 このように指定してあります。(既に3条件使用中。)
 青・ピンク・黄色それぞれの合計値を算出したいのです。
 土日は入力しても黄色にはならないようにしてあります。
 説明不足ですみませんでした。
 INAさんの説明を私が理解できていないのかな?
 (mutsu)


 わかりにくい置き方をしていますが、
 ダウンロードのページに[条件付書式対応版] Color6.xls があります。
http://www.excel.studio-kazu.jp/DL/DL01.html#color

 (kazu)

 「条件付き書式の色」は判定できないので、
 その「設定されている条件」をもとに該当するセルを判別して、
 処理する必要があります。

  (INA)

[[20050222100822]]の、(SoulMan)さんの方法もすごく分かりやすです。
 お試し下さい。
 (ひよっぴ)

 あら、条件付き書式には反応しませんね。
 ごめんなさい。
 (ひよっぴ)

 ひよぴさん、反応しないですか?
 色々やっていたのですが、全然解決できなかったので
 途方に暮れていました。
 というより、内容が私レベルではチンプンカンプンなので
 kazuさん・INAさんの方法をこれからじっくり考えます。><
 (mutsu)

 たびたびすみません。
 自分のスキルに見合わない要望をしているようです。
 全くもって分かりません。
 道具はそろっているのに、使い方が分からないといった感じです。
 ご説明願えますでしょうか?
 (mutsu)


 kazuさんが提供されているColor6.xlsは見てみましたか?
  (INA)


 当初INAさんのおっしゃるように、条件に合う数を算出した方法です。
	 [A]	 [B]	 [C]	 [D]
 [ 1]	3月1日	火	ああああ	
 [ 2]	3月2日	水		
 [ 3]	3月3日	木		
 [ 4]	3月4日	金		
 [ 5]	3月5日	土	休日出勤	
 [ 6]	3月6日	日	休み	
 [ 7]	3月7日	月		
 [ 8]	3月8日	火		
 [ 9]	3月9日	水		
 [10]	3月10日	木		
 [11]	3月11日	金		
 [12]	3月12日	土		
 [13]	3月13日	日		
 [14]	3月14日	月		
 [15]	3月15日	火		
 [16]	3月16日	水		
 [17]	3月17日	木		
 [18]	3月18日	金		
 [19]	3月19日	土		
 [20]	3月20日	日		
 [21]	3月21日	月		
 [22]	3月22日	火		
 [23]	3月23日	水		
 [24]	3月24日	木		
 [25]	3月25日	金		
 [26]	3月26日	土		
 [27]	3月27日	日		
 [28]	3月28日	月		
 [29]	3月29日	火		
 [30]	3月30日	水		
 [31]	3月31日	木		
 [32]				
 [33]		青	4	←=SUM(N(WEEKDAY(A1:A31,2)=6))
 [34]		ピンク	4	←=SUM(N(WEEKDAY(A1:A31,2)=7))
 [35]		黄色	1	←=SUM(N((WEEKDAY(A1:A31,2)<6)*(C1:C31<>"")))
 [36]		Shift+Ctrlキー押しながらEnterキーで確定させて配列数式に。		
 (川野鮎太郎)

 おはようございます。
 なんか・・・混乱してます。
 INAさん、kazuさん
 Color6.xlsダウンロードしてみました。
 セルの値の合計算出は、どのようにすればいいのか分かりませんでした。
 DLしたものをベースに、マクロを書き換え、表作成すればいいのですか?

 川野鮎太郎さん
 これも、Color6.xls同様、合計算出方法がわかりませんでした。

 セルの数の算出から、セルの値の合計の算出方法を考えましょう。という事ですよね?
 これだけヒントをいただいていながら、自分で考えることが出来ません。
 大変申し訳ありませんが、もう少しお付き合い願えませんでしょうか?

 ※土曜日はたまに平日扱いとなる事があります。


 Color6.xls では hcnt をセル数として、 
 hitProc = whcnt + 1 でカウントしているので、

 myTotal = myTotal + cL.Value
 のような感じで、 cL.Valueをカウントすればよいです。
  (INA)

 さっそくのお返事ありがとうございます。
 カウントをしてから、セルの値の合計は出るのでしょうか?
 ここが昨日から悩んでいるところです。
 カウントをしても、セル内の値が均一ではないので合計が出せないのでは?と
 行き詰っていました。
 具体的に表を書き出してみます。
   A    B    C   D   E    F   G    H   
 1]    16(月) 17(火) 18(水) 19(木) 20(金) 21(土) 22(日)・・・・平日 休日
 2] 井上 200   300   100  200   500  100
 3] 佐藤 100   200       10   200       200
 4] 岡田 500                   100

 このような表です。
 土曜日は青・日曜日はピンク・平日は入力すると黄色く着色するように条件付書式
 で設定してあります。
 平日の欄に黄色のセルの値の合計、休日の欄に青とピンクのセルの合計を算出させたいのです。
 お願いします。(mutsu)


 cL.Value がセル値です。
 以下は、Kazuさんのコードをセル数からセル値のカウントにした場合の例です。
 条件ごとにカウントを分けるなら、その分だけ関数を作り分ける必要があります。
 そうなると条件が明確にならないと判断できないです。

 Function UFColor(addr As Range) As Double
 Dim cL As Range
 Dim i As Long, myTotal As Double

    For Each cL In addr

        For i = 1 To cL.FormatConditions.Count                 '条件付き書式設定あり

            If cL.FormatConditions(i).Type = xlExpression Then    '2 * 数式 *

                If cL.Formula = cL.FormatConditions(i).Formula1 Then
                    myTotal = myTotal + cL.Value
                End If
            Else                                                    '* 値 *

                Select Case cL.FormatConditions(i).Operator
                Case xlBetween                                      '1「次の値の間」
                    If cL.Value >= Evaluate(cL.FormatConditions(i).Formula1) And _
                        cL.Value <= Evaluate(cL.FormatConditions(i).Formula2) Then
                        myTotal = myTotal + cL.Value
                    End If
                Case xlNotBetween                                   '2「の間以外」
                    If cL.Value < Evaluate(cL.FormatConditions(i).Formula1) Or _
                        cL.Value > Evaluate(cL.FormatConditions(i).Formula2) Then
                        myTotal = myTotal + cL.Value
                    End If
                Case xlEqual                                        '3「次の値と等しい」
                    If cL.Value = Evaluate(cL.FormatConditions(i).Formula1) Then
                        myTotal = myTotal + cL.Value
                    End If
                Case xlNotEqual                                     '4「次の値と等しくない」
                    If cL.Value <> Evaluate(cL.FormatConditions(i).Formula1) Then
                        myTotal = myTotal + cL.Value
                    End If
                Case xlGreater                                      '5「より大きい」
                    If cL.Value > Evaluate(cL.FormatConditions(i).Formula1) Then
                        myTotal = myTotal + cL.Value
                    End If
                Case xlLess                                         '6「より小さい」
                    If cL.Value < Evaluate(cL.FormatConditions(i).Formula1) Then
                        myTotal = myTotal + cL.Value
                    End If
                Case xlGreaterEqual                                 '7「以上」
                    If cL.Value >= Evaluate(cL.FormatConditions(i).Formula1) Then
                        myTotal = myTotal + cL.Value
                    End If
                Case xlLessEqual                                    '8「以下」
                    If cL.Value <= Evaluate(cL.FormatConditions(i).Formula1) Then
                        myTotal = myTotal + cL.Value
                    End If
                Case Else

                End Select

            End If

        Next i

    Next cL

    UFColor = myTotal
 End Function

 

  (INA)

 何度も申し訳ありません。
 ようやく理解して来ました。(多分・・・)
 今回の表の場合、条件付書式に
 第1条件=ISNUMBER(A○○)←セル黄色 第2条件=TEXT(A$○○,"aaa")="土"←セル青
 第3条件=TEXT(A$○○,"aaa")="日"←セルピンク
 と指定してありますので、この条件をマクロに組み込めば良いという事でしょうか?
 (mutsu)


 そうです。
 Kazuさんのマクロは条件付き書式を判定していますが、
 具体的な条件があるなら条件付き書式は無視して、
 その各々の条件それ自体で判定する関数を作ればよいです。 

  (INA)

 ほんっとにありがとうございました。
 一時は、分かったフリをしてCLOSEしてしまおうかと思いました^^;
 貴重な時間を割いて対応してくださっているので、それに応えねば!と
 しつこく書き込ませていただきました。
 INAさん(皆さん)の「だ〜か〜ら〜!」と、PCの前で呆れている声が
 聞こえてきそうでした。
 これから、条件に合う関数作りに奮闘することになると思いますが、
 感謝の気持ちを・・・
 ありがとうございました♪&これからもよろしくお願いいたします。


コメント返信:

[ 一覧(最新更新順) ]


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