プロが教える店舗&オフィスのセキュリティ対策術

出勤簿を作成するのですが、人により、開始日、締日が異なります。(末日、20日、15日締めなど)
「平成18年9月」分などと指定された場所に入力すると、
末日締 9/1~9/30
20日締 8/25~9/24
15日締 8/15~9/14
といった日付が自動入力されるようにしたいのですが、どうぞご指導ください。

A 回答 (2件)

『「平成18年9月」分などと指定された場所』をセル A1 と仮定します。



1.セル A1 を“ユーザー定義”で "「"ggge"年"m"月」分" と書式設定
2.セル A1 に次の何れかの形式で入力
  H18.9.1、H18/9/1、2006/9/1、2006-9-1、平成18年9月1日
  (→ セル A1 は 「平成18年9月」分 と表示される)
3.任意のセルに次の何れかの式を入力
  ="末日締 "&TEXT(DATE(YEAR(A1),MONTH(A1),1),"m!/d")&"~"&TEXT(DATE(YEAR(A1),MONTH(A1)+1,0),"m!/d")
  ="20日締 "&TEXT(DATE(YEAR(A1),MONTH(A1)-1,25),"m!/d")&"~"&TEXT(DATE(YEAR(A1),MONTH(A1),24),"m!/d")
  ="15日締 "&TEXT(DATE(YEAR(A1),MONTH(A1)-1,15),"m!/d")&"~"&TEXT(DATE(YEAR(A1),MONTH(A1),14),"m!/d")
    • good
    • 1
この回答へのお礼

ありがとうございました、うまくいきました。
他にも応用させていただき、いい資料をつくってみたいと思います。

お礼日時:2006/10/06 08:38

A1セルに 平成18年9月 と文字で入力されているとします。


西暦の年を B1セルにセットします。
計算式は =VALUE(MID(A1,3,2))+1989 です。
内容はA1セルの左から3つめの文字から2つを取り出し数字にして1989を足すという意味です。

月をC1セルにセットします。
計算式は =VALUE(MID(A1,SEARCH("年",A1,1)+1,LEN(A1)-SEARCH("年",A1,1)-1)) です
内容は年の取り出しと基本は同じですが1桁の場合と2桁の場合があるので式が複雑になっています。

これで 年と月が数字としてB1セルとC1セルに取り出されました。

これを使って当月の1日をD1セルにセットします。
計算式は =DATE(B1,C1,1) です。

B1セル、C1セルをまとめてD1セルにすることも可能で
計算式は =DATE(VALUE(MID(A1,3,2))+1989,VALUE(MID(A1,SEARCH("年",A1,1)+1,LEN(A1)-SEARCH("年",A1,1)-1)),1) と長くなるので分割しました。

この当月1日の日付を使って必要な日を求めていきます。

前月の25日を求める計算式は
=DATE(YEAR(D4-31),MONTH(D4-31),25) です
仮に25を20にすれば前月の20日が取り出せます。

当月の20日を取り出す式は
=DATE(YEAR(D4),MONTH(D4),20) です。
仮に20を24にすれば当月の24日が取り出せます。

月末はその月によって違うので翌月の1日から1を引きます。
よって当月の月末を取り出す式は
=DATE(YEAR(D4+31),MONTH(D4+31),1)-1 です。

これらを適当なセルに入れておけば色々使えると思います。
例えば 9/1~9/30 と表示させたかったら
当月の1日を入れたセルがD4セルで当月の月末を入れたセルがA3セルだとしたら
=MONTH(D4)&"/"&DAY(D4)&"~"&MONTH(A3)&"/"&DAY(A3) です。
    • good
    • 0
この回答へのお礼

ありがとうございました、うまくいきました。
応用させていただき、いい資料をつくってみたいと思います。

お礼日時:2006/10/06 08:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!