続くとは思わなかっただろ? 俺もだ
そんでですねーここで営業日数を数えてみよう! とか思うわけです。
考え方としては、範囲を指定してその範囲の文字が黒いところだけ数えれば良いのではないか、と。
ユーザー定義関数を作ってみる
えーっと、勘で使ってるので詳しいところはググってくれ(爆)
Function countBlack(r As Range) ret = 0 For Each my_r In r If my_r <> "" And my_r.Font.Color = 0 Then ret = ret + 1 End If Next countBlack = ret End Function
こんな感じで作って
=countBlack(B3:H8)
って適当なセルに入力すれば・・・
・・・21・・・なぜ・・・
というわけで調べると条件付書式ってfont.colorでは取得できないらしーのね~(font.colorでは24日は黒だと思っている)
んで、じゃーどうやって取得するのっつーとDisplayFormatっつーのを使うらしいのだ!! が!! これユーザー関数で使えないとか言ってるの!!
DisplayFormat プロパティはユーザー定義関数では機能しないことに注意してください。
Range.DisplayFormat プロパティ (Excel)
つーわけで、マクロになります・・・。*1マクロとユーザー定義関数の違いもよくわかってません・・・。勘で使ってます・・・。
FunctionをSubに書き換えて~
Sub countBlack() Worksheets("Sheet1").Select ret = 0 For Each my_r In Range("B3:H8") If my_r <> "" And my_r.DisplayFormat.Font.Color = 0 Then ret = ret + 1 End If Next Range("G1") = ret End Sub
Alt+F8で実行できるので実行すると~
20日ー。(いつの間にか前後に文字入ってるけど気にしない)
よかったねー。おめでとーおめでとー。ありがとーwwww
というわけで、今回は平日をカウントするカレンダーでした。
土日も文字色黒くすればカウントしますし、祝日はリスト編集で対応できるはずです
え? それでどうすんのって・・・いや・・・あの・・・。
ここここ今回のエクセルはここまでです!!!www
ファイル保存するときはマクロつきの形式(.xlsm)で保存しましょう!
後で検索する用
条件付書式の色を取得するにはDisplayFormatプロパティを使う
Functionでは動かない
Subにすること
*1:ユーザー定義関数もマクロらしい(;´Д`)よくわからん