- ベストアンサー
Accessでの稼働日数計算の方法
Accessクエリー上の開始日と終了日までの稼働日数(土日祭日を除く)と開始日から指定した稼動日数だけ経過した日付を求めたい(Excelのnetworkday関数やWorkday 関数と同じ様な事がしたい)のですが。。。何かいい方法はありませんでしょうか? 宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
関数が見つからないのであれば、 オリジナルでVBAで関数を作る、とか。 365(366)件のカレンダレコードを作って、 何日目と稼働日がわかる項目(稼働日xx日目でもよさそう)が あると求めやすくならないか、とか。 日付をキーにすれば、それぞれでxx日目は取得できるかと思います。
その他の回答 (2)
- layy
- ベストアンサー率23% (292/1222)
10年分は年をまたぐのかどうか。 複数年なら、 2005年のある日から今日までとしても、 2005年のある日から年末まで何日か、 +2006年+2007年+2008年+2009年+2010年 +2011年の今日まで何日か。 日単位の算出は2005年と2011年だけになるようにできないか。 過去年なら曜日祝日が決まっていれば、 その年の月曜は何日ある、日曜は何日ある、祝日は何日と決まるはず。 1度テーブルを作っておけば良いのでは?。 求めるときには作ったおいたテーブルからレコードを選択、検索する。 3650レコード分を都度作成しようとしていないか。 それは無駄な処理かもしれない。 3650件程度でストレスが出るほどというのもどうでしょう。 アクセスで扱うデータ量を考えると許容範囲かと思います。 どこに時間がかかっているかを見直す。 クエリなどの結合はどうか。 さらなる効率化となると、 算出式を考えて求められたらいいが、 土日だけなら 単純に1年の週の7分の2が土日+週の端数での考慮、 祝日もあれば、そうもいかないと思います。
アクセスのテーブルかクエリーのデータをリンクでエクセルに持っていき、エクセルの領域で、計算処理を行ったあとで、インポート?でしたか、の方法でアクセスにもどすようにしたら良いです。
お礼
ありがとうございました。 既に試みて見ましたが...やはり、エクスポートとインポートを行う時間が勿体無くて。。。すみません。出来ればアクセス上で処理出来る方法(vbaのコーディング等)が有りましたら教えてください。 よろしくお願いします。
お礼
ありがとうございました。 トライしてみましたが、10年分のデータ日付が存在するため、各日付(開始日:3650日種類*終了日:3650日種類)のデータを用意する事になり容量及び時間が掛かり過ぎて...そこで、以下の様な考えで試みてみました。 基準日(1900/1/1)~各日付(+1日目(1900/1/2)・・・n日目)に対応するレコードを持ち、(終了日までの日数-開始日までの日数)で期間日数を求める。 これでも、少し時間が掛かり過ぎるのでもう少し効率の良い考えがありましたら教えてください。 よろしくお願いします。