こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

-広告-

解決済みの質問

エクセルで出勤表をつくる

エクセルで、月別でシートに分けて1年分の出勤表を作っています。
印刷して勤務時間を手書きしてもらうためのものです。
下記のことで困ってますので助けてください。

考えている作り方としては、
(1)セルA1に年を設定し、A2に月を設定する
(2)=DATE($A$1,$A&2,1~31)で、日付を出す
(3) (2)の日付のセルの、書式設定をユーザー定義「d」にして日のみを表示
(4) (2)の日付の横のセルに=TEXT(WEEKDAY((2)のセル,1),"aaa")で曜日を表示

なのですが、(2)で、31まで入れると、2月シートの29の下に、(3月の)1と2が表示されてしまいます。30日までしかない月も同様です。
これを、その月の月末の日付までしか表示しないようにしたいです。

どうしたらいいでしょうか。

投稿日時 - 2016-01-10 15:46:11

QNo.9109113

困ってます

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

>(1)セルA1に年を設定し、A2に月を設定する
手入力ですね?

>(2)=DATE($A$1,$A&2,1~31)で、日付を出す
1日のセル位置と日付の数式を設定するセル範囲が明確ではありません。
推測ですがA3=1日、A4=2日、・・・・、A33=31日と言うことですか?

>(4) (2)の日付の横のセルに=TEXT(WEEKDAY((2)のセル,1),"aaa")で曜日を表示
曜日はB3~B33でよろしいでしょうか?

>これを、その月の月末の日付までしか表示しないようにしたいです。
A3=IF(DATE($A$1,$A$2,ROWS(A$3:A3))>EOMONTH(DATE($A$1,$A$2,1),0),"",DATE($A$1,$A$2,ROWS(A$3:A3)))
B3=A3
としてA3とB3を下へ33行目までコピーしてください。
A3~A33セルの書式はユーザー定義「d」で良いですがB3~B33はユーザー定義「"aaa"」にします。
B3~B33は日付のシリアル値ですが表示形式で曜日を指定すればTEXT関数で文字列に変換する必要はありません。

投稿日時 - 2016-01-10 18:35:54

お礼

EOMONTHの使い方を初めて知りました。
ありがとうございました!

投稿日時 - 2016-01-10 19:41:59

ANo.6

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(6)

ANo.5

1日がA3から開始とします。
A3式は=DATE(A1,A2,1)ですね。
28日まではdate関数でも=A3+1と足していっても構いません。
A31:29日目
A31式
=IFERROR(IF($A$2=MONTH(A30+1),A30+1,""),"")
B31式
=IF(A31="","",TEXT(WEEKDAY(A31),"aaa"))
A31~B31を下方へオートフィル

添付が画像は3~26日を非表示としています。

投稿日時 - 2016-01-10 18:31:09

ANo.4

=DATE($A$1,$A&2,1~31)
の代わりに
=If (Month(Date($A$1,$A&2,1~31))=$A$2, Date($A$1,$A&2,1~31, "")
としたらどうでしょう。

つまりDATE($A$1,$A&2,1~31)の結果が、A2に指定してある月と違う場合は、長さ0の文字列("")を返します。

投稿日時 - 2016-01-10 16:35:35

ANo.3

=IF(MONTH(DATE(A$1,A$2,29~31))<>A$2,"",DATE(A$1,A$2,29~31))
といった組立にします。




実際には1日から28日までのセルには関数を入れるまでも無く1から28までの数字を生で記入しておき、曜日のセルの側で
=TEXT(DATE(A$1,A$2,1から28のセル),"aaa")
と計算

さらに29日以降の曜日は
=IF(上述の29~31日のセル="","",TEXT(A$1,A$2,29から31のセル),"aaa"))
のようにしておけば十分です。

投稿日時 - 2016-01-10 16:33:13

お礼

ありがとうございました。
いろいろな方法がありますね、参考になりました。

投稿日時 - 2016-01-10 19:48:13

ANo.2

 1日(ついたち)の日を表示させるセルがどのセルなのかが具体的に判らなければ、明確な回答をする事が出来ませんので、取り敢えず仮の話として1日の日を表示させるセルがB4セルであるものとして話を進める事に致します。

 その場合、まず、B4セルに次の関数を入力して下さい。

=IF(ISERROR(($A$1&"/"&$A$2&"/"&ROWS(B$4:B4))+0),"",ROWS(B$4:B4))

 次に、C4セルに次の関数を入力して下さい。

=IF(ISNUMBER($B4),TEXT($A$1&"/"&$A$2&"/"&$B4,"aaa"),"")

 そして、B4~C4のセル範囲をコピーして、B5~C34の範囲に貼り付けて下さい。
 尚、上記の場合にはセルの書式設定を標準にして下さい。


 それからもし、どうしても

>書式設定をユーザー定義「d」にして日のみを表示

にされたい場合には、B4セルの関数を

=IF(ISERROR(($A$1&"/"&$A$2&"/"&ROWS(B$4:B4))+0),"",($A$1&"/"&$A$2&"/"&ROWS(B$4:B4))+0)

に、C4セルの関数を

=IF(ISNUMBER($B4),TEXT($B4,"aaa"),"")

にして下さい。

投稿日時 - 2016-01-10 16:24:44

お礼

日付がどのセルなのかわからないというところは、
すみませんセルじゃなくて手入力のつもりでした。。
ISERROR関数を知らなかったので参考になりました!ありがとうございました。

投稿日時 - 2016-01-10 19:45:21

ANo.1

ヒントだけネ。
[条件付き書式で]でフォント色を白に設定

投稿日時 - 2016-01-10 16:22:28

お礼

そういうのもありですね!
参考になりました、ありがとうございました。

投稿日時 - 2016-01-10 19:42:49

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-