顯示輸入日期為該月的第幾週

記事番号:040787

您可以在Kintone的應用程式中使用計算公式,計算輸入日期為該月的第幾週。
本文將介紹計算公式的設定範例。

前置作業

開啟[應用程式的設定]畫面的[表單]分頁,配置以下6個欄位。

  • (1)[日期]欄位
  • (2)[計算]欄位
  • (3)[計算]欄位
  • (4)[單行文字方塊]欄位
  • (5)[計算]欄位
  • (6)[單行文字方塊]欄位

各欄位的設定

開啟配置好的各欄位的設定畫面,設定欄位名稱、欄位代碼、計算公式。
關於欄位代碼

將各欄位設定如下,在(1)的欄位中輸入的日期為該月第幾週,將會在(6)的欄位中顯示。
(2)~(5)的欄位用於計算過程。

(1)[日期]欄位

此欄位用來輸入想計算為該月第幾週的日期。

  • [欄位名稱]:日期
  • [欄位代碼]:日期

此欄位不設定計算公式。

(2)[計算]欄位

此欄位只計算在(1)中輸入的日期的天數(進入該月後所經過的天數)。

  • [欄位名稱]:日的部分

  • [欄位代碼]:日的部分

  • [計算公式]:設定下列計算公式。

    內容已複製
    DATE_FORMAT(日期, "d", "Asia/Tokyo")

(3)[計算]欄位

此欄位根據在(1)中輸入的日期,以UNIX時間的格式(數値)計算該月第一日。

  • [欄位名稱]:該月第一日

  • [欄位代碼]:該月第一日

  • [計算公式]:設定下列計算公式。

    內容已複製
    日期-((日部分-1)*60*60*24)

(4)[單行文字方塊]欄位

此欄位根據在(3)中計算出的該月第一日,計算該日是星期幾。

  • [欄位名稱]:該月第一日星期數

  • [欄位代碼]:該月第一日星期數

  • [計算公式]:勾選[自動計算],並設定下列計算公式。

    內容已複製
    IF( ( ( (該月第一天 / 60 / 60 / 24) - 0) / 7 ) - ROUNDUP(( ( (該月第一天 / 60 / 60 / 24) - 0) / 7 ) , 0) = 0 , "週四",
    IF( ( ( (該月第一天 / 60 / 60 / 24) - 1) / 7 ) - ROUNDUP(( ( (該月第一天 / 60 / 60 / 24) - 1) / 7 ) , 0) = 0 , "週五",
    IF( ( ( (該月第一天 / 60 / 60 / 24) - 2) / 7 ) - ROUNDUP(( ( (該月第一天 / 60 / 60 / 24) - 2) / 7 ) , 0) = 0 , "週六",
    IF( ( ( (該月第一天 / 60 / 60 / 24) - 3) / 7 ) - ROUNDUP(( ( (該月第一天 / 60 / 60 / 24) - 3) / 7 ) , 0) = 0 , "週日",
    IF( ( ( (該月第一天 / 60 / 60 / 24) - 4) / 7 ) - ROUNDUP(( ( (該月第一天 / 60 / 60 / 24) - 4) / 7 ) , 0) = 0 , "週一",
    IF( ( ( (該月第一天 / 60 / 60 / 24) - 5) / 7 ) - ROUNDUP(( ( (該月第一天 / 60 / 60 / 24) - 5) / 7 ) , 0) = 0 , "週二",
    IF( ( ( (該月第一天 / 60 / 60 / 24) - 6) / 7 ) - ROUNDUP(( ( (該月第一天 / 60 / 60 / 24) - 6) / 7 ) , 0) = 0 , "週三","不適用"
    )
    )
    )
    )
    )
    )
    )

(5)[計算]欄位

此欄位根據在(4)中計算出的該月第一日的星期數,計算在(2)中計算出的日期為該月第幾週。

  • [欄位名稱]:週數

  • [欄位代碼]:週數

  • [計算公式]:設定下列計算公式。此計算公式中以週日為一週的開始為例。

    內容已複製
    IF(該月第一天星期數="週日", IF(日的部分<=7, 1, IF(ROUNDUP((日的部分-7)/7)-ROUNDDOWN((日的部分-7)/7)=0, ROUNDDOWN((日的部分-7)/7)+1, ROUNDDOWN((日的部分-7)/7)+2)),
    IF(該月第一天星期數="週一", IF(日的部分<=6, 1, IF(ROUNDUP((日的部分-6)/7)-ROUNDDOWN((日的部分-6)/7)=0, ROUNDDOWN((日的部分-6)/7)+1, ROUNDDOWN((日的部分-6)/7)+2)),
    IF(該月第一天星期數="週二", IF(日的部分<=5, 1, IF(ROUNDUP((日的部分-5)/7)-ROUNDDOWN((日的部分-5)/7)=0, ROUNDDOWN((日的部分-5)/7)+1, ROUNDDOWN((日的部分-5)/7)+2)),
    IF(該月第一天星期數="週三", IF(日的部分<=4, 1, IF(ROUNDUP((日的部分-4)/7)-ROUNDDOWN((日的部分-4)/7)=0, ROUNDDOWN((日的部分-4)/7)+1, ROUNDDOWN((日的部分-4)/7)+2)),
    IF(該月第一天星期數="週四", IF(日的部分<=3, 1, IF(ROUNDUP((日的部分-3)/7)-ROUNDDOWN((日的部分-3)/7)=0, ROUNDDOWN((日的部分-3)/7)+1, ROUNDDOWN((日的部分-3)/7)+2)),
    IF(該月第一天星期數="週五", IF(日的部分<=2, 1, IF(ROUNDUP((日的部分-2)/7)-ROUNDDOWN((日的部分-2)/7)=0, ROUNDDOWN((日的部分-2)/7)+1, ROUNDDOWN((日的部分-2)/7)+2)),
    IF(該月第一天星期數="週六", IF(日的部分<=1, 1, IF(ROUNDUP((日的部分-1)/7)-ROUNDDOWN((日的部分-1)/7)=0, ROUNDDOWN((日的部分-1)/7)+1, ROUNDDOWN((日的部分-1)/7)+2)), ""
    )
    )
    )
    )
    )
    )
    )

    若想將一週的開始設定為週一,請將計算公式中的「該月第一日星期數="週日"」變更為「該月第一日星期數="週一"」。計算公式中的其他星期也請同樣變更為向後推移一天的星期。
    若想詳細了解計算公式,請參閱以下項目。
    (5)的計算公式的解說

