- ベストアンサー
営業日数を自動計算をしたいのですが
エクセル2003を使っています。 シート1に営業日数、シート2~に表示形式の日付で1ヶ月分の日付を入力しています。 これをシート2~の1ヶ月分の営業日数を自動的にシート1に入力できるようにしたいです。 休みの日はセルをオレンジで塗りつぶしています。 何かいい方法はないでしょうか? よろしくお願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
特定色で塗りつぶしてあるセルのカウント(全体から除く)なら、VBAで可能です。 ユーザ関数で設定すれば、計算は可能ですが、セルの色を変えても自動計算で反映されないところがやっかいですね。 (基本的に関数は値の計算なので、塗りつぶしの色を変えても自動的には呼び出されない) 以下、ユーザ関数の例です。 Function ColorCount(sn As String) As Long Dim sht As Worksheet, r As Long Const sColor = 46 '//休日の指定色(オレンジ) Const col = 1 '//色判定の対象列番号(1=A列) Set sht = Worksheets(sn) ColorCount = 0 For r = 1 To Cells(Rows.Count, col).End(xlUp).Row If Cells(r, col).Interior.ColorIndex <> sColor Then ColorCount = ColorCount + 1 Next r End Function *関数の引数は「シート名」になっており、このシートのA列(どこが日付か不明なのでとりあえずA列にしてあります)の使用列の中からオレンジ色(どの色か不明なのでカラーインデックス46と仮定)の塗りつぶしでない行の数を返します。 ただし、上に記したように、関数を設定した後で、シートの色塗りを変更したりしても自動計算されません。 これを多少なりとも解決するには、式で =$C$1*0+ColorCount("Sheet1") のような呼び出し方をしておいて、集計シートのC1(ダミーのセル)の値を変更してあげれば、再計算されます。(値は数字であれば何でもOK)
その他の回答 (5)
- mu2011
- ベストアンサー率38% (1910/4994)
エクセルでは祝祭日を認識する事が難しいので、シート2~に営業日有無のフラグ列を設定し、事前に情報入力(仮に1を平日等)しておけば、 各シートの最終行で計数(SUM関数)した値を参照、又はシート1で直接フラグ列を計数した方が簡単と思いますが如何でしょうか。
お礼
ありがとうございます。 難しいみたいですので手動で入力します。
- hallo-2007
- ベストアンサー率41% (888/2115)
質問をまとめると、シート2のある列に日付が縦にいれてあって、 休みの日の場合は、オレンジに塗りつぶしてある。 日付の中で、塗りつぶしてないセルの数を求めよ といった感じでしょうか。 残念ながら、エクセル2003ではセルの色を認識する関数がありません。 過去スレですが、マクロ、或いは4.0マクロを利用した方法です。 http://oshiete1.goo.ne.jp/qa4652961.html 参考になると思いますが、結構厄介です。
お礼
ありがとうございます。 難しいみたいですので手動で入力します。
- web2525
- ベストアンサー率42% (1219/2850)
休日が、不定休:土日が出勤であったり、平日が休日だったりした場合は実際に休日日か出勤日のカウントを行うことが必要になるかと思いますが、塗りつぶされたセル数のカウントは関数では実行できませんので、別のセルに休日であることを示す必要があります。 (●とか1とかの表記で) その上でSUMIF関数等で休日数をカウントして反映される方法ではいかがでしょうか。
お礼
ありがとうございます。 難しいみたいですので手動で入力します。
- gyouda1114
- ベストアンサー率37% (499/1320)
>シート2~の1ヶ月分の営業日数を自動的にシート1に入力できるようにしたいです。 シート2にどのように営業日が入力されていますか 例えば営業日に○をつけているとか >休みの日はセルをオレンジで塗りつぶしています。 休みの日を塗りつぶしているだけでは、そのセルを数えることはできませんのでシート2から営業日数を数えるのは難しいと思いますよ。
お礼
ありがとうございます。 難しいみたいですので手動で入力します。
- F_PAPA
- ベストアンサー率40% (8/20)
=NETWORKDAYS(開始日,終了日,祝日) の感じで平日の日数をカウントすることが出来ます。 ここで言う「祝日」は、あらかじめ祝日を登録しておき、その登録しているセル範囲を指定することで計算されるようになります。
お礼
ありがとうございます。 難しいみたいですので手動で入力します。
お礼
ありがとうございます。 難しいみたいですので手動で入力します。