Excel數列功能及SEQUENCE函數介紹

Excel數列(Series)功能及Excel新函數SEQUENCE係以起始值、終止值、間距值等參數來製造一個序列,例如起始值為1、終止值為10、間距值為1,那此數列為1,2,3,4,5,6,7,8,9,10。善加利用數列功能可省下不少資料整理的時間,本篇文章將介紹Excel數列功能及SEQUENCE函數的使用方式及應用,讀到文章最後各位讀者可自製出動態月曆

數列功能製作日期序列

Excel數列的功能其實出現在很早之前,在小編辦公室裡,有電腦為Excel 2010版本,就已經存在數列的功能了。(如下圖)

20220810_P21

另在開始製作日期序列之前,要跟大家說明一個觀念,於Excel數值類別裡,日期為數字的一種轉化型態,數字1其實就是1900年1月1日,而2022年8月1日會等於44774,以此類推。

20220810_P19

若要確認某個日期等於數字多少,可以從Tab Home->Number裡面查詢。(如下圖)

20220810_P1

以下開始說明如何利用Excel數列(Series)功能製作出2020/8/1~8/31的日期序列。

首先先點選序列起始值儲存格(此範例為44774),再於Tab Home->Editing->Fill->Series進入數列視窗。

20220810_P2

進入數列視窗後,先將數列填滿方向(Series in)從Rows調整為Columns,意即此數列是以欄的方向往下填滿的,其他設定不需更改,類型(Type)保持為等差級數(Linear)及間距值(Step value)保持為1,輸入終止值(Stop value)為44804(2022/8/31),點選OK即可完成。

20220810_P3
20220810_P4

接著再將此序列數值類別改為日期,就可以完成此範例。(如下圖)

20220810_P5

上述方法係以數字來製作日期序列,主要是要讓大家體會一下數字與日期的關係,接著讓我們用更直觀的方式,以日期來製作出2022/8/1~8/31的日期序列。

首先點選日期起始值儲存格(2022/8/1),然後進入數列視窗,於數列視窗中會自動偵測到類型(Type)為日期(Date),我們只要將終止值(Stop value)輸入2022/8/31,再點選OK即可完成。

20220810_P16
20220810_P17

SEQUENCE函數製作日期序列

SEQUENCE函數是在Microsoft 365或Office 2021版本才有的動態陣列函數,SEQUENCE函數=SEQUENCE(rows, [columns], [start], [step]),其中各組成說明如下:

  • 列數(rows):此項必須輸入,係指此數列的列數;
  • 欄數(columns):此項為選填,預設值為1,若輸入列數3及欄數4,那會生成一個3X4的矩陣;
  • 起始值(start):此項為選填,預設值為1。
  • 間距值(step):此項為選填,預設值為1。

了解SEQUENCE函數的組成後,接著讓我們以SEQUENCE函數製作2022/8/1~8/31的日期序列,因為8月有31天,故將列數(rows)輸入31,起始值(start)選擇儲存格2022/8/1,另欄數(columns)及間距值(step)可不輸入或輸入1,小編習慣全部寫出來,這樣看公式時比較清楚、一目了然。(如下圖)

20220810_P6

完成畫面如下圖。

20220810_P18

目前各位可能還感受不到新函數SEQUENCE的強大,於此範例中SEQUENCE較數列功能方便之處,只為可利用改變起始值來動態得改變日期序列,例如起始值改為2022/1/1,那日期序列會自動變為2022/1/1~1/31。

於下一節中,小編將展示SEQUENCE函數的強大應用:如何以SEQUENCE函數製作出動態月曆。

SEQUENCE函數製作動態月曆

首先,小編先以SEQUENCE函數製作出一個5X7的矩陣。(如下圖)

20220810_P8

然後將此矩陣加上一個表頭(Sun, Mon...Sat星期日、星期一到星期六),各位是不是已可聯想到月曆了呢。但不可能每個月的1號都是星期日,例如2022/8/1是星期一,那各位想一下SEQUENCE函數的起始值應該設為多少呢?

20220810_P9

答案為0,其邏輯很簡單:每月第1天(1號)與序列起始值的差距 = 每月第1天(星期幾)與星期日的差距例如8/1(星期一)與星期日差1,所以8月份序列起始值為1-1=0;相同的如9/1(星期四)與星期日差4,那9月份序列起始值為1-4=-3。解決了序列起始值的問題後,那要怎麼讓序列小於1和大於31的數值不要顯示出來呢?(如下圖)

20220810_P15_2

此問題小編選擇以公式的方法解決,較單純,另外各位也可以使用條件式格式設定(Conditional Formatting)的方法喔(設定小於1和大於31時,字體顏色變為白色)。

20220810_P11_1

但以上的範例並非動態月曆,是先將製作月曆的概念告訴大家。

以下公式為小編自製的動態月曆公式,有2個儲存格參數(年份及月份),並利用LET函數功能宣告變數:FirstofMonth為本月第1天、EndofMonth為本月最後1天、DaysofMonth為本月天數、StartingNo為此序列的起始值、Result則為此序列的公式,還不了解LET函數的讀者可先參考先前的文章:LET函數介紹)。

=LET(
FirstofMonth,EOMONTH(VALUE($C$2&"-"&C3&"-"&1),-1)+1,
EndofMonth,EOMONTH(VALUE($C$2&"-"&C3&"-"&1),0),
DaysofMonth,EndofMonth-FirstofMonth+1,
Weeks,ROUNDUP((WEEKDAY(FirstofMonth)+DaysofMonth)/7,0),
StartingNo,1-(WEEKDAY(FirstofMonth)-1),
Result,SEQUENCE(Weeks,7,StartingNo,1),
IF(Result<1,"",IF(Result>DaysofMonth,"",Result)))

20220810_P13

另若將此公式複製貼到12個月份裡面,即可完成年曆(如下圖),只要變更年份,全部的月曆皆會自動更新。

20220810_P14

此SEQUENCE函數的應用是不是很酷、很強大呢!各位如果有Microsoft 365/ Office 2021版本的Excel,不妨練習一下,可直接將小編自製的公式貼上使用,並發揮各位的創意,將此動態月曆應用於辦公室工作裡面喔。

總結與補充:

讀完了Excel數列功能及SEQUENCE新函數的介紹與應用後,相信大家應該得到不少收穫,小編再舉一個實務案例給各位參考:

於工廠中一般員工需要進行輪班操作(1天3班),假設某天主管要你製作出1年份每天輪班日期(含時間)的序列給輪班同仁抄表,如不使用數列功能,你可能要花費10幾分鐘進行手工輸入,但如果你使用數列功能或SEQUENCE新函數,只要花你不到1分鐘的時間呢! 時間跟日期一樣,皆為數字的轉化型態,例如數字0=00:00、數字0.33=08:00、數字0.66=16:00,故可利用調整間距值設定數列來完成此案例,下圖為使用SEQUENCE函數的方法,另外不要忘了將儲存格數值類別設定為日期與時間喔(yyyy/mm/dd hh:mm)。

20220810_P20

PS 使用SEQUENCE函數,Excel版本需求為Office 2021或Microsoft 365。

這篇文章對您有幫助嗎?

平均評分 4 / 5. 5

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?

1 Comment

  1. Alice on 2022-08-13 at 12:05

    節省時間方面非常受用

發表迴響