動態每月 Excel 日曆

動態每月 Excel 日曆

我想建立一個月曆(每張 1 個月),其中只有年份可以更改(因此日期)。我的日曆範本已經建立。我想要的只是添加一個公式,根據更改年份時的工作日更改日期。一週從週日開始

謝謝 !

答案1

這是我的想法。根據需要調整說明以適合您自己的範本。


指示

  1. 將 A1 設定為您想要表示的月份的年份值。
    • 對於這篇文章的第一次修訂日期,它將是「2015」。
  2. 將 A2 設定為您想要表示的月份的全名。
    • 對於這篇文章的第一次修訂日期,它將是“五月”。
  3. 在 A3:G3 中填寫星期幾,從 A3 中的「星期日」開始,到 G3 中的「星期六」結束。
  4. 將下列公式代入A4:=IF(WEEKDAY(DATEVALUE(CONCATENATE($A$2," 1, ",$A$1)))=1,1,"")
    • 根據月份/年份,此公式可能會在此處傳回空白值。 (2015 年 5 月將會如此。)這是正常的。
  5. 將下列公式代入B4:=IF(A4="",IF(WEEKDAY(DATEVALUE(CONCATENATE($A$2," 1, ",$A$1)))=COLUMNS($A$4:B4),1,""),A4+1)
    • 根據月份/年份,此公式可能會在此處傳回空白值。 (2015 年 5 月將會如此。)這是正常的。
  6. 將公式從 B4 複製到儲存格 C4:G4。 Excel 應根據需要自動調整公式中的儲存格參考。
    • 此時,公式在第 4 行的一個單元格中的計算結果應為“1”,並且後面的每個單元格應返回高於前一個單元格的增量。 「1」之前的儲存格應為空白。對於 2015 年 5 月,您應該在 A4:E4 中看到空白,在 F4(星期五)中看到“1”,在 G4(星期六)中看到“2”
  7. 將下列公式代入A5:=IF(ISERROR(DATEVALUE(CONCATENATE($A$2," ",G4+1,", ",$A$1))),"",G4+1)
    • 公式結果應比G4的值高1。
  8. 將 A5 中的公式複製到儲存格 A6:A9 下。 Excel 應根據需要自動調整公式中的儲存格參考。
    • A6:A9 目前將評估為空白。這是正常的。
  9. 將下列公式代入B5:=IF(ISERROR(DATEVALUE(CONCATENATE($A$2," ",A5+1,", ",$A$1))),"",A5+1)
    • 公式結果應比A5的值高1。
  10. 將 B5 中的公式複製到儲存格 C5:G5 中。 Excel 應根據需要自動調整公式中的儲存格參考。
    • 第 5 行中的公式現在應計算為從 A 列到 G 列遞增的一組數字。
  11. 選擇 B5:G5 並將這些儲存格向下複製到 B6:G9。 Excel 應根據需要自動調整公式中的儲存格參考。
    • 此時,日曆應適當填充給定月份。該月第一天之前和該月最後一天之後的單元格應為空白。
    • 對於某些月份,例如 2015 年 1 月,第 9 行將完全空白。這個是正常的。

功能

  • 連接將文字字串連接在一起。
  • 日期值傳回文字字串表示的日期的 Excel「序號」值。如果字串與已知的日期格式不匹配,或者字串不代表實際日期(例如:「January 32, 2015」或「February 29, 2015」),它將傳回錯誤。
  • 工作日傳回介於 1 到 7 之間的值,表示給定日期的工作日。
  • 傳回指定單元格數組所跨越的列數。
  • 如果允許您根據指定公式的計算結果是 TRUE 還是 FALSE 傳回選定的值(或公式結果)。
  • 錯誤如果給定公式導致錯誤,則傳回 TRUE;如果公式未產生錯誤,則傳回 FALSE。

公式解釋

  • A4組合 A1 和 A2 中的信息以產生表示該月第一天的文字字串。 (例如:「2015 年 5 月 1 日」。)然後,它檢查該日期的工作日是否為星期日。如果是星期日則回傳 1,否則回傳空白。

  • B4:G4檢查前面的儲存格是否為空白。如果不是,則傳回比前一個儲存格高一的值。如果前一個儲存格為空,則檢查目前工作日是否與給定月份的第一天相符 - 如果符合則傳回 1,否則傳回空白。

  • A5:A9將上一行末尾的值加 1,然後將結果與 A1 和 A2 中的資訊組合以形成日期字串。檢查日期是否確實存在。如果是,則傳回月份中的日期數字,如果不是,則傳回空白。

  • B5:G9將前一個儲存格的值加 1,然後將結果與 A1 和 A2 中的資訊組合以形成日期字串。檢查日期是否確實存在。如果是,則傳回月份中的日期數字,如果不是,則傳回空白。


螢幕截圖

2015 年 5 月的輸出範例。

在此輸入影像描述

答案2

New Workbook從模板創建。Calendar sunday搜尋字串。

「日曆星期日」搜尋字串

選擇天區並按Manage Rules菜單Conditional Formatting

編輯 Excel 格式規則選單

添加New Rule

Excel 規則格式對話框

新增規則等於=TODAY()

Excel 新增格式規則等於“=TODAY()”

結果:

Excel 格式化規則 日曆結果

答案3

在指定的儲存格中輸入這些項目:

A1: 2015 B1: 第一天 C1: =DATEVALUE(A1&"-"&A2&"-01")
A2: 5 B2: 週-週日 C2: =C1-WEEKDAY(C1;2)

C4: =TEXT(COLUMNS($A$4:A4);"Ddd")
C5: =IF(TEXT($C$2-1+COLUMNS($A$4:A4)+(ROWS($A$4:A4)-1)*7;"YYYY-MM")=TEXT($C$1; "YYYY-MM");$C$2-1+列($A$4:A4)+(行($A$4:A4)-1)*7;"")

然後複製 C4 和 C5 以填充七 (7) 個單元格寬度。
隨後是第 7 行的副本,總共填入六 (6) 行。
選取最後 6 行中的儲存格,然後按CTRL+ 1,按一下左側面板上的“自訂”,然後輸入D自訂格式。

結果將如下所示:

2015年第一天 2015-05-01              
5週-週日 2015-04-26              

週日週一週二週三週四週五週六
                    1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31                      

這適用於 Excel、LibreOffice 以及可能的任何其他電子表格。

答案4

Linux:

開啟終端,然後鍵入:

ncal 2015並按ENTER(出現$提示時)。

輸出將如下所示:

                                  2015
    January           February          March             April             
Su     4 11 18 25     1  8 15 22        1  8 15 22 29        5 12 19 26   
Mo     5 12 19 26     2  9 16 23        2  9 16 23 30        6 13 20 27   
Tu     6 13 20 27     3 10 17 24        3 10 17 24 31        7 14 21 28   
We     7 14 21 28     4 11 18 25        4 11 18 25        1  8 15 22 29   
Th  1  8 15 22 29     5 12 19 26        5 12 19 26        2  9 16 23 30   
Fr  2  9 16 23 30     6 13 20 27        6 13 20 27        3 10 17 24      
Sa  3 10 17 24 31     7 14 21 28        7 14 21 28        4 11 18 25      

    May               June              July              August            
Su     3 10 17 24 31     7 14 21 28        5 12 19 26        2  9 16 23 30
Mo     4 11 18 25     1  8 15 22 29        6 13 20 27        3 10 17 24 31
Tu     5 12 19 26     2  9 16 23 30        7 14 21 28        4 11 18 25   
We     6 13 20 27     3 10 17 24        1  8 15 22 29        5 12 19 26   
Th     7 14 21 28     4 11 18 25        2  9 16 23 30        6 13 20 27   
Fr  1  8 15 22 29     5 12 19 26        3 10 17 24 31        7 14 21 28   
Sa  2  9 16 23 30     6 13 20 27        4 11 18 25        1  8 15 22 29   

    September         October           November          December          
Su     6 13 20 27        4 11 18 25     1  8 15 22 29        6 13 20 27   
Mo     7 14 21 28        5 12 19 26     2  9 16 23 30        7 14 21 28   
Tu  1  8 15 22 29        6 13 20 27     3 10 17 24        1  8 15 22 29   
We  2  9 16 23 30        7 14 21 28     4 11 18 25        2  9 16 23 30   
Th  3 10 17 24        1  8 15 22 29     5 12 19 26        3 10 17 24 31   
Fr  4 11 18 25        2  9 16 23 30     6 13 20 27        4 11 18 25      
Sa  5 12 19 26        3 10 17 24 31     7 14 21 28        5 12 19 26      

....目前日期標有“反向區塊”編號。複製並貼上為文字。
所需的工作量取決於您使用的工具。


編輯:在 Bash shell 提示字元下鍵入;
$ y=2015; for (( i=1 ; i<13 ; i++)) do cal $i $y ; done | sed -re 's/([^ ]+ 2015|[a-zåäö]{2}|[ 0-9]{2} )/"\1",/g' | sed -re 's/"\,[ ]*$/"/' >calendar-$y.csv

建立可載入到任何電子表格中的 CSV 檔案。更改y=2015以反映您希望為其建立日曆的年份。

相關內容