你可以使用日期與時間公式來取得日期與時間相關資料,例如傳回年月日、時間、指定工作日等等…
以下列出所有支援的公式。公式請一律用大寫表示!
公式 | 敘述 |
---|---|
TODAY() | 傳回目前日期。如需做為每日公式重算的參照欄位,建議使用 TODAYTZ() 代替 TODAY() |
TODAYTZ() | 傳回根據帳號設定中公司所在時區的目前日期 |
NOW() | 傳回目前日期和時間 |
NOWTZ() | 傳回根據帳號設定中公司所在時區的目前日期和時間 |
EDATE(start_date, months) | 傳回代表日期的連續數字,為指定時間(start_date)之前或之後幾個月份(months)該日期的數字 |
EOMONTH(start_date, months) | 傳回代表指定日期(start_date)之前或之後月份(months)最後一天日期的連續數字 |
YEAR() | 傳回日期欄位的年份 |
MONTH() | 傳回日期欄位的月份 |
DAY() | 傳回日期欄位的日 |
DATE(year,month,day) | 結合三個參照數字欄位的值,回傳一個日期。為避免混淆,年份的欄位請使用四位數的值 |
WEEKDAY() | 傳回一週內的第幾天,以數字顯示從第 1 天(星期天)到第 7 天(星期六) |
WORKDAY(start_date,days,["holidays"], [makeup_workdays]) | 會傳回代表日期 (起始日期) 不包含週末及指定假日(以及指定哪幾天是工作日)之前或之後指定工作日數的日期。查看詳細內容 |
WORKDAY.INTL(start_date,days,[weekend_no],["holidays"], [makeup_workdays]) | 使用參數指出哪幾天和多少天是週末(及指定哪幾天是工作日),以傳回代表日期 (起始日期) 之前或之後指定工作日數的日期。查看詳細內容 |
NETWORKDAYS(start_date,end_date,["holidays"], [makeup_workdays])) | 會傳回 start_date 與 end_date 間不包含假日(週末、指定假日)以及指定哪幾天是工作日的全部工作日數。查看詳細內容 |
NETWORKDAYS.INTL(start_date,end_date,[weekend_no],["holidays"], [makeup_workdays]) | 使用參數指出哪幾天和多少天是週末(及指定哪幾天是工作日),以傳回兩個日期之間的所有工作日數。查看詳細內容 |
ISOWEEKNUM(date) | 計算該日期為該年的第幾週,星期一為該週第一天。 |
WEEKNUM(serial_number,[return_type]) | 計算該日期為該年的第幾週,每週起始日可以自訂。查看詳細內容 |
DATEVALUE(date_text, date_format) | 套用在日期(時間)欄位,將參照的字串轉成日期(時間)值回傳,「date_text」要是固定的日期字串或參照的字串欄位,「date_format」要是參照的日期字串格式。例如 A1 字串的欄位值是「2019/02/01」,希望可以將此轉成日期欄位值的話,可在日欄位套用公式「DATEVALUE(A1,"yyyy/MM/dd")」來取得轉換後的結果 |
HOUR() | 此公式支援三種用法: 1. 參數帶入 0-1,傳回 24 小時的比例。例如:HOUR(0.5)=12。 2. 參數帶入日期欄位,傳回該欄位的小時。例如:A9 欄位值為 18:11:19,HOUR(A9)=18。 3. 參數帶入日期字串,傳回字串中的小時。例如:HOUR("2020/10/13 17:34:56")=17 |
MINUTE() | 此公式支援三種用法: 1. 參數帶入 0-1,傳回 60 分鐘的比例。例如:MINUTE(0.5)=30。 2. 參數帶入日期欄位,傳回該欄位的分鐘。例如:A9 欄位值為 18:11:19,MINUTE(A9)=11。 3. 參數帶入日期字串,傳回字串中的分鐘。例如:MINUTE("2020/10/13 17:34:56")=34 |
SECOND() | 此公式支援三種用法: 1. 參數帶入 0-1,傳回 60 秒的比例。例如:SECOND(0.75)=45。 2. 參數帶入日期欄位,傳回該欄位的秒。例如:A9 欄位值為18:11:19,SECOND(A9)=19。 3. 參數帶入日期字串,傳回字串中的秒。例如:SECOND("2020/10/13 17:34:56")=56。 |
TIME(hour, minute, second) | 傳回特定時間的小數,所傳回的小數點數字是介於 0 到 0.99988426 之間的值,代表自 0:00:00 到 23:59:59 的時間。
Hour 代表小時的數字,範圍從 0 到 32767。任何比 23 大的值將會除於 24,且餘數視為小時值。例如:TIME(27,0,0) = TIME(3,0,0) = 0.125 或 3:00 AM。 Minute 代表分鐘的數字,範圍從 0 到 32767。任何大於 59 的值將會轉換成小時和分鐘。例如:TIME(0,750,0) = TIME(12,30,0) = 0.520833 或 12:30 PM。 Second 代表秒鐘的數字,範圍從 0 到 32767。任何大於 59 的值將會轉換成小時、分鐘和秒鐘。例如:TIME(0,0,2000) = TIME(0,33,22) = 0.023148 或 12:33:20 AM。 |
會以天數作為日期的增減:如果 A1 是日期欄位,A1+7 的日期則為 A1 的後七天。
另一個常用的日期公式是計算年齡:如果 A1 為出生年月日,你可以設定公式「(TODAY()-A1)/365.25」,來顯示目前年齡,年齡的欄位種類記得選擇數值,才能夠正確用數值來做公式運算。
會需要都是時間欄位(格式 HH:mm) 或搭配數字欄位來做運算。
例如 A1 為開始時間(格式 HH:mm),A2 為結束時間(格式 HH:mm),計算開始到結束的時間有兩種作法:
A3 時間計算欄位(格式 HH:mm)可套用公式「A2-A1」 ; 或是 A3 如果為數字欄位(格式 0.0),則可套用公式「(A2-A1)/60」。
注意:
(1) 公式所參照的時間欄位皆不可為空值,否則公式將無法觸發(無法用一個時間加上或減去空值來計算時間)。若計算欄位會有空值的情況,建議將欄位格式改為數字欄位,這樣欄位為空值的情況下,也可以順利觸發公式。
範例: A1 為開始時間(格式 HH:mm), A2 為耗費時間(格式 HH:mm),想要透過公式 A2+A1 計算出 A3 結束時間(格式 HH:mm),但如果 A2 在資料中有可能為空值,則 A3 的公式會無法觸發導致欄位也變成空值。若將 A2 的耗費時間改為數字欄位(代表計算耗費幾分鐘),即使 A2 為空值的情況下, A3 也可以顯示欄位內容。
(2) 以上時間計算方式只適用於同一天內的時間計算,如果有跨日,例如晚上 10 點到早上 4 點,就必須用下面的方法:
時間欄位必須是包含日期的格式(例如 yyyy/MM/dd HH:mm),計算欄位要是數字欄位(格式 0.0),A1 為開始日及時間(yyyy/MM/dd HH:mm),A2 為結束日及時間(yyyy/MM/dd HH:mm),則時間計算欄位 A3(數字格式0.0) 套用公式「(A2-A1)*24」。
套用在日期欄位,會傳回代表日期(起始日期)之前或之後指定工作日數的日期。工作日不包含週末、週日以及假日(但包含指定的工作日)。 您可以在計算發票到期日、預期遞送時間或工作日數時,使用 WORKDAY 來排除週末或假日,但包含指定的工作日。
公式 | 語法 |
---|---|
WORKDAY | WORKDAY(start_date,days,["holidays"], ["makeup_workdays"]) |
WORKDAY 需要包含下列參數:
Start_date:是必要的,代表開始日期的日期。
Days:是必要的,代表 start_date 之前或之後的非週末和非假日的天數。正值代表未來的日期;負值代表過去的日期。
Holidays:是選擇性的,這是要從工作行事曆中排除之一個或多個日期的選擇性清單,例如國定假日。此清單要是代表日期之序列值的陣列常數。
Makeup_workdays:是選擇性的,這是要從工作行事曆中要包含之一個或多個日期的選擇性清單,例如補班日。此清單要是代表日期之序列值的陣列常數。
範例 1:
日期欄位套用公式「WORKDAY(A1,A2,["2017/06/16","2017/06/19"])」
假設 A1 的日期值為 2017/06/15,A2 的數字為 9,指定不計算在內的日期為 「2017/06/16」 跟 「2017/06/19」,則從開始日期之後不包括週末以及指定的假日的第九天計算出來的結果會是「2017/06/30」。
範例 2:
日期欄位套用公式「WORKDAY(A1,A2,["2017/06/16","2017/06/19"],["2017/06/24"])」
假設 A1 的日期值為 2017/06/15,A2 的數字為 9,指定不計算在內的日期為 「2017/06/16」 跟 「2017/06/19」,但指定「2017/06/24」這個禮拜六為工作日,則從開始日期之後不包括週末以及指定的假日,但是包括指定工作日的第九天計算結果會是「2017/06/29」。
備註:在代入holidays 或 makeup_workdays 參數時,若不想在每一張表單各自設定,希望全資料庫可以統一日期,可以定義一個「陣列」的全域常數並代入公式中,詳細說明請參考這篇說明。
套用在日期欄位,使用參數指出哪幾天和多少天是週末及指定哪幾天是工作日,會傳回起始日期之前或之後指定工作日數的日期。工作日不包含週末、假日,但包含指定工作日。可以用於計算發票到期日、預期遞送時間或工作日數時。
公式 | 語法 |
---|---|
WORKDAY.INTL | WORKDAY.INTL(start_date,days,[weekend_no],["holidays"], ["makeup_workdays"]) |
WORKDAY.INTL 需要包含下列參數:
Start_date:是必要的,代表開始日期的日期。
Days:是必要的,代表 start_date 之前或之後的非週末和非假日的天數。 正值代表未來的日期;負值代表過去的日期。
Weekend_no:是選擇性的,若週末日為非週六及週日時,可參考下方表格來帶入相對應 Weekend 數字。
Holidays:是選擇性的,這是要從工作行事曆中排除之一個或多個日期的選擇性清單,例如國定假日。此清單要是代表日期之序列值的陣列常數。
Makeup_workdays:是選擇性的,這是要從工作行事曆中要包含之一個或多個日期的選擇性清單,例如補班日。此清單要是代表日期之序列值的陣列常數。
範例 1:
日期欄位套用公式「WORKDAY.INTL(A1,A2,2,["2017/06/16","2017/06/19"])」
假設 A1 的日期值為 2017/06/15,A2 的數字為 9,以星期日及星期一作為週末,指定不計算在內的日期為「2017/06/16」跟「2017/06/19」,則從開始日期之後不包括週末及指定假日的第九天計算結果會是「2017/06/29」。
備註:在代入holidays 或 makeup_workdays 參數時,若不想在每一張表單各自設定,希望全資料庫可以統一日期,可以定義一個「陣列」的全域常數並代入公式中,詳細說明請參考這篇說明。
套用在數字欄位,會傳回 start_date 與 end_date 間的全部工作日數。工作日不包括週末與任何指定的假日,但包含指定工作日。使用 NETWORKDAYS,來根據某段期間內的工作天數計算員工薪資。
公式 | 語法 |
---|---|
NETWORKDAYS | NETWORKDAYS(start_date, end_date, ["holidays"], ["makeup_workdays"]) |
NETWORKDAYS 需要包含下列參數:
Start_date:是必要的,代表開始日期的日期。
End_date:是必要的,代表結束日期的日期。
Holidays:是選擇性的,這是要從工作行事曆中排除之一個或多個日期的選擇性清單,例如國定假日。此清單要是代表日期之序列值的陣列常數。
Makeup_workdays:是選擇性的,這是要從工作行事曆中要包含之一個或多個日期的選擇性清單,例如補班日。此清單要是代表日期之序列值的陣列常數。
範例 1:
數字欄位套用公式「NETWORKDAYS(E1,E2,['2017/10/04','2017/10/09','2017/10/10'])」
假設 E1 的日期值為 2017/10/01,E2 的日期值為 2017/10/31,指定不計算在內的日期為「2017/10/04、2017/10/09、2017/10/10」,則從開始日期至結束日其不包括週末以及指定的三天假日所計算出來的工作日數會是「19」天。
範例2:
數字欄位套用公式「NETWORKDAYS(E1,E2,['2017/10/04','2017/10/09','2017/10/10'],['2017/10/28','2017/10/29'])」
假設 E1 的日期值為 2017/10/01,E2 的日期值為 2017/10/31,指定不計算在內的日期為「2017/10/04、2017/10/09、2017/10/10」,並指定「2017/10/28 (六)、2017/10/29 (日)」為工作日,則從開始日期至結束日其不包括週末以及指定的三天假日,但是包括指定工作日所計算出來的工作日數會是「21」天。
備註:在代入holidays 或 makeup_workdays 參數時,若不想在每一張表單各自設定,希望全資料庫可以統一日期,可以定義一個「陣列」的全域常數並代入公式中,詳細說明請參考這篇說明。
套用在數字欄位,使用參數指出哪幾天和多少天是週末,以傳回兩個日期之間的所有工作日數。 工作日不包括週末與任何指定的假日,但包含指定的工作日。
公式 | 語法 |
---|---|
NETWORKDAYS.INTL | NETWORKDAYS.INTL(start_date,end_date,[weekend_no],["holidays"], ["makeup_workdays"]) |
NETWORKDAYS.INTL 需要包含下列參數:
Start_date和End_date:是必要的, 這是要計算差距的日期。 Start_date 可以早於、等於或晚於 end_date。
Weekend_no:是選擇性的,若週末日為非週六及週日時,可參考下方表格來帶入相對應Weekend數字。
Holidays:是選擇性的,這是要從工作行事曆中排除之一個或多個日期的選擇性清單,例如國定假日。此清單要是代表日期之序列值的陣列常數。
Makeup_workdays:是選擇性的,這是要從工作行事曆中要包含之一個或多個日期的選擇性清單,例如補班日。此清單要是代表日期之序列值的陣列常數。
範例:
數字欄位套用公式「NETWORKDAYS.INTL(E1,E2,11,['2017/06/16'])」
假設 E1 的日期值為 2017/06/01,E2 的日期值為 2017/06/30,指定週末日為星期日一天而已,並指定不計算在內的日期為「2017/06/16」,則從開始日期至結束日期,不包括週末(僅星期日)及指定不計算的日期,所計算出來的工作日數會是「25」天。
備註:在代入holidays 或 makeup_workdays 參數時,若不想在每一張表單各自設定,希望全資料庫可以統一日期,可以定義一個「陣列」的全域常數並代入公式中,詳細說明請參考這篇說明。
Weekend 參數對應表:
Weekend數字 | 代表週末日 |
---|---|
1或省略 | 星期六、星期日 |
2 | 星期日、星期一 |
3 | 星期一、星期二 |
4 | 星期二、星期三 |
5 | 星期三、星期四 |
6 | 星期四、星期五 |
7 | 星期五、星期六 |
11 | 僅星期日 |
12 | 僅星期一 |
13 | 僅星期二 |
14 | 僅星期三 |
15 | 僅星期四 |
16 | 僅星期五 |
17 | 僅星期六 |
使用此公式可以計算某日期為該年的第幾週,並且可以自訂每週起始日。
公式 | 語法 |
---|---|
WEEKNUM | WEEKNUM(Date,[return_type]) |
WEEKNUM 需要包含下列參數:
Date:填入要計算的日期欄位。
Return_type:用來設定一週的起始星期。如未指定,系統將預設為 1(即星期日為每週的第一天)。其他可用的參數如下表所示。
此函數使用兩種系統:
系統 1 :包含 1 月 1 日的該週是該年的第一週,因此會編號為第 1 週。
系統 2 :包含某年的第一個星期四的該週是該年的第一週,因此編號為第 1 週。 此系統是 ISO 8601 規定的方法,通常也是歐洲地區的週編號系統。
如果沒有特別的需求,建議使用系統 1 的參數即可。
起始日參數對應表:
Return_type | 一週的開始 | 系統 |
---|---|---|
1 或省略 | 星期日 | 1 |
2 | 星期一 | 1 |
11 | 星期一 | 1 |
12 | 星期二 | 1 |
13 | 星期三 | 1 |
14 | 星期四 | 1 |
15 | 星期五 | 1 |
16 | 星期六 | 1 |
17 | 星期日 | 1 |
21 | 星期一 | 2 |
範例:
假設 A2 是日期欄位,值為 2020/01/07(星期二),使用不同參數的 WEEKNUM 公式會有以下結果:
公式 | 結果 |
---|---|
WEEKNUM(A2) | 2 |
WEEKNUM(A2, 13)(指定星期三為一週的開始) | 1 |