- ベストアンサー
エクセルで日付を入れたら年の設定をしたい
- エクセルで有給休暇の計算表を作成しています。従業員が有休を消化する際に日付をセルに入力し、残数を減らす形式です。問題は、日付が現在の年ではなく計算表の年と一致するようにする方法です。
- 計算表は年ごとに更新されます。例えば、H24.9.1からH25.8.31までの期間の表を作成します。ただし、日付を入力する際に現在の年と一致させると、正しく計算表の期間と一致しません。
- H24.9.1~H25.8.31の計算表で、H25年に実際の日付を入力すると、セルの値は2013/9/1になります。H25年に入力してもセルの値が2012/9/1にならないようにするための方法はありますか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
直接の答えになっていないかもしれませんが、ひとつの解決策として、入力セルとフォーマットして表示するセルをわける方法はどうでしょう。 例: A1に期間開始年月日 (例:2012/9/1) B1に期間終了年月日 (例:2013/8/31) B4に月(例:3) C4に日(例:10) で、D4に =DATE(IF(DATE(YEAR($A$1),B4,C4)-$A$1>=0,YEAR($A$1),YEAR($A$1)+1),B4,C4) を入力。 あとはその下に、月日を入れると自動で年月日になって表示するようにすれば良いです。 ちょっとゴリゴリ感がありますが、何かのヒントになれば嬉しいです。
その他の回答 (2)
- KURUMITO
- ベストアンサー率42% (1835/4283)
マクロを使わなければできませんね。 例えばシートにコマンドボタンを配置し、それをクリックすることでA2セルから下方に入力した日付をお望みのような日付に変更するとしたら次のようにします。 A1セルにはH24.9.1と入力し、B1セルには「から」、C1セルにはH25.8.31のように入力します。D1セルには「の期間の計画表」とでも入力します。 「開発」タブの「挿入」からコマンドボタンをクリックしてシート上で四角を描きます。コマンドボタンが配置されます。そのコマンドボタンを右クリックして「コードの表示」を選択します。 表示の画面では次のコードを入力します。 Private Sub CommandButton1_Click() Dim i As Integer For i = 2 To Range("A65536").End(xlUp).Row If Month(Range("A" & i).Value) >= Month(Range("A1").Value) Then Range("A" & i).Value = DateSerial(Year(Range("A1")), Month(Range("A" & i).Value), Day(Range("A" & i).Value)) Else Range("A" & i).Value = DateSerial(Year(Range("C1")), Month(Range("A" & i).Value), Day(Range("A" & i).Value)) End If Next End Sub シートの画面に戻って「開発」タブの「デザインモード」に色がついていたらそれをクリックして消します。 その後にコマンドボタンをクリックすることでお望みのようにA2セルから下方の日付が変更されます。
- Cupper-2
- ベストアンサー率29% (1342/4565)
年から入力する。 でもって表示は月日になるよう、 セルの書式設定 で指定しておく。 横着したい気持ちは分かりますが、これで普通に対処できます。 (H25/8/1 と入力してもOK)
お礼
回答、ありがとうございます。 確かに、一番この方法が確実ですね。 最初からそういう入力の仕方で、という事で 決めておけばいいだけですし。 こちらで、実践してみたいと思います。 ありがとうございました。
お礼
回答ありがとうございます。 こういった形での範囲の表示のさせ方もあるという事を 勉強させていただきました。 ありがとうございました。