• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:access 現在年月から勤務年月を算出したい。)

現在年月から勤務年月を算出する方法

このQ&Aのポイント
  • Accessを使用して、入社年月から現在までの勤務年月を算出する方法を解説します。具体的には、入社年月と現在の日付を引き算し、その結果を年と月に変換します。計算結果が0年0ヶ月でなければ、結果を表示します。また、結果を表示する際には「年」と「ヶ月」の単位を付けます。
  • 入社年月が2012年11月の場合、現在の日付との差を計算します。その結果は1年1ヶ月となります。同様に、入社年月が2012年12月の場合は1年、入社年月が2013年1月の場合は11ヶ月となります。これによって、入社年月から現在までの勤務年月を算出することができます。
  • 入社年月から現在までの勤務年月を算出する方法は、Access初心者でも簡単に実装することができます。計算結果が0年0ヶ月でなければ、その結果を出力します。計算結果の表示には、「年」と「ヶ月」という単位を付けることがポイントです。質問文章の例では、入社年月からの勤務年月を算出する際に、日にちを含むものが多くて自信がないとのことですが、日にちの計算は行わずに年月だけを計算することで解決できます。

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

こんなユーザー定義関数を作っておけば? クエリに直接も出来なくはないだろうけど、長ったらしくなるので割愛 手順 下記コードの、Function service~ から最後のEnd Function までをコピー Accessに戻って Alt + F11 を押しますと VBE が立ち上がります。 メニューから、挿入 → 標準モジュールを選択。 Option Compare Database Option Explicit ※(ツール→オプションの編集タブの「変数の宣言を強制する」にチェックがある場合のみ) だけが表示された新たなウィンドウが出ますのでそこにペースト メニューのデバッグ→▽△のコンパイルを選択。 エラーが出ないのを確認して、Alt + F11 で VBE から切り替えます。 クエリのデザイングリッドで 氏名|入社年月|勤続年数:serviceLength([入社年月]) とすれば表示されます。 Function serviceLength(ByVal fromDate As Variant) As String On Error GoTo errh '入社月の前月をもって1年とカウントします。数え年式 '201211と201311 → 1年1ヶ月 '201212と201311 → 1年 '入社月の同月で1年とする場合は、myCount = 0 にします 満年齢式 '201211と201311 → 1年 '201212と201311 → 11ヶ月      Dim fD As Date   Dim myCount As Integer   Dim LY As Integer, LM As Integer      myCount = 1   fD = CDate(Format(fromDate, "@@@@/@@/01")) 'DateDiff関数で使えるように変換      LY = (DateDiff("m", fD, Date) + myCount) \ 12 '12 で割った商   If LY <> 0 Then 'ゼロ非表示対策     serviceLength = CStr(LY) & "年"   End If      LM = (DateDiff("m", fD, Date) + myCount) Mod 12 '12で割った余り   If LM <> 0 Then     serviceLength = serviceLength & CStr(LM) & "ヶ月"   End If   Exit Function errh:   serviceLength = "計算できません" End Function

maumama2525
質問者

お礼

お返事遅くなり申し訳ありません!!! ご回答、どうもありがとうございました。 初心者ですが、詳しく回答いただいたおかげで、 コピぺでできるなんて、とってもたすかります。 まだ、週明け早々、会社で使用させていただきます!

その他の回答 (1)

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

モジュールを宣言して、vbaのDateDiff関数を呼び出す自作関数を定義。 差を"M"で取得して、12で除算・剰余を求めて文字列化する

参考URL:
http://office.microsoft.com/ja-jp/access-help/HA001228811.aspx
maumama2525
質問者

お礼

早速ご回答ありがあとうございます。 VBA・・・難しそうですが、参考URLを見て勉強したいと思います。

maumama2525
質問者

補足

'0'を表示しないという点も含めて、クエリでフィールドを作る事を考えているのですが、難しいですか?

関連するQ&A