TEXTJOIN函數介紹,將陣列濃縮為字串

在企業中常聽到主管們說的一句話「文不如表、表不如圖」,其實也有例外。在動態看板或報表中,有很多的資訊要以表或文字來呈現,才能帶給受眾最一目瞭然的感受。本篇文章將介紹在Excel動態陣列功能(Dynamic Array)出現後,第一個超強字串處理函數:TEXTJOIN函數。

TEXTJOIN函數的結構為=TEXTJOIN(delimiter, ignore_empty, text1, text2...),其中各組成說明如下:

  • 字串間分隔符號(Delimiter):可為單一符號或一矩陣(Array);
  • 忽略空白與否(Ignore Empty):True為忽略空白,False為不忽略空白;
  • 要連結之字串1(Text1)、字串2(Text1)、字串3(Text1)...等:可為單一儲存格(Cell)或一矩陣(Array)

本篇文章將以某公司人資(HR)資料,利用FILTERROWSTEXTJOIN函數,做出2022年各月之離職人數及離職人姓名動態看板,下圖為HR資料表:

20220427_P2

下圖為完成後的動態看板,上方表格可以很清楚的掌握到每個月的離職人數及離職人姓名,這時大家是不是覺得下方的圖表重要性比不上表格了呢!

20220427_P3-2

以下將依步驟說明製作流程。

步驟一:抓出離職人員編號

先利用FILTER()函數將HR表中離職的人員編號陣列抓出來,公式為:

=FILTER(HR表[人員代號],(YEAR(HR表[離職日])=YEAR(J6))*(MONTH(HR表[離職日])=MONTH(O6)))

回顧一下FILTER公式組成=FILTER(array(篩選的陣列), include(篩選條件), if_empty(若無資料要回傳甚麼)。此範例array為人員編號,include為離職日期的年份等於目標年月的年份及離職日期的月份等於目標年月的月份。

20220427_P4-2

步驟二:計算離職人員陣列列數及將陣列濃縮成一字串

上述公式可得到一陣列包含兩個人員編號(FLX0002及FLX0003),接下來可利用此陣列製作(1)離職人數、(2)離職名單。分別說明如下:

(1)離職人數:若要計算此陣列列數,可使用ROWS函數,將此陣列FILTER函數整個放進ROWS函數裡即可回傳此陣列的列數(亦即離職人數),公式為:

=ROWS(
FILTER(HR表[人員代號],(YEAR(HR表[離職日])=YEAR(J6))*(MONTH(HR表[離職日])=MONTH(O6))))

20220427_P5

(2)離職名單:若要將陣列濃縮成一個字串,可使用本篇文章介紹的TEXTJOIN函數,將此陣列的FILTER函數放進TEXTJOIN函數裡的text1組成,公式為:

=TEXTJOIN(
", ",TRUE,
FILTER(HR表[人員代號],(YEAR(HR表[離職日])=YEAR(J6))*(MONTH(HR表[離職日])=MONTH(J6))))

20220427_P6

步驟三:將離職人員編號字串轉換為人員姓名字串

因為我們最後動態看板要的是離職人員姓名,不是人員編號,所以還要再增加一個步驟才能達成。在看公式之前先簡單說明一下為什麼一開始不用人員姓名進行Filter就好,而是要用人員編號。

其實以此範例來講是可行的,但在實務上資料庫結構並非如此單純,資料表中可能同一個員工會有好幾列的資料,故在計算列數時需先進行去除重複(Remove Duplicate)的動作,那如果這家公司有同樣姓名的員工,去除重複就會造成少計數的情形發生,故應養成習慣使用資料庫中的Natural ID(此範例為人員代號)進行Filter。接下來讓我們看一下修正後TEXTJOIN函數的公式:

=TEXTJOIN(
", ",TRUE,
FILTER(FILTER(HR表[[人員代號]:[姓名]],(YEAR(HR表[離職日])=YEAR(J6))*(MONTH(HR表[離職日])=MONTH(Q6))),{0,1}))

此公式有兩個巢狀FILTER,內圈FILTER的陣列為人員編號+人員姓名,外圈FILTER則是利用{0,1}篩選條件來選取人員姓名。

接下來把公式下拉複製到所有儲存格即完成。

20220427_P7

步驟四:製作圖表

此範例為簡單的折線圖(Line Chart),僅需選取年月及離職人數之範圍,再點選折線圖即可完成。

20220427_P8

總結:

與TEXTJOIN函數功能類似的函數還有像ARRAYTOTEXT、CONCAT、CONCATENATE等函數,TEXTJOIN較ARRAYTOTEXT好的地方是可自訂分隔符號及忽略空白;CONCAT、CONCATENATE用法則較不同,他們不能將陣列濃縮成一字串,故使用場合是在非陣列的儲存格字串連結,當然此用途TEXTJOIN函數也可以辦到。綜上所述,TEXTJOIN函數無所不能!

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

這篇文章對您有幫助嗎?

平均評分 5 / 5. 1

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

Let us improve this post!

Tell us how we can improve this post?

發表迴響