重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

 エクセルにてカレンダーを作成しておりますが、手入力ではたいへんですので、たとえば、1月と入力すると通常のカレンダーの配置で日付を入力させたいのですが、やりかたがわかりません。
 ご存知の方はよろしければ、ご指導いただけるとうれしいです。

A 回答 (11件中1~10件)

基本当年当月表示で相対的に一ヶ月後とか1ヶ月先とかに簡単操作で変えられ


1クリックで全て非表示にできるというものでも構わないでしょうか?

こういうものを作ってみました

以下の「書式設定→」と書かれているところは
前回同様セルを右クリックして現れるメニュー内より「セルの書式設定」を選択し
「セルの書式設定」ウインドウを表示させて
「表示形式」タブ内、左方の「分類」一覧より「ユーザー定義」を選択する
同タブ内、右方にある「種類」下方の入力欄に「→」以降の文字を入れることにより設定を行ってください

ではいきます

まずエクセルのウインドウ情報の「表示」プルダウンメニュー内「ツールバー」から「フォ-ム」にチェックが入っている状態にしてください
此で「フォーム」ツールバーが表示されている状態だと思います

A1:G2を選択して書式設定→"";"";"";""

先程の「フォーム」ツールバーより「スピンボタン」を選択
カーソルが大きい十字に変わるのでD1の右側でクリック
すると▲と▼が複合した「スピンボタン」が現れますので
此を右クリックして「コントロールの書式設定」を出します
「サイズ」タブから高さ・幅共に0.6を入力
「プロパティー」タブから「セルに合わせて移動するがサイズ変更はしない」を選択
「コントロール」タブから
「現在値」に13
「最小値」に0
「最大値」に25
「変化の増分」に1
「リンクするセル」に$D$1
「3-D表示」にチェックを入れて
右下方の「OK」ボタンで確定させて
テキストテキストボックス内の余分な文字を削除後D1の右側に配置してください

同様に

先程の「フォーム」ツールバーより今度は「チェックボックス」を選択
カーソルが大きい十字に変わるのでD1の右側でクリック
すると四角い枠の例の「チェックボックス」が現れますので
此を右クリックして「コントロールの書式設定」を出します
「色と線」タブより
「塗りつぶし」は塗りつぶしなしに
「線」の項目「色」も線なしに

「サイズ」タブから高さ・幅共に0.6を入力
「プロパティー」タブから「セルに合わせて移動するがサイズ変更はしない」を選択
「コントロール」タブから
「値」をオフに
「リンクするセル」に$E$1を入力
「3-D表示」にチェックを入れて
右下方の「OK」ボタンで確定させて
テキストテキストボックス内の余分な文字を削除後E1の左側に配置してください

B5をクリックし「データ」プルダウンメニューから「入力規則」
開いた「データの入力規則」ウインドー内の設定タブ中程の「入力値の種類」下方のプルダウンメニューより「リスト」を選択
選択することにより現れる「元の値」の下方の入力欄に
「月,火,水,木,金,土,日, 」と入力(注、入力時に「」は省く、最後は凵(空白)を入力)
最下方の「OK」ボタンを押し確定させる

F1に1を入れ
書式設定→"調整値";"調整値";"調整値";"調整値"

G1に
 =IF(E1,"",MOD($A$2-"2005/1/1"+$F$1,12))
と入力

A1に
 =IF($E$1,"",DATE(YEAR(TODAY()),MONTH(TODAY())+D1-13,1))
と入力し
書式設定→[$-411]ggge"年度"

B2に
 =IF($E$1,"",TEXT(A1,"mm")&"月3勤勤怠表")
と入力し
書式設定→@

A2に
 =IF($E$1,"",DATE(YEAR(A1),MONTH(A1),1))
と入力

B2に
 =IF($E$1,"",DATE(YEAR(A1),MONTH(A1)+1,1)-1)
と入力

C5:H5を範囲選択し、数式
 =LOOKUP(MATCH(B3,{0,"","月","火","水","木","金","土","日"},0),{1,2,3,4,5,6,7,8,9},{"","","火","水","木","金","土","日","月"})
と記入、「CONTROL」+「ENTER」で確定

A6:A35を範囲選択し、数式
 =IF($E$1,"",CHOOSE(MOD(ROW()-2,5)+1,"A","B","C","D",IF(ISNUMBER(H1),H1,-1)))
と記入、「CONTROL」+「ENTER」で確定
書式設定→"";"";"";@"勤"

B6:H35を範囲選択し、数式
 =IF($E$1,"",IF(ISNUMBER($A6),IF(A6<0,IF(WEEKDAY($A$2)=MAX(COUNTIF(B5,{"日","月","火","水","木","金","土"})*{1,2,3,4,5,6,7}),1,-1),IF(A6<DAY($B$2),A6+1,-1)),IF(OFFSET(B6,-MOD(ROW()-1,5),0,1,1)<1,"",CHOOSE(MOD(OFFSET(B6,-MOD(ROW()-1,5),0,1,1)+MOD(ROW()-1,5)*3+$G$1,12)+1,3,3,3,"公",2,2,2,"公",1,1,1,"公"))))
と記入、「CONTROL」+「ENTER」で確定
書式設定→0;"";"";@

2~4行目を非表示にしたら完成です。

使い方ですが
B5のセルをクリックするとセルの右に「▼」が現れますので
それを更にクリックします
するとプルダウンメニューが現れますので
その中よりカレンダーとして表示させたい先頭の曜日をお選びください

D1が13の時は当月のカレンダーを表示しています
「スピンボタン」の▲をクリックする度にこの数字が1ずつ増え
翌月・翌々月… とカレンダー表示する日時が
1月毎に未来に進んでいきます

逆に
「スピンボタン」の▼をクリックする度にこの数字が1ずつ減り
先月・先々月… とカレンダー表示する日時が
1月毎に過去に遡っていきます。

表示を消す際は
E1に配した「チェックボックス」にチェックを入れて
E1とB5の内容を「DELETE」キーで消せば
配したボタンは残りますが
ほぼ全て表示が消えます。

導入当初や大型連休の前後では
スケジュールがずれると思いますが、
そう言う時は0~11の範囲で何か数値を入れて頂ければ、
1増える毎に順次スケジュールがずれますので
此で調整してください。

後、何か不都合などありましたら
お申し付け頂けましたら順次対応させて頂きます。

忌憚なくお申し出ください。


ところで、
作ってみたものの、
余り効果を感じません… ヾ(ーー;)

カレンダーは週単位では最大6週必要ですが
1週に3勤4交代制ですから日付行と併せて5行必要となります
詰まり諸々で33~35行ほどは絶対に必要!
と、なると思うのですが、

35行まで使うということは
フツーに縦一列に日付を並べても収まってしまいます (-_-)

此では見た目だけの問題となってしまいますが
見た目すら改悪となってしまってます。 (~ ~;)ヾ
    • good
    • 0
この回答へのお礼

 こんな大作をありがとうございます><作成することができました。エクセルすごい詳しい方なんですね。尊敬します^^インストラクターの資格は持っておりますが、こんな複雑なことはできませんので。エクセルのさらなる勉強をしないといけないなって思います^^
 作成に当たりいろいろたご苦労おかけいたしました。たいへん助かりました。ありがとうございます^^

お礼日時:2006/12/12 23:05

P.S.


序でですので
今やられている「vlookup」の元表のサンプルもお示しくだされば、
一緒に組み込まさせて頂きますが
如何致しましょう?

この回答への補足

 ありがとうございます。3交代勤務は「A B C D直」の4直に分かれており、3日いくと1日休みになっています。
A1に日付 B1に曜日 C1にA D1にB E1にC F1にD
A2から2007/1/1のように日付をいれてあります。
B2に=CHOOSE(WEEKDAY(A2,1),"日","月","火","水","木","金","土")
で曜日を出しております。
C2に3 D2に1 E2に公 F2に2
C3に3 D3に公 E3に1 F3に2
C4に公 D4に3 E4に1 F4に2
C5に2 D5に3 E5に1 F5に公
このように333公222公111公の繰り返しになっています。
たいへん恐縮ですが、よろしくおねがいいたします。

補足日時:2006/12/12 10:23
    • good
    • 0

失礼しました


3交代勤務表でしたか…

明日で良ければ修正版をお作り致しますのでお待ち頂ければ幸いです
    • good
    • 0

   A   B   C   D   E   F   G


1  2006  9
2  日  月  火  水  木  金  土
3                 1   2   3
4   4   5   6   7    8   9   10
5  11  12  13  14  15  16  17
6  18  19  20  21  22  23  24
7  25  26  27  28  29  30

◆A1に「西暦年」、B1に「月」を入力します
A3の式
A3=IF(MONTH(DATE($A$1,$B$1,1)-WEEKDAY(DATE($A$1,$B$1,1),2)+7*(ROW(A1)-1)+COLUMN(A1))=$B$1,DATE($A$1,$B$1,1)-WEEKDAY(DATE($A$1,$B$1,1),2)+7*(ROW(A1)-1)+COLUMN(A1),"")
★右と下にコピー
    • good
    • 0
この回答へのお礼

なるほど、こんなやり方もあるのですね。作成することができました。ありがとうございます^^

お礼日時:2006/12/12 23:01

ちょっと趣旨からは外れるかも知れないのですが


基本当年当月表示で相対的に一ヶ月後とか1ヶ月先とかでも構わないでしょうか?

こういうものを作ってみました

以下の「書式設定→」と書かれているところは
セルを右クリックして現れるメニュー内より「セルの書式設定」を選択し
「セルの書式設定」ウインドウを表示させて
「表示形式」タブ内、左方の「分類」一覧より「ユーザー定義」を選択する
同タブ内、右方にある「種類」下方の入力欄に「→」以降の文字を入れることにより設定を行ってください

ではいきます
A1に
 =EOMONTH(TODAY(),B1-1)+1
と入力し
書式設定→[$-411]ggge"年"

A2に
 =EOMONTH(A1,0)
と入力し
書式設定→""

B1に
書式設定→""#"ヶ月後";#"ヶ月前";""

B2に
 =EOMONTH(A1,-1)+1
と入力し
書式設定→m"月"

C5をクリックしデータプルダウンメニューから入力規則
開いた「データの入力規則」ウインドー内の設定タブ中程の「入力値の種類」下方のプルダウンメニューより「リスト」を選択
選択することにより現れる「元の値」の下方の入力欄に
「月,火,水,木,金,土,日, 」と入力(注、「」は省く、最後は空白を入力)
最下方の「OK」ボタンを押し確定させる

D5に
 =LOOKUP(MATCH(C5,{0,"","月","火","水","木","金","土","日"},0),{1,2,3,4,5,6,7,8,9},{"","","火","水","木","金","土","日","月"})
と入力し

D5をE5:I5にコピーする

B6に
 =IF(ISNUMBER(I4),I4,"")
と入力し
書式設定→""

C6に
 =IF(B6="",IF(WEEKDAY($B$2)=MAX(COUNTIF(C5,{"日","月","火","水","木","金","土"})*{1,2,3,4,5,6,7}),1,""),IF(B6<DAY($A$2),B6+1,""))
と入力し

C6をD6:I6にコピーする

B6:I6をB7:I16にコピーする

以上です


使い方ですが
C5のセルをクリックするとセルの右に「▼」が現れますので
それを更にクリックします
するとプルダウンメニューが現れますので
その中よりカレンダーとして表示させたい先頭の曜日をお選びください

選ぶとサッ とカレンダーが1行置きに現れると思います

基本は当月表示で
月が変わると自動的にカレンダー表示も変わります

で、
B1のセルに何か数字を入れると…

例えば
1と入れると1ヶ月後のカレンダーが
-1と入れると1ヶ月前のカレンダーが表示されます

数字は正の整数か負の整数なら何でも構いません

カレンダーの奇数行には式が入っていますが
「31以下の正の整数」以外なら何に書き換えても支障ありませんのでご自由にメモ欄としてお使いくさい

如何でしょうか?
こんな感じでよかったでしょうか?
    • good
    • 0

[ANo.5この回答への補足]に対する回答、



》 if関数を使って…

なぜ「if関数」に固執するのですか?

ステップ3を次のようにすればOKかと。
3.セル A3 を選択して、条件付き書式で次のように設定
  条件1: 数式が =MONTH(A3)<>MONTH($A$1) フォント色 白
  条件2: 数式が =$A$1=""         フォント色 白
    • good
    • 0
この回答へのお礼

 なるほどー条件付書式はこんな使い方もあるのですね^^すごい勉強になりました。目的としたものを作ることができました。ありがとうございました^^

お礼日時:2006/12/12 10:08

「3交代勤務」等の特殊なものを含まない「通常のカレンダーの配置」のみ。



1.セル A1 に 2006/12/1 と入力して m"月" と書式設定
2.セル A3 に次式を入力して d と書式設定
  =DATE(YEAR($A$1),MONTH($A$1),DAY($A$1))-WEEKDAY(DATE(YEAR($A$1),MONTH($A$1),DAY($A$1)))+1+7*((ROW(A2)-ROW($A$2)+1)-1)+(COLUMN(A2)-COLUMN($A$2))
3.セル A3 を選択して、条件付き書式で次のように設定
  数式が    =MONTH(A3)<>MONTH($A$1)
  フォント色  白
3.セル A3 を範囲 A3:G8 に複写

  A   B   C   D   E   F   G
1 12月
2 日  月  火  水  木  金  土
3                 1   2
4  3   4   5   6   7   8   9
5 10  11  12  13  14  15  16
6 17  18  19  20  21  22  23
7 24  25  26  27  28  29  30
8 31

この回答への補足

たいへんわかりやすく、作成することができました^^ありがとうございます。ついでなのですが、A1のセルが空欄の場合は日付にエラー表示がでると思うのですが、if関数を使ってA1が空欄の場合は空欄にしたいのですが、どのように書いたらいいのか教えていただけませんか?

補足日時:2006/12/11 11:01
    • good
    • 0

例えばB1に年、C1に月の数字を入れます。


A5に
=DATE($B$1,$C$1,(ROW()-5)*7)-WEEKDAY(DATE($B$1,$C$1,(ROW()-5)*7)-1)+COLUMN()-1
と入れて、5行(A9まで)縦方向に式を複写します。(5週分)
A5:A9の式を横方向に式を複写します。(7日分)
書式ー条件付き書式ー数式がー式を
=MONTH(A5)<>$C$1
書式を文字のフォントの色を白に設定します(前月、次月が見えなくなります。または違う色や、文字を小さくして残すのも、良いかも。)
書式ーセルー表示形式で、「ユーザー定義」の「d」にして、日だけ表示させます。
200611

2930311234
567891011
12131415161718
19202122232425
262728293012

1式+2複写でできて、まず一番簡単なやり方でしょう。
    • good
    • 0
この回答へのお礼

 分かりやすく、やってみたらできました。ありがとうございました^^

お礼日時:2006/12/12 10:05

◆カレンダーを作成されるなら、一度下のURLを参考にしてください



参考URL:http://www.h3.dion.ne.jp/~sakatsu/
    • good
    • 0
この回答へのお礼

 こういったところもあるのですね。参考にさせていただきます^-^ありがとうございました。

お礼日時:2006/12/11 22:50
    • good
    • 0
この回答へのお礼

 こんなやり方があったのですね。すごい参考になりましたー^^ありがとうございます^^

お礼日時:2006/12/11 22:48

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