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

文章編號: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。