[[20190508122243]] 『カレンダー作成』(る) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『カレンダー作成』(る)

エクセルで年間カレンダー(曜日なし)の作り方を教えて下さい。
1月1日のセルに入力ですべて(1月〜12月31日)表示になる設定。

2019年

       1月 2月 3月・・・12月
       1日
       2日
       3日
       ・
       ・
       ・
      31日

< 使用 Excel:Excel2010、使用 OS:unknown >


 こんにちは^^きっともっとスマートな方法が有ると思いますが。。。
処理対象シート名[ Sheet1 ]
Option Explicit
Sub main()
    Dim Td As Date
    Dim i As Long
    Dim y As Long
    Dim x As Long
    y = 1: x = 1
    With Worksheets("Sheet1")
        .Cells.Clear
        Td = DateSerial(2019, 1, 1)
        .Cells(y, x) = Td
        y = y + 1
        For i = 1 To 365
            .Cells(y, x) = Format(Td, "m/d")
            y = y + 1
            Td = Td + 1
            If Format(.Cells(y, x).Offset(-1).Value, "m") <> Format(Td, "m") Then
               If Format(Td, "mmdd") = "0101" Then Exit For
               x = x + 1: y = 1
               .Cells(y, x) = Td
               y = y + 1
            End If
        Next
        .Rows(1).SpecialCells(2).NumberFormatLocal = "m月"
    End With
End Sub
(隠居じーさん) 2019/05/08(水) 14:19

 数式案です。

 Sub test()
  ActiveSheet.Cells(1, 1).Value = Year(Date)
  ActiveSheet.Cells(2, 1).Resize(, 12).Formula = "=column()&" & """" & "月" & """"
  ActiveSheet.Cells(3, 1).Resize(31, 12).Formula = "=IF(MONTH(DATE(YEAR(TODAY()),COLUMN(),ROW()-2))<>COLUMN()," & """" & """" & ",TEXT(DATE(YEAR(TODAY()),COLUMN(),ROW()-2)," & """" & "d" & """" & "))"
 End Sub

(カリーニン) 2019/05/08(水) 15:07


 私の数式案は、各日付のセルは日付データに
 なってないので注意が必要です
(カリーニン) 2019/05/08(水) 15:10

 ちょっと手を加えました。
 ※相変わらず日付データにはなってません。

 Sub test2()
  ActiveSheet.Cells(1, 1).Value = Year(Date)
  ActiveSheet.Cells(1, 1).NumberFormatLocal = "0年"
  ActiveSheet.Cells(2, 1).Resize(, 12).Formula = "=column()&" & """" & "月" & """"
  ActiveSheet.Cells(3, 1).Resize(31, 12).Formula = "=IF(MONTH(DATE($A$1,COLUMN(),ROW()-2))<>COLUMN()," & """" & """" & ",TEXT(DATE($A$1,COLUMN(),ROW()-2)," & """" & "D日" & """" & "))"
 End Sub
(カリーニン) 2019/05/08(水) 16:19

マクロが希望だったんですかね?

↓みたいなことだと思って書いてしまったので投稿します。

漠然としていてよく分かりませんが、
[2019/1/1] に 1を加算することで 2019/1/2 になりますから、
A2セルに入力するのであれば、A3セルに「=A2+1」でよいですよね。

この発想で、A4セルに「=A3+1」となるようにA3〜A32まで数式をフィルコピー。
さらにそのまま、L列までフィルコピー

B2セルに「=EDATE(A2,1)」と入力してL列までフィルコピー

A1セルに「=A2」と入力してL列までフィルコピー

セルの書式設定で 1行目の表示形式を「m"月"」
セルの書式設定で 2~32行目の表示形式を「d"日"」

あとは、31日までない月を探してその日をクリアすればいいんじゃないですか?
(数式で""にしてもよい。)

(もこな2) 2019/05/08(水) 19:25


A1 に年を入力
A2からL2に 1, 2, ・・・・12 と入力してある。
コマンドボタンを配置する。

 Private Sub CommandButton1_Click()
     Dim d As Date, y As Long

     With Range("A3:L33")
         .ClearComments
         .NumberFormatLocal = "d日"
     End With
     y = Range("A1").Value

     For d = DateSerial(y, 1, 1) To DateSerial(y, 12, 31)
         Cells(Day(d) + 2, Month(d)).Value = d
     Next
 End Sub

(hatena) 2019/05/08(水) 20:27


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.