• ベストアンサー

アクセス:既定値に土日含まず3日後を指定したい

エクセルの場合ですとworkday関数を使用すればいいのですが、 アクセスの場合はどのようにしたらよいのでしょうか? いろいろネットで調べてみたのですが、workday関数はアクセスでは無いように思うのですが・・・。 また、もし簡単に出来るのであれば、祝日も除きたいのですが、 これは本当に難しいらしくあきらめています。本当に初心者レベルで申し訳ないのですが、教えていただけると幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • venzou
  • ベストアンサー率71% (311/435)
回答No.2

workday関数ですが、Accessにはないので、 モジュールで自作する必要があります。 まず、祝日や、盆休みなどの休日のデータを用意します。 Accessの場合、テーブルとして作った方が良いでしょう。  テーブル名 :holiday  フィールド名:data (日付型) 主キー 土日は計算できるので、土日以外の、祝日や、 振り替え休日、会社独自の休日などを登録しておきます。 次に、新規のモジュールを追加し、下記のようなソースを記述。 適当な名前で保存して下さい。 ----------------------------------------------------------- Option Compare Database Option Explicit 'd(日付)から、c(日数)営業日後の日付を返す Public Function WorkDay(d As Date, c As Integer)  Dim count As Integer  '初期化  WorkDay = NextWorkDay(d)  count = 0  Do While count < c   '営業日をカウントしながら進める   WorkDay = NextWorkDay(DateAdd("d", WorkDay, 1))   count = count + 1  Loop End Function 'd(日付)以降の営業日を返す Private Function NextWorkDay(d As Date) As Date  NextWorkDay = d  Do While IsHoliday(NextWorkDay)   NextWorkDay = DateAdd("d", NextWorkDay, 1)  Loop End Function 'd(日付)が、土日・休日かチェック Private Function IsHoliday(d As Date) As Boolean  If Weekday(d) = vbSunday Or Weekday(d) = vbSaturday Then   '土日ならTrue   IsHoliday = True  ElseIf IsNull(DLookup("data", "holiday", "data = #" & d & "#")) Then   '平日で、休日でなければFalse   IsHoliday = False  Else   '休日ならTrue   IsHoliday = True  End If End Function ----------------------------------------------------------- フォームの既定値のプロパティでは下記の様に使います。 今日から3営業日後の日付を規定値にする場合、  WorkDay(Date(),3) Excelのworkday関数と同じような使い方です。 違いは、休日のデータを、テーブルに用意しておく点です。

ayaya11
質問者

お礼

venzouさん、本当にありがとうございました!! モジュールなんて全くわかっていない自分でも、venzouの書いてある通りにやったら上手く出来ました。これも、すべてvenzouさんのおかげです。 いろいろネットで調べたのですが、教え方が高度で全くわからず、あきらめていました。venzouさんが助けてくれなければあきらめていたでしょう。 本当にありがとうございました。

その他の回答 (1)

  • Bronco7
  • ベストアンサー率29% (150/511)
回答No.1

どういう処理で3日後を得たいのかよく分かりませんが 簡単な方法としてはカレンダーテーブルを用意するか 独自の関数を作成するのが良いかと思います。 土日はともかくとしても祝祭日は毎年変動しますから 祝日テーブルなりは必要だと思いますよ。 例えばですが: 何か日付を入力したら その日付+3日の日付をカレンダーテーブルに参照する 参照した日が土日や祝日扱いなら その翌日の平日日付を返すようにすればよいかと

ayaya11
質問者

お礼

回答ありがとうございました。 例えば以降を実際にどうすればよいかわからず、困りました・・・。

関連するQ&A

  • Access 2010 土日祝日を除いて前日

    土日祝日を除いた前日のデータを抽出したいのですが、 どうすればいいのか困っています。 Excelの場合、workday関数がありますが Accessの場合だとどうしたらいいのでしょうか。 やはりVBAを使用しないとできないでしょうか・・・。 (VBAは作成したことがありません。) Access 2010 勉強をしながらなんとか作成をしているので、 本当に初心者ですが回答いただけると幸いです。

  • Excel 2ヶ月後の日付(土日祝日の場合は、直後の平日)

    Excel2007 指定日から1ヶ月後の日付(土日祝日の場合は、直後の平日)の出し方を教えてください。 WORKDAY関数では、できないのです。 よろしくお願いします。

  • アクセスの関数一覧サイトについて

    お世話になります。 以下のようなアクセスの関数のお勧めの関数サイトについて教えてください。よろしくお願いいたします。 ※ 私はエクセルから入ったアクセス初心者ですが、クエリで関数を使いっています。例えばエクセルでは「if」がアクセスでは「iif」等、少し戸惑います。 ※ アクセス関数一覧表と使用例、またできればエクセルの場合ではこの関数を使うがアクセスではこの関数というような対比(例)をしめしたようなお勧めサイトはないでしょうか? 教えてください。よろしくお願いします。

  • excelで日付の関数・・・

    すごく初心者的な質問ですみません。 excelで日付関数を使いこなせなくて困っています。色々ネットで調べたり、本を見たりしましたが、出来なくて。。。 ある列に入力した日付(例えば2004/2/19とか・・)の 10日後の日にちを別のセルに出したいのです。 それはいとも簡単にできるんですが(当り前か??) その10日後ってゆうのが曲者で、10日後が、土日祝にあたる場合は月曜日若しくは祝日の翌日の日にちが入るように指定したいのです! ちなみにWORKDAY 関数だと、10日間カウントするにも土日祝を抜いて計算 してしまいますよね??? 皆さんならどうやって処理されますか???? 明日、処理したいのですみませんが早めにご回答お願いいたします!

  • アクセスを使いこなしたい

    マイクロソフトアクセスを使いこなして、自身の会社で使用したいと思っています。 今のところ、初心者と同じで、基本だけをスクールで習ってきました。 でも、お金もかかるしこの先独学で学習したいと思っています。 エクセルのマクロや関数、アクセスでもモジュールなどありますが、難しくて、どこからとっかかってよいかわかりません。 全てマスターし、使いこなしたいです。 マズ何からはじめてどんな教本を買えばいいのでしょうか?? 何から学習を始めたらよいでしょうか? こんな質問で申し訳ないのですが、真剣に悩んでおります。 どなたか宜しくお願い致します。

  • Accessでの稼働日数計算の方法

    Accessクエリー上の開始日と終了日までの稼働日数(土日祭日を除く)と開始日から指定した稼動日数だけ経過した日付を求めたい(Excelのnetworkday関数やWorkday 関数と同じ様な事がしたい)のですが。。。何かいい方法はありませんでしょうか? 宜しくお願いします。

  • エクセルとアクセス

    エクセルもアクセスも初心者の私ですが、 両方とも関数をつかいますよね。 どちらのほうが一般的に頻度が高いでしょうか? 関数辞典を購入しようと思ったのですが、両方一度には料金がかかってしまうのでどちらかにしたいと思っています。 また、辞典を買わなくても、ネットで関数の辞典みたいなので分かりやすいものがあったら是非教えていただきたいです よろしくお願いいたしまーす

  • Accessのクエリ

    アクセス超初心者で困っています。 アクセスのクエリで、 「フィールドにデータが入力されている数」 を関数はありますでしょうか? エクセルで言えば、count関数に当たる関数を探しています。 よろしくお願いします。

  • アクセスで関数

    アクセスのド初心者なんですが、エクセルで使う「IF」関数はアクセスでは使えるのでしょうか?

  • Access 1000以下を切り捨てる関数

    Accessのクエリで関数を使用し、1000以下を切り捨てた値を出したいと思っています。 Excelの場合は、 =RoundDown(数値,-3) で、切り捨てられますよね。 Accessで、同様の結果が得られるような関数は、ありますでしょうか? ご存知でしたら、教えてください!!

専門家に質問してみよう