• ベストアンサー

Excelで出勤台帳を作りたい

WindowsXPでExcel2000を使用しています。 出勤台帳を作成しているのですが、下記の点で悩んでしまってます。 まず、期間として たとえば平成16年1月1日~平成16年1月31日と表示させたい場合、EOMONTH関数を使用し、1月1日と入力すれば、1月31日は自動で取得できました。 次に、日ですが、1月は1~31までありますが、小の月と閏年をどのようにして処理するか、つまり、1月は1月1日と入力することでA列の1~31にそれぞれ1~31と表示させ、2月1日と入力すると同様に1~29(今年は閏年)を表示させ、3月1日と入力すると、1~30を表示させたいのです。 1月1日の日付を絶対参照させ、そこに+1、+2、+3・・・とすれば、28日までは完成できたのですが、小の月と閏年の処理だけどうしてもわかりません。お知恵を貸していただけませんでしょうか。よろしくお願いします。

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

  • ベストアンサー
  • dejiji-
  • ベストアンサー率38% (327/858)
回答No.3

もし、一月毎にシートを構成するなら、A1に年が入り、B1に月が入っているとして28日までは今のままで、29日は =IF(DAY(DATE($A$1,$B$1,29))=29,29,"") 以降30,31の場合は29を30、31に変更してください。 これなら、アドイン関数(EOMONTH)のない場合でも対応できます。

yamashiro
質問者

お礼

すばらしい。これもいいですね。 結果的に、皆さんからいただいた情報などを総合的に組み合わせ? 下記のようにしました。ちょっと複雑すぎますでしょうか?一応目的を達成できてます。 まず、H2に日付(年月日)を作成しました。このセルには各月の初日を入れることにします。 そして、B5~B35にその月の「日」のみを表示させその値からC5~C35に曜日を取得するようにしました。B5~B35は =IF(MONTH(DATE(YEAR($H$2),MONTH($H$2),ROW()-4))=MONTH($H$2),DATE(YEAR($H$2),MONTH($H$2),ROW()-4),"") とし、C5~C35はWEEKDAY関数を使用しました。 こんなのいかがでしょう。おかげさまで解決しました。ありがとうございました。

その他の回答 (5)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.6

例えばD2に2004/2/1と2月の最初の日を入れておきます。 B列に日を出すとして、月初日はどの月でも、B1は1といれます。 B2に式=IF(B1<DAY(EOMONTH($D$2,0)),B1+1,"")といれ て、「どの月の場合も」(一々末日を気にせず)、B31まで式を複写します。 31行まで複写しますが、今年の2月の場合、30、31行は空白になります。 3月は31日まで入ります。 大の月も小の月もうるう年も同じ方式でOKです。これでどうでしょうか。

yamashiro
質問者

お礼

すばらしい。できますね。これも。ただ、曜日を取得できるともっといいな~なんて。贅沢いってすみません。ありがとうございました。

  • zephyrus
  • ベストアンサー率41% (181/433)
回答No.5

#4で回答した者です。 バカな回答をしたものです。 あれだったら、A2に =A1+1 と入れ、あとオートフィルした事と変わりません。 なかったことにしてください。 これからはよく考えて回答します。 申し訳ありませんでした。

yamashiro
質問者

お礼

いや~、いろいろと考えていただきありがとうございました。皆さんのおかげでなんとか解決できました。どうもありがとうございました。

  • zephyrus
  • ベストアンサー率41% (181/433)
回答No.4

ご質問の趣旨をまちがえているかもしれませんが。 まず、A1に2004/1/1と入力します。 それを平成16年1月1日と表示します。ここまではいいですね。 次にA2に次の式を入力します。 =IF(AND(MOD(YEAR(A1),4)=0, MONTH(A1)=2,A1=28),A1+1,A1+1) あとはA2の式をA3以下へオートフィル。 2400年1月まで使えると思います。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 数式での方法。 A2に、 =IF(COUNT($A$1),IF(MONTH($A$1+ROW(A1))<>MONTH($A$1),"",$A$1+ROW(A1)),"") と入力して、A31までコピーします。

yamashiro
質問者

お礼

ん~~ん、ちょっと思っていた結果とは異なるものでしたが、勉強になりました。ありがとうございました。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

非表示にするだけでいいなら条件付書式を使用できます。 「数式が」「=MONTH(セル)<>月」として文字の色を背景と同色にします。 上記の例でいくと A2に月初めの日にちを入力でA3以降に+1してA32まで作成 条件付書式の式を「=MONTH($A2)=MONTH($A$2)」 としてください。 2月の場合、A31が3月1日、A32が3月2日の為非表示になります。

yamashiro
質問者

お礼

なるほど、そういうやりかたもあるのですね。どうもありがとうございました。

関連するQ&A