(6)[單行文字方塊]欄位

此欄位根據在(5)中計算出的週數,以「幾年幾月的第幾週」的格式顯示在(1)中輸入的日期為該月第幾週。

  • [欄位名稱]:第幾週

  • [欄位代碼]:第幾週

  • [計算公式]:勾選[自動計算],並設定下列計算公式。

    內容已複製
    DATE_FORMAT(日期, "YYYY年MM月的", "Asia/Tokyo")&"第"&週數&"週"

(5)的計算公式的解說

(5)欄位根據在(4)中計算出的該月第一日的星期數,計算在(2)中計算出的日期為該月第幾週。

由於此計算公式使用IF函數,根據條件不同,之後的流程會出現分支。

分支1:日期是否超過第一週的天數

第一週的天數根據該月第一日是星期幾決定。
(5)的計算公式中以週日為一週的開始為例。

  • 例:一週的開始為週日時
    • 該月第一日為「週一」時,第一週有6天。
    • 該月第一日為「週二」時,第一週有5天。

以在(2)中計算出的日期是否超過此第一週的天數,來判斷日期是在第一週還是第二週以後。

  • 日期未超過第一週的天數時
    判斷日期為第一週。
    在(5)的欄位中,顯示第一週的「1」。
  • 日期超過第一週的天數時
    判斷日期為第二週以後。
    此時將繼續計算該日期在第二週以後的哪一週。

分支2:日期若在第二週以後會是在哪一週

日期超過第一週的天數時,計算該日期在第二週以後的哪一週。

在(2)中計算出的日期減去第一週的天數,計算出從第一週的最後一天起經過的天數。
將此天數除以一週天數的「7」。

無餘數可整除時

商數加上第一週份的「1(週)」,計算出的數為該日期在的週。
在(5)的欄位中,顯示商數加上1的數。

例:該月第一日為週一,輸入日期為「13日」時
該月第一日為週一時,第一週有6天。
日期的「13」減去第一週天數「6(天)」,計算出從第一週的最後一天起經過的天數為「7(天)」。
「7(天)」除以「7(天/週)」,計算結果為「1(週)餘0(天)」。
商數的「1(週)」加上第一週份的「1(週)」,計算出該日期在第二週。

有餘數無法整除時

商數加上有餘數天數的週份與第一週份的「2(週)」,計算出的數為該日期在的週。
在(5)的欄位中,顯示商數加上2的數。

例:該月第一日為週一,輸入日期為「15日」時
該月第一日為週一時,第一週有6天。
日期的「15」減去第一週天數「6(天)」,計算出從第一週的最後一天起經過的天數為「9(天)」。
「9(天)」除以「7(天/週)」,計算結果為「1(週)餘2(天)」。
商數的「1(週)」加上有餘數天數的週份與第一週份的「2(週)」,計算出該日期在第三週。

參考:圖表功能的使用範例

若想個別依據為「幾年幾月的幾週」匯總記錄,請在圖表設定的[分組項目]中,指定上述(6)中設定的計算該月第幾週的欄位。

  • 圖表的設定範例 截圖:[匯總]畫面

  • 匯總結果的範例截圖:匯總結果的確認畫面

此外,若有[日期]欄位,可以使用圖表功能,依各年的第幾週匯總記錄。
在圖表設定的[分組項目]中,將[日期]欄位指定為[以週為單位]
例如,[日期]欄位的值為「2022年3月30日」時,由於是2022年的第13週,記錄會匯總為「2022 13」。

參考:應用程式範本

您可以透過以下連結下載應用程式範本,範本中包含此頁面介紹的欄位設定及能以「幾年幾月的第幾週」匯總的圖表設定。

應用程式範本:what_week_en.zip

點選連結下載範本檔案(zip)後不須解壓縮,請直接將檔案匯入Kintone。