Power Query實作資料庫系列:(3/6)利用Power Query建立員工專長查詢介面

上一篇文章【從Power Query實作認識「基元值」(Atomic Value)】的說明與實作中,我們將一份非結構資料,透過Power Query編輯器的操作,建立了兩張資料表,並載入到Power Pivot的資料模型裡,進行關聯式資料庫的建立。接著我們就延續這份資料,準備建構出員工專長查詢介面設計與應用。

在此,我們將再度利用Power Query的協助,建構一個員工專長查詢操作介面,在Excel工作表上設定一個可以複選多項專長項目的下拉式選單,再將此選單傳遞給Power Query,執行符合這些專長選項的員工名單。譬如:選擇具備[程式設計]專長的員工有4位,但同時具備[程式設計]專長與[視覺設計]專長的員工就僅有1位。請先下載這篇文章的實作範例,開始以下的實作囉!

建立所有員工的專長清單列表

目前這份原始資料有7位員工,合計15專長,我們可以透過Power Query輕鬆建立這份[員工專長清單列表]。在開啟活頁簿並進入Power Query查詢編輯器的畫面後,點選[員工專長列表]查詢,然後,以滑鼠右鍵點按此查詢結過的[專長]資料行名稱,從展開的快顯功能表中點選[加入成為新查詢]功能選項。

上述的操作將會產生一份與資料行名稱同名的新查詢,而此查詢結果的格式是屬於Power Query的清單(List) 容器。接著,點按[清單工具]底下[轉換]索引標籤裡的[移除重複項目]命令按鈕。

隨即便完成了所有員工的專長項目且沒有重複項目內容的清單列表,不過,我們必須將此清單(List)容器的格式,轉換成標準的資料表(Table)容器格式,因此,可以點按[清單工具]以下[轉換]索引標籤裡的[到表格]命令按鈕。在開啟[到表格]對話方塊後,不需要任何分隔符號,採用預設設定即可。

完成了資料表的轉換後,其內容便是包含了預設名稱為Column1的資料行,裡面盡是所以有員工的專長項目,並且已經除了重複項目。

接著我們可以將此Column1的資料行名稱改成較貼切的[專長項目],而此查詢的名稱也可以改為名副其實的[專長列表]。接著,就可以準備將此查詢結果傳送到Excel工作表上囉!此時可以點按[常用]索引標籤裡[關閉並載入]命令按鈕的下半部按鈕,再從展開的功能選單中點選[關閉並載入至…]功能選項。

在開啟[匯入資料]對話方塊後點選[表格]選項(意即資料表Data Table),將此查詢結果建立在名為[專長查詢]工作表的儲存格K2。結束此對話方塊的操作後,便可以在[專長查詢]工作表的儲存格K2處看到匯出自Power Query的查詢結果,而此查詢結果在工作表上是以資料表的形式存在,資料表的名稱是預設的查詢名稱[專長列表]。

在工作表上建立下拉式選單

此外,我們在同一工作表的儲存格範圍B2:B7建構了一個[請選擇專長項目]區域,計畫在這裡建構出可以選擇一個以上的專長項目之篩選準則區域。而這個區域也是先設定為資料表的格式。我們可以在點選此範圍後,從[表格設計]索引標籤裡的[表格名稱]中看出,這個資料表已經被筆者事先命名為[已選擇的專長項目]資料表,這個名稱很重要,稍後會用得到喔!

接著便是在工作表上動手製作下拉下拉式選單的時候了。我們規劃最多可以選擇符合5種專長項目的查詢,並設定儲存格B3到儲存格B7擔任此要角,而運用的技巧便是Excel具有的[資料驗證]功能,因此,我可以選取儲存格範圍B3:B7後,點按[資料]索引標籤底下的[資料驗證]命令按鈕。

開啟[資料驗證]對話方塊,在[儲存格內允許]選項底下,點選[清單],接著便可以在[來源]文字方塊裡輸入此下拉式清單要參照的來源公式。而根據這個範例,要參照的資料來源正是我們剛剛在工作表上所建立且位於儲存格K2的[專長列表]資料表之[專長項目]資料行,在依據結構化參照公式的撰寫格式上,應該寫成:

=專長列表[專長項目]

若對於結構化參照公式的撰寫方式並不熟悉的朋友,可以參考Excel的結構化參照(structured references) - 從參照到結構化參照的系列文章與實作。

https://dotblogs.com.tw/areswang/2020/10/26/excel_reference_1

然而,直至目前為止的Excel版本,在[資料驗證]對話方塊的[來源]文字方塊裡僅能輸入儲存格範圍的參照,而無法直接採用結構化參照資料表的公式寫法,因此,我們必須透過INDIRECT這個間接參照函數來幫忙,而寫成:

=INDIRECT("專長列表[專長項目")

完成[資料驗證]對話方塊的操作後,回到Excel活頁簿操作環境,即可看到從儲存格B3開始到儲存格B5,都已成為下拉式選單的操作介面。使用者便可以點選這些儲存格來查找找符合這些專長的員工名單。至於工作表上的這一塊範圍內容,要如何傳遞到Power Query環境進行查詢比對呢?期待下一篇囉~

【下載此實作範例檔案

Power Query實作資料庫系列文章與實作: