• ベストアンサー

Microsoft Excelでカレンダーを作りたい!

ご覧いただきありがとうございます。  Excelについての質問です。 今回、初めてMicrosoft offce Excel2007を使用しようとしているのですが、 どうしても分からないので知恵をお貸しください。 今回、カレンダー(?)を作ろうと思っているのですが、特殊なのを作ろうかと思っています。 まず左縦に年月日の『月』、上の横に『曜日』、それでその重なった所に日付が入るように したいのですが、方法が分かりません。 方法を教えて下さい!お願いします。

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

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

>初めてMicrosoft offce Excel2007を使用しようとしているのですが このコーナーの質問も始めてかな。 エクセルの質問をするときは エクセルには(ブック)シート、列行を表すセル番地というものがあります。そしてそのセルの値を問題にするのです。 ぜひ簡単な、模擬実例を質問に書いて、その上で必要な説明をしてください。 変わったカレンダーであればあるほど、具体的に書いてもらわないと判りにくい。 関数・VBA・操作などで作り上げますが、関数は詳しいのかな。 >左縦に 例えばA列に、とすべき >年月日の『月』、 A2 1 A3 2 A4 3 ・・・ と書くこと。 >上の横に たとえば第1行に 曜日、とかくこと ーーーー AーB-CーD・・   (第1行)月ー火ー水ー木ー金ー土ー日ー月ー4-7回の繰り返し? などと説明すること。 === この関数問題は過去に、近い多数の問題をやってないと、相当関数では難しいと思う。初心者の問題ではない。 結果 月 一日の曜日 日 月 火 水 木 金 土 日 月 1 3 1 2 3 4 5 6 2 6 1 2 3 3 7 1 2 3 4 3 1 2 3 4 5 6 7 5 5 1 2 3 4 5 6 1 1 2 3 4 5 6 7 8 9 7 3 1 2 3 4 5 6 7 以下の月略 ーー 式 B2セルに =WEEKDAY(DATE(2008,A2,1)) 下方向に12月行まで式を複写 ーー C2に=IF(COLUMN()-2>=$B2,COLUMN()-$B2-1,"") と入れて横方向に式を複写。 第42列程度まで複写必要(質問者が考えて) 2月以後も同じくC列の式を横方向に複写。 B列は式を複雑化させないために設けた。非表示にするとか。 === 難題点 そして月末日で日にち表示止めないといけない。 それで列数Column()-2が月末日数を越えたら空白を入れる。この式は上記の式を修正してIF関数を加える =IF(AND(COLUMN()-2>=$B2,COLUMN()-$B2-2<DAY(DATE(2008,$A2+1,1)-1)),COLUMN()-$B2-1,"") 左の方一部 27 28 29 30 31 24 25 26 27 28 29 23 24 25 26 27 28 29 27 28 29 30 25 26 27 28 29 30 31 29 30 27 28 29 30 31

nicodou
質問者

お礼

回答ありがとうございます。 お礼が遅れて申し訳ございません。 お陰様でカレンダーが完成しました! これからExcelの事について勉強していきます! 役に立つ回答、ありがとうございました!

その他の回答 (6)

回答No.7

要するによくある月曜~日曜の一週間が一行になるカレンダーが折 り返さずにずっと伸びていくだけなので、そんなに特殊でもないで すね。mike_gさんのレイアウトをお借りしましょう。 まずB2。私はここを =IF(WEEKDAY(DATE($A$1,A$2,1),2)=B$1,1,"") とします。実はB1:H1の曜日のセルには1~7の数値を入力して、書式 設定で月とか日と表示するように細工してます。これは条件書式を 使わないための工夫です。 次にC2。ここは =IF(ISNUMBER(B2),B2+1,IF(WEEKDAY(DATE($A$1,$A2,1),2)=C$1,1,"")) という感じで処理します。左隣がもう数値になってれば、余計な判 断はしないわけです。H2までドラッグします。これで第一週目は完 了です。I2:AC2の第二週~第四週は左隣に+1するだけでオッケー。 第五週から第六週の火曜までは月末の判断が必要です。AD2は、 =IF(AC2="","",IF(MONTH(DATE($A$1,$A2,AC2+1))=$A2,AC2+1,"")) としました。昨日の翌日がまだ今月なら~という判断に、そもそも 昨日がもうすでにアレなら余計なことは考えないってのが追加され た形です。第六週の火曜までドラッグします。 条件書式を使わないので他のソフトへペーストしても大丈夫です。 この作り方に祝日の処理を追加したものを昔ココログに書いたんだ けど、自分のところを紹介すると怒られるので…

noname#204879
noname#204879
回答No.6

   A   B  C  D  E  F  G  H  I  … AE AF AG AH AI AJ AK 1  2008年 月 火 水 木 金 土 日 月 … 火 水 木 金 土 日 月 2   1月    1  2  3  4  5  6  7 … 29 30 31 3   2月          1  2  3  4 … 26 27 28 29 4   3月            1  2  3 … 25 26 27 28 29 30 31 5   4月    1  2  3  4  5  6  7 … 29 30 6   5月        1  2  3  4  5 … 27 28 29 30 31 7   6月              1  2 … 24 25 26 27 28 29 30 8   7月    1  2  3  4  5  6  7 … 29 30 31 9   8月          1  2  3  4 … 26 27 28 29 30 31 10   9月  1  2  3  4  5  6  7  8 … 30 11  10月      1  2  3  4  5  6 … 28 29 30 31 12  11月            1  2  3 … 25 26 27 28 29 30 13  12月  1  2  3  4  5  6  7  8 … 30 31 0.範囲 B1:AM1 の左端から順に 月、火、水、…、水 を入力 1.セル B2 を選択して、次の[条件付き書式]を設定     数式が    =MONTH(B2)<>$A2     フォント色  白 2.セル B2 を[コピー]して、範囲 B2:AM13 に[貼り付け] 3.セル B2 に次式を入力して、此れを下方にズズーッとドラッグ&ペースト     =DATE($A$1,$A2,1)-WEEKDAY(DATE($A$1,$A2,1),3) 4.セル C2 に式 =B2+1 を入力して、此れを下方にズズーッとドラッグ&ペースト 5.範囲 C2:C13 を右方にズズーッとドラッグ&ペースト

  • kuma3f
  • ベストアンサー率63% (28/44)
回答No.5

思われていることと違っていましたらすみません。 またExcel2007を持っていないのでうまく動くかは保障できませんが、参考までに下記のコードをマクロに貼り付けて実行してみてください。(Excel2003では動きます) 新規Bookで作成してもらったらよいです。 Dim 縦カウント, 横カウント, 年, 月, 曜日, 日にち, 月末日 As Long Dim 日付 As Date Sheets("sheet1").Cells.ClearContents 縦カウント = 1 横カウント = 2 Do Sheets("sheet1").Cells(縦カウント, 横カウント) = "日" Sheets("sheet1").Cells(縦カウント, 横カウント + 1) = "月" Sheets("sheet1").Cells(縦カウント, 横カウント + 2) = "火" Sheets("sheet1").Cells(縦カウント, 横カウント + 3) = "水" Sheets("sheet1").Cells(縦カウント, 横カウント + 4) = "木" Sheets("sheet1").Cells(縦カウント, 横カウント + 5) = "金" Sheets("sheet1").Cells(縦カウント, 横カウント + 6) = "土" 横カウント = 横カウント + 7 Loop Until 横カウント > 43 年 = Val(InputBox("作成する年を入力してください。yyyy")) Sheets("sheet1").Cells(1, 1) = 年 & "年" Sheets("sheet1").Columns("A:AQ").Select Sheets("sheet1").Columns("A:AQ").EntireColumn.AutoFit Sheets("sheet1").Range("A1").Select 縦カウント = 縦カウント + 1 Do 横カウント = 1 月 = 縦カウント - 1 Sheets("sheet1").Cells(縦カウント, 横カウント) = 月 & "月" 日付 = 年 & "/" & 月 & "/" & "1" 曜日 = Weekday(日付) + 1 If 月 = 1 Or 月 = 3 Or 月 = 5 Or 月 = 7 Or 月 = 8 Or 月 = 10 Or 月 = 12 Then 月末日 = 31 If 月 = 4 Or 月 = 6 Or 月 = 9 Or 月 = 11 Then 月末日 = 30 If 月 = 2 Then 月末日 = 28 If 年 Mod 4 = 0 And 月 = 2 Then 月末日 = 29 日にち = 1 Do Sheets("sheet1").Cells(縦カウント, 曜日) = 日にち 曜日 = 曜日 + 1 日にち = 日にち + 1 Loop Until 日にち > 月末日 縦カウント = 縦カウント + 1 Loop Until 縦カウント > 13 参考までにマクロの作成手順です。(マイクロソフトのホームページ) http://office.microsoft.com/ja-jp/excel/HP100141111041.aspx#CreateMacroVBA

nicodou
質問者

お礼

ご回答、感謝しています。 お陰様でカレンダーが完成しました。 本当にありがとうございました。

  • koko88okok
  • ベストアンサー率58% (3839/6543)
回答No.4

1から作るのは大変なので、Web上にある「万年カレンダー」の作り方を参考にされては如何でしょうか? 「万年カレンダーを作ろう」 http://popurap.fool.jp/help/nikki/dekiru/karenda.html 「Excel関数で万年カレンダーを作る」 http://sunrise2001.dip.jp/coo/fncCalen.html 「万年カレンダー」 http://gakushuu.boy.jp/mannen_calender.htm

  • hayasi456
  • ベストアンサー率40% (2402/5878)
回答No.2

追伸 月、曜日はウィンドウ枠の固定もしくは分割を利用すると良いでしょう。 http://www.eurus.dti.ne.jp/~yoneyama/Excel2007/excel2007-window.html#wakukotei

  • hayasi456
  • ベストアンサー率40% (2402/5878)
回答No.1

A1に年 A2からA13まで縦に1から12(月) B1から横に曜日 もしくは A列(縦)は年 B2から縦に月 C1から横に曜日 これだと年が変わっても続けられます。 連続した文字の入力はオートフィルを使うと楽です。 http://www.eurus.dti.ne.jp/~yoneyama/Excel2007/excel2007-input2.html#renzokumoji 月は1月と入力してオートフィルして下さい。

関連するQ&A

専門家に質問してみよう