工務局
關
Excel
課程講師資訊巨匠電腦講師:呂心怡
E-mail:zoego99@gmail.com
上課日期:2022/8/2、4 及 2022/9/12、14課程練習下載區:https://bit.ly/3mlZcXH
適用所有Excel使用者,尤其是需要經常對原始資料進行手工合併、追加、去除重複數據等操作的資料分析,或者工作中經常運用Excel的樞紐分析工具進行數據分析人員。
在工作中經常使用Excel手工合併多張表格;經常需要對來源資料進行刪除、分列、去除重複數據等操作,然而做過資料分析相關工作的你應該深有體會 – 我們需要製作一份數據分析報告的時候,80%的時間要用來處理不規範的來源資料。
想要擺脫重覆、手工、枯燥的整理工作的苦惱嗎?進而大幅度提升工作效率,節省寶貴時間嗎?Excel提供內建好用的Power Query插件,提供親和的介面化操作,讓很多重複工作進行簡化。
很可惜多數人使用Excel卻都忽略Power Query插件,而學習這項工具已經是未來趨勢,藉由本次課程將列舉實務性範例,解決許多惱人且複雜的報表整理,進而提高工作效率。
(A) 何謂Excel表格及其使用優點介紹
(B) 將多個Excel、CSV檔案或網頁,不同來源類型數據的輕鬆獲取
(C) 分割、合併與提取儲存格資料
(D) 一維 / 二維 資料表轉換
(E) 利用合併查詢進行兩表比對,比Vlookup查詢更加簡單及靈活
(F) 產品明細快速拆分【中/英】文
只要進行數據分析工作者,都會使用【樞紐分析表(Pivot Table)】,也都看過/聽過【資料管理模型(PowerPivot)】卻混淆不知道如何應用,其實這兩項套件是相輔相成的工具,差別在PowerPivot可匯整多張關係工作表,更加結構化進行數據分析。
在工作中愈來愈多數人都運用樞紐工具進行數據分析,基本樞紐操作已經難不倒,本次課程將藉由【Power Pivot】增益集解決Vlookup連結多報表困擾,並提出執行樞紐分析可能遇到的困擾,及製作樞紐時經常忽略的功能,讓樞紐分析運用更加靈活,得心應手。
(A) 樞紐分析前置作業
(1) 解決日期欄位無法產生年/季/月報困擾
(2) 利用【Power Pivot】增益集解決Vlookup連結多報表困擾
(B) 樞紐分析進階應用—經常忽略技巧分享
(1) 如何有效率美化樞紐分析表
(2) 數據顯示依值顯示方式,從而更清晰的看出數據之間的關係
(3) 藉助樞紐分析表中的計算欄位功能產生欄位
(4) 利用交叉分析篩選器動態數據分析
(5) 利用群組特性,彙整年報、季報、月報
在工作任務中,經常需要利用Excel樞紐分析功但不了解Power BI使用者,Power BI Desktop是安裝在本機電腦的免費商業分析工具,可從多種檔案類型匯入資料後,快速建立互動圖表的工具,輕鬆完成大數據的分析!
P.1
整體性概觀了解PowerBI各項軟體間的分責運用。
Learn More →
了解PowerBI及軟體下載:
👆 https://powerbi.microsoft.com/zh-tw/
👆 https://powerbi.microsoft.com/zh-tw/desktop/
PowerBI 文件:👆 https://docs.microsoft.com/zh-tw/power-bi/
👆 https://docs.microsoft.com/zh-tw/powerquery-m/
M語言是Power Query的後台函數式編程語言,在Power Query界面的操作過程都會記錄下來並翻譯成M語言,將查詢和轉換的結果返回到Excel表或Excel或Power BI數據模型。
Power Query上手十分容易,通過圖形界面操作可以解決大部分需求,一般情況下,我們不用去深入學習M語言,但是,如果對M語言有了一定的理解可以對操作步驟進行優化,讓其更加智能,同時也能解決一些圖形界面操作不能完成的任務。
👆 https://docs.microsoft.com/zh-tw/dax/
DAX是Power Pivot和Power BI Desktop中使用的公式語言。 DAX使用函數處理存儲在表中的數據。一些DAX函數與Excel工作表函數相同,但DAX具有更多功能來匯總,切片和切割複雜的數據場景。
P.2
Learn More →
Learn More →
補充
🔶 範例結果
Learn More →
S1:複製圖片路徑,將所有照片置於同一資料夾中,並複製其路徑
Learn More →
S2:語法說明複製下方法語法至Excel中,修改其內容
="<table><img src='圖片路徑資料夾\" & 檔名 & ".副檔名' width='50'>"
語法說明
Learn More →
S3:貼入Excel調整情形參考
Learn More →
S4:路徑結果貼入記事本中,將路徑結果貼入記事本中,將其Excel設定移除
Learn More →
S5:再將記事本路徑貼回Excel中,再將記事本路徑貼回Excel中,調整圖片大小即可
補充
依查詢值進行資料比對輸出相關資料之函數
= Vlookup ( 查詢值 , 查表範圍 , 回傳指定欄數 , 選項)
說明
= Indirect ( 定義名稱 )
S1:以C2儲存格為例:
=VLOOKUP( $A2 , 銷售01月 !$A$2:$F$13 , 6 , FALSE )
=VLOOKUP( $A2 , indirect( C$1 & "!$A$2:$F$13" ) , 6 , FALSE )
以上公式完成複製於其他儲存格中即可。
S3:將被查詢圖片的員工編號,設定為圖片的名稱定義來源,如下圖建立:
定義名稱:員工圖片
公式:=INDIRECT(總表!$L$3)&"_"
S4:選取第一名員工圖片的儲存格,利用複製,並點選【貼上】>【連結的圖片】,並將公式改為【=員工圖片】定義名稱
補充
輸入結構【年/月/日】,定義為西元年份
日期以 /
或 -
區隔,時間以 :
區隔
今年年份輸入時可省略
Win系統為台灣版本時,民國年份之日期前方加入R
例R30/3/5
,Excel自動轉換為1941/3/5。
指令:【資料】>【資料剖析】
善用【常用】>【尋找與選取】>【特殊目標】
線上銷售明細
🔶【範例】
🔶【步驟】
練習1:空格向下填滿
S1:選取數據範圍
S2:【常用】>【尋找與選取】
S3:【特殊目標】> 點選【空格】選項
S4:輸入=
,方向鍵↑
S5:輸入完成Ctrl
+Enter
S6:移除公式
全選範圍>【複製】>【選擇性貼上】>【值】123
練習2:依篩選條件進行美化
快速鍵:【Alt】+【;】
補充
Aggregate函數比Subtotal函數還要強大,因面對忽略錯誤值、隱藏行和分類匯總嵌套,滿足Subtotal無法處理,但Aggregate滿足各種情況下的統計需求!
※資料排序與自訂清單結合
在排序完成後以使用者角度來看,例如:職務、考績或地區,有自行的排序順序,但電腦只能依筆劃或數值排序時,則需運用【自訂清單】要求順序。
填滿序列
資料排序
樞紐分析
【檔案】>【選項】>【進階】之下>【編輯自訂清單】> 加入清單項目
※【格式化為表格】無法使用小計功能,利用【轉換為範圍】移除格式化為表格前,應確認顏色是否移除
指令:【資料】>【排序】
指令:【資料】>【小計】
S2-1:第一階層排序欄位【經銷商】
S2-2:第二階層排序欄位【商品名稱】
P.3
可以快速地建立、格式化及展開 Excel 表格,組織工作表上的資料,讓其更易於使用。
🔶 左鍵一下選取內容、連二下選取內容及標題
=表格名稱〔@欄位名稱〕
有@:相對性欄位
沒有@:整欄計算
交叉分析篩選器為一視覺化控制項,以互動且直覺的方式,快速篩選僅顯示所需的資料的資料。
為了取得帶狀列的色彩,直接移除表格化
因反悔表格化功能,而表格會動用排序時,必須要移除色彩
S0:列表輸入情形
S1:在E2儲存格輸入公式
=IF(E2="",NOW(),E2)
S2:在E2儲存格修改公式
=IF(D2="","",IF(E2="",NOW(),E2))
公式輸入思考原則:當D2輸入已繳(V),繳交日期E2顯示當下時間,否則顯示空白
S3:在進行S2公式建立時,會造成公式循環問題時,利用【檔案】>【選項】(設定如下圖)
參考資訊:移除或允許循環參照,並了解反覆運算用意
根據欄列號索引回傳查表範圍的值
= Index ( 查表範圍 , 指定列數 , 指定欄數 )
傳回搜尋項目於搜尋範圍中的相對位
Match 函數:
目的:傳回搜尋項目於搜尋範圍中的相對位置
公式:=Match ( 1️⃣ 查詢值, 2️⃣ 查表範圍 , 3️⃣ 比對方式類型 )
3️⃣ 比對方式類型:
1或省略:查詢範圍須『遞增』
0:查詢範圍不須事前排序,找到完全符合查詢值
-1:查詢範圍須『遞減』
註:課程範例中,先行針對【職員薪資明細】的表格化及名稱定義,在『總表』工作表中,依各職務進行計算
符合條件計算函數:Countif、Sumif、CountifS、SumifS、Averageif、AverageifS
= Datedif ( 開始日 , 結束日 , " 單位 " )
※ 說明:
單位:決定要傳回的單位,必須前後加上 " "
Y代表滿幾年、M代表滿幾月、D代表滿幾日
MD代表兩日期間的天數差,忽略月和年
YM代表兩日期間的月數差,忽略日和年
YD代表兩日期間的天數差,忽略年
要求兩日期實際差距幾年?幾月?幾日應使用Y、YM、MD單位
= Datedif ( [@起聘日期] , TODAY() , "Y" )
🔶 星期(中)
🔶 星期(英)
= Year ( 日期 )
= Month( 日期 )
= Day ( 日期 )
= Date ( 年 , 月 , 日 )
※ 最終抓取值為數值
= Datedif ( 開始日 , 結束日 , " 單位 " )
※ 說明:
單位:決定要傳回的單位,必須前後加上 " "
Y代表滿幾年、M代表滿幾月、D代表滿幾日
MD代表兩日期間的天數差,忽略月和年
YM代表兩日期間的月數差,忽略日和年
YD代表兩日期間的天數差,忽略年
要求兩日期實際差距幾年?幾月?幾日應使用Y、YM、MD單位
= EDATE (開始日期,月數)
= EOMONTH (開始日期,月數)
= Workday ( 開始日期 , 日數 , 假日列表 )
※ 延伸學習函數 Workday.intl
= Networkdays ( 開始日期 , 結束日期 , 假日列表 )
※ 延伸學習函數 Networkdays.intl
以Workday.intl函數為例:
= Workday.intl ( 開始日期 , 日數, 週末代號 , 假日列表 )
其中,週末代號:
a. 若非為預設代號,其字串值為七個字元,
且字串代表一週內的一天,從星期一開始。
b. 1:代表非工作日 / 0:代表工作日。
c. 字串中僅允許字元 1 / 0,1111111 是無效字串。
※ 例如,0000011 代表週末為星期六和星期日。
📌 雙負號【- -】
說明:
📌 A1#引用法
使用A1#來表示引用動態數組,可以隨著數據的變化無縫調整大小。相當於引用A1中動態數組的整個填充範圍。
Concat 函數:
目的:合併多範圍 / 字串,但不提供分隔符號
公式:= Concat ( 1️⃣ 範圍1/文字1, 2️⃣ 範圍2/文字2 … )
備註:
(1) CONCAT 會取代 CONCATENATE 函數。
(2) 合併文字間,需要加上分隔符號,可使用TextJoin
📌 Concat 範例
=CONCAT(IF(名單[組別]=$I4,名單[姓名],""))
TextJoin 函數:
目的:合併多範圍 / 字串,但並提供分隔符號
公式:= TextJoin ( 1️⃣ "分隔符號", 2️⃣ 是否忽略空白儲存格 , 3️⃣ 加入的文字項目/範圍 )
2️⃣ 是否忽略空白儲存格
True:忽略空白儲存格
Fasle:不忽略空白儲存格
📌 TextJoin 範例
人員列表:
=TEXTJOIN("、",TRUE,IF(名單[組別]=$L4,名單[姓名],""))
人數:
=COUNTA(UNIQUE(IF(名單[組別]=L4,名單[姓名]),FALSE,TRUE))
🔶啟動【開發人員】巨集工具
【開發人員】工具在軟體安裝時,並未啟動必須要另行啟動,其指令為【檔案】>【選項】,如下圖勾選:
🔶 範例結果
🔶 VBA語法
利用【F8】進行逐一步驟執行
Sub MergeCell()
Dim rng As Range
Application.DisplayAlerts = False '解除Excel警訊訊息
Set rng = Selection '設定想要合併儲存格的範圍
k = rng.Count '計數想要合併儲存格的個數
For i = k To 2 Step -1
If rng(i) = rng(i - 1) Then '從後向前確認,當後方儲存格與上一個儲存格相同時
Range(rng(i - 1), rng(i)).Merge '則合併儲存格
End If
Next
Application.DisplayAlerts = True '恢復Excel警訊訊息
End Sub
🔶 範例結果
🔶 VBA語法
利用【F8】進行逐一步驟執行
Sub UnMerge()
Dim rng As Range
Selection.UnMerge '選取範圍進行取消合併儲存格
Selection.Borders.LineStyle = xlContinuous '繪製框線
For Each rng In Selection '針對上一步驟選取範圍進行內容循環提取
If rng = "" Then '判斷是否為空值,若是
rng.Value = rng.Offset(-1, 0) '上一儲存格值填入
End If
Next
End Sub
P.5
Note:何謂資料行/列
S1:表格化,命名為『業績情形_原』>並載入至PowerQuery(PQ)中
(1)【常用】>【格式化為表格】> 取消【我的表格有標題】,其目的於課程後續了解其PQ功能,否則無需取消勾選。
(2)【資料】>【從表格/範圍】載入至PQ中
S2:【常用】>【使用第一個資料列作為標頭】>移除合計列【移除資料列】
S3:選取『職務』及『考績』資料行,填空【轉換】>【填滿】
S4:地址拆分:
【新增資料行】>【複製資料行】>【常用】>【分割資料行】
Splitter.SplitTextByDelimiter說明:連結1:微軟官網、連結2:參考網站、連結3:參考網站
= Table.SplitColumn(已重覆資料行, "全地址 - 複製",
Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv),
{"居住縣市", "居住分區", "居住地址"})
指令說明:
Splitter.SplitTextByDelimiter( 1️⃣ , 2️⃣ )
用途:分隔器函式,這個函式會根據分隔符號來分割文字。
1️⃣分割依據的關鍵詞
2️⃣需對文本類型裡"csv"的處理
S5:右側,查詢設定中:刪除【已變更類型】
※非必要性步驟:其目的課程了解PQ界面。
(1)因課程範例格式不複雜,故刪除全部【已變更類型】 ,也不會影響步驟
(2)【轉換】>【偵測資料類型】
(3)起聘日期調整格式(說明欄位格式如何確認)
P.6
S6:新增部門:
方法1:
部門1:【新增資料行】>【來自範例的資料行】>利用輸入方法找輸入特性
方法2:
部門:【新增資料行】>【條件資料行】
= Table.AddColumn(col部門1, "部門", each
if Text.Contains([職務], "業務")
then "業務部"
else "行政部"
)
S7:步驟更名:目的為未來查看時快速查看【col_部門】
P.6
Excel計算
業績目標_低標 = Round ( 業績目標 * 0.9 , 0 )
業績目標_低標1:【新增資料行】>【標準】>【乘】0.9>【轉換】>【進位】>【捨入】0
業績目標_低標:【新增資料行】>【自訂資料行】> =Number.Round( [業績目標]*0.9,0)
= Table.AddColumn(col_業績目標_低標1, "業績目標_低標", each Number.Round([業績目標]*0.9,0))
P.7
業績總和:選取『Q1業績』 、『Q2業績』、『Q3業績』、『Q4業績』>【新增資料行】>【標準】>【加】
= Table.AddColumn(已新增自訂, "業績總和",
each List.Sum({[Q1業績], [Q2業績], [Q3業績], [Q4業績]}), Int64.Type)
業績總和1:業績目標_低標:【新增資料行】>【自訂資料行】>
= Table.AddColumn(已插入加總, "業績總和1", each [Q1業績]+[Q2業績]+[Q3業績]+[Q4業績])
【計算目的】:討論分母為0的問題
P.7
= Table.AddColumn(已插入加總, "達成率",
each if [業績目標]<>0 then [業績總和]/[業績目標]
else 0)
P.8
【計算目的】練習多條件語法
【加入業績成效呈現原則】
= Table.AddColumn(已變更類型3, "業績成效", each
if [達成率] >= 1.2 then "高標"
else if [達成率] >= 1 then "達成"
else if [業績總和] >= [業績目標_低標] then "低標"
else "未達成")
P.8
何謂【合併/附加】查詢
S1:【業績情形_原】新增索引資料行:【新增資料行】>【索引資料行】
目的:方便日後查看
S2:載入『地區』、『行政部標準表』、『業務部標準表』表格
S3:地區連結:
(2) 展開【地區】欄位
※ 但因有的分區有二筆以上,導致新增重覆列
(3) 利用【索引】欄,移除重覆列:
【常用】>【移除資料列】>【移除重複項目】>進行排序
S4:左側查詢區,將【業績情形_原】利用【參考】新增為『業績情形_明細』※ 說明其差異性,例如:刪除【索引】欄、調整欄位順序…
S5:移除未來不必要的欄位
"工作地點", "起聘日期", "全地址", "部門1", "居住縣市", "居住分區", "居住地址", "業績目標_低標1", "業績總和1", "業績目標_低標1"
= Table.RemoveColumns(來源,{"工作地點", "起聘日期", "全地址", "部門1", "居住縣市", "居住分區", "居住地址", "業績目標_低標1"})
S6:業績標準處理:
P.10
(1) 利用【附加查詢】為新查詢,合併【行政部/業務部標準表】,命名為『部門業績標準表』
※ 說明:基本原則欄位名稱必須相同
(2) 同S3步驟,『業績情形_明細』及『部門業績標準表』利用【合併查詢】合併兩表,加入『乘數比例』
※ 說明:兩欄以上比對欄位
P.10
【工作目的】合併同類項目:將同一類型的內容放在同一個儲存格中
【顯示結果】
S1:將【業績情形_明細】利用【參考】新增為【業績情形_分組依據】
S2:留下{ "員工姓名", "職務", "業績目標", "業績成效", "部門", "業績總和" },移除不必要的欄位
= Table.SelectColumns(來源,{"部門","職務", "業績目標", "業績總和","員工姓名","業績成效"})
S3:【常用】>【分組依據】
依下圖新增【人數】、【總業績目標】、【總業績總和】、【人員列表】欄位
= Table.Group(已移除其他資料行, {"部門", "業績成效"},
{{"人數", each Table.RowCount(_), Int64.Type},
{"總業績目標", each List.Sum([業績目標]), type nullable number},
{"總業績總和", each List.Sum([業績總和]), type number},
{"人員列表", each List.Sum([員工姓名]), type nullable text}})
S4:修改語法
= Table.Group(已移除其他資料行, {"部門", "業績成效"},
{{"人數", each Table.RowCount(_), Int64.Type},
{"總業績目標", each List.Sum([業績目標]), type nullable number},
{"總業績總和", each List.Sum([業績總和]), type number},
{"人員列表", each Text.Combine([員工姓名], "/")}})
📌Text.Combine語法參考
📌課後練習:試著員工姓名+職務
📌例如:
補充
藉由【新群組】方式,將查詢表進行分類,以利日後查看。
S1. 在左側『查詢區』,按右鍵 > 新增群組 > 輸入資料夾名稱
S2. 將相同查詢表推入其內即可
P.11
📌【工作目標】
S1:【分區】及【績效成效】的【業績總和】樞紐情形
S2: 將【業績情形_明細】利用【參考】新增為【業績情形_樞紐1】
S3:留下{ "分區", "業績總和", "業績成效" },移除不必要的欄位
= Table.SelectColumns(來源,{"分區", "業績總和", "業績成效"})
S4: 選取【業績成效】欄 ( 選取欲排列為『欄/行』者 ) ,【轉換】>【樞紐資料行】
【顯示結果】
S1. 將【業績情形_明細】利用【參考】新增為【業績情形_樞紐2】
S2-1. 留下 { "地區", "員工姓名", "業績成效" },移除不必要的欄位
S2-2. 選取【業績成效】欄 ( 選取欲排列為『欄/行』者 ) ,【轉換】>【樞紐資料行】
🔻筆數多無法顯示於儲存格內
(4) 查詢表更名為【業績情形_樞紐2_錯誤】
S2. 將【業績情形_明細】利用【參考】新增為【業績情形_樞紐2】
S3. 留下 { "地區", "員工姓名", "業績成效","達成率" },移除不必要的欄位
= Table.SelectColumns(來源,{"員工姓名", "分區", "業績成效", "達成率"})
S4. 【新增資料行】>【自訂資料行】
📌 Text.From 語法參考
S5. 先前說明進行樞紐錯誤情形時,因多筆同資料無法全部顯示,故必須先利用【分組依據】合併之
【目的】
= Table.Group(Col_員工達成率,
{"分區", "業績成效"},
{{"計數", each List.Sum([員工達成率]), type text}})
(4) 修改語法
= Table.Group(Col_員工達成率,
{"分區", "業績成效"},
{{"計數", each Text.Combine( [員工達成率]," / ")}})
(3) 選取【業績成效】欄 ( 選取欲排列為『欄/行』者 ) ,【轉換】>【樞紐資料行】
P.14
S1:將【業績情形_明細】利用【參考】新增為【ex最高業績及季別】
S2:留下{ "員工姓名", "Q1業績", "Q2業績", "Q3業績", "Q4業績" },移除不必要的欄位
S3:選取【"Q1業績", "Q2業績", "Q3業績", "Q4業績"】欄位,【取消資料行樞紐】,並利用【取代值】移除『業績』字樣
S4:針對【員工姓名】設定為遞增排序 / 【業績值】設定為遞減排序
S5:選取【員工姓名】,【常用】>【移除資料列】>【重覆項目】刪除重覆項目
目的:利用移除重覆項目,保留第一筆記錄的工作特性
S6:利用【合併查詢】,加入人員部門、職務,並還原其名單順序
Keyword:"索引","部門","職務",
P.15
何謂中式排名?
S1:在左側『查詢區』,按右鍵 > 新增群組 > 【ex中式排名】
S2:將【業績總和】欄位移除重覆後,新增排名
(1) 將【業績情形_明細】利用【參考】新增為【ex中式排名S1】
(2) 選取【業績總和】> 移除其他欄位 > 進行遞減排序 > 移除重覆值 > 新增【排名】索引欄
S3:利用合併查詢方式,將【業績情形_明細】,新增排名
(1) 【常用】>【合併查詢】<【將查詢合併為追加查詢】
(2) 展開【排名】欄位
P.16
利用合併查詢進行兩表比對,比Vlookup查詢更加簡單及靈活
S1:載入『表7月』、『表8月』表格
S2:【常用】>【合併查詢】>【將查詢合併為新查詢】,並展開其合併欄位
S3:【新增資料行】>【條件資料行】,進行新舊員工類型判斷
S4:最後整理
P.18
S1:【常用】>【分割資料行】
S12:【常用】>【分割資料行】
S3:選取【訂單資訊.1】欄位,【轉換】>【樞紐資料行】
P.19
S1:將(1)利用左側窗格點選【參考】新增查詢後,選取【姓名、電話、產品】,再【轉換】>【取消資料行樞紐】>【合併資料行】合併結果,如下圖
S2:選取【訂單編號】欄位,【轉換】>【分組依據】
S3:修改語法
= Table.Group(已合併資料行, {"訂單編號"},
{{"項目", each Text.Combine([項目],"#(lf)"), type text}})
P.20
選取各『地區』欄位 > 【轉換】>【資料行樞紐】
📌 例如:
P.20
笛卡爾乘積是指在數學中,兩個集合X和Y的笛卡爾積(Cartesian product),又稱直積,表示為X×Y,第一個對象是X的成員而第二個對象是Y的所有可能有序對的其中一個成員。簡單來說就是2組資料互相交集.
S1:利用分割資料切割新增【訂單編號_起】、【訂單編號_迄】欄位
S2:【新增資料行】>【自訂資料行】
資料行名稱list
= {[#"訂單編號 -起"]..[#"訂單編號 - 迄"]}
P.20
📌 Text.Select ( ) 和Text.Remove ( )
提取項目 | M函數 |
---|---|
各種特殊符號、0-9數值、 所有大小寫英文字母 |
Text.Select ( [文本資料行] , { ″ ″ .. ″~″}) |
數值0-9 | Text.Select ( [文本資料行] , { 0 .. 9}) |
文字0-9 | Text.Select ( [文本資料行] , { ″0″ .. ″9″}) |
英文大寫 | Text.Select ( [文本資料行] , { ″A″ .. ″Z″}) |
英文小寫 | Text.Select ( [文本資料行] , { ″a″ .. ″z″}) |
英文大/小寫 | Text.Select ( [文本資料行] , { ″A″ .. ″z″}) |
中文 | Text.Select ( [文本資料行] , { ″一″ .. ″龜″}) |
【步驟】
S1:抓取中文文字語法,新增【自訂資料行】>公式為【 = Text.Select([產品],{″一″..″龜″})】
= Text.Select([商品],{"一".."龜"})
S2:抓取英文,新增【自訂資料行】>
公式為【 = Text.Trim ( Text.Select ( [產品] , {″ a ″…″ z ″,″ A ″…″ Z ″,″ ″,″ . ″,″ ‘ ″}))】
移除前後多餘空格,因範例中英文有【’】及【.】
= Text.Trim ( Text.Select ( [商品] , {"a".."z","A".."Z"," ",".","'"}))
S3:也可以移除中文字,來取得英文
= Text.Remove([商品],{"一".."龜"})
P.22
透過Power Query將多個資料來源的資料合併、追加到一起,任意組合資料、將資料進行分組、透視等整理操作方法快速整併成同一個,以利數據分析。
S1:開啟Excel新檔 > 載入資料 > 活頁簿
【2016版Excle】
【365版Excle】
S2:顯示載入資料情形 > 點選【轉換資料】
S3:保留【Content】欄位,其他欄位移除,其內容如下:
S4:【新增資料行】>【自訂資料行】
(1) 載入CSV檔案至PQ:
Csv.Document ( )
(2) 本身Excel檔案載入至PQ:
Excel.CurrentWorkbook ( ) { [ Name="表格名稱" ] } [Content]
(3) 由其他Excel檔案載入至PQ:
Excel.Workbook ( [Content] , true )
= Excel.Workbook([Content],true)
P.22
S1:與上個個單元作法相同載入檔案,開新檔案>【資料】>【取得資料】>【從檔案】>【從資料夾】>選取想要載入的資料夾 >【轉換資料】
S2:依步驟完成,建立公式進行串接組合,並刪除不必要欄位:
S3:完成後,回填至Excel,建立連結公式:
S1:開啟Google表單回報檔案,點選【檔案】>【共用】>【發佈至網路】
S2:選擇連結的檔案類型 > 複製其網址
S3:開啟Excel新檔案,【資料】>【從Web】,將S2網址貼入,依步驟載入即可
https://docs.google.com/spreadsheets/d/e/2PACX-1vTWau93NwnhTXACiMUDYp-Y-G-_5ZYF_rluokCaxRKPQeDzWp1uBklWVQpqtOeOUbv6NH7-E_w628TR/pub?output=xlsx
📌List.Sum..等,語法參考
計算說明:
公式 | 結果 |
---|---|
= 1 + 2 + 3 + 4 + null | null |
= List.Sum ( { 1 , 2 , 3 , 4 , null } ) | 10 |
情境說明:
PQ表中,若其值有【null】時,加總無法計算其值,可改用List.Sum
S1:建立查詢表
= #table({"欄1","欄2","欄3"},{{1,2,3},{2,null,8}})
S2:新增加總,表中有【null】時,發生異常
= Table.AddColumn(來源, "總和", each [欄1]+[欄2]+[欄3])
S3:改由List.Sum計算
= Table.AddColumn(已新增自訂, "List.Sum", each List.Sum({[欄1], [欄2], [欄3]}))
分隔欄位:Splitter.SplitTextByDelimiter
P.26
S1. 【主資料夾】>【從其他來源】> 點選【Excel檔案】
S2. 點選欲載入數據的Excel檔案
補充
🔶 兩軟體之間名詞差異
使用PBI計算必須抛棄Excel儲存格計算的思維模式,在PBI中的資料表是以【資料行】方式儲存。
Excel | PP、PQ、PBI |
---|---|
工作表 | 資料表 |
欄 | 資料行 |
量值:即以【資料表】或【資料行】進行計算 |
🔶 建議
新增資料行: |
---|
缺點:使用時浪費記憶體 優點:使用Excel公式習慣的人,傾向使用容易理解 使用時機: ▷ 將列內容放入篩選器、交叉分析篩選器、行、列 ▷ 需要利用新增的資料行與其他表建立關係時 |
量值: |
缺點: ▷ 公式書寫較難以理解 ▷ 不可使用於交叉分析篩選器 優點: ▷ 不浪費記憶體,只有被拖到【報告】中才會執行運算 ▷ 可以重覆使用的計算式 使用時機: ▷ 需要重覆使用的計算式 ▷ 是否根據上下文動態運算 |
P.28
點選【訂單明細】工作表:建立公式
欄位 | 公式 |
---|---|
單價 | 單價:=RELATED('商品明細'[銷售單價]) |
出貨金額 | 出貨金額:=[出貨數量] * RELATED ( '商品明細'[銷售單價] ) |
單價:=RELATED('商品明細'[銷售單價])
出貨金額:=[出貨數量]*RELATED('商品明細'[銷售單價])
P.29
欄位 | 公式 |
---|---|
出貨總金額_SUM | 出貨總金額_SUM:=SUM( '訂單明細'[出貨金額] ) |
出貨總金額 | 出貨總金額:=SUMx('訂單明細', '訂單明細'[出貨數量] * RELATED ('商品明細'[銷售單價]) ) |
訂單明細列數 | 訂單明細列數:= COUNTROWS ( '訂單明細' ) |
訂單筆數 | 訂單筆數:= DISTINCTCOUNT ( '訂單明細'[訂單編號] ) |
總出貨量 | 總出貨量:=SUM ( '訂單明細'[出貨數量] ) |
銷售獎金 | 銷售獎金:=ROUND ( SUMx ( '訂單明細' , '訂單明細'[出貨金額]* 0.1 ) , 0 ) |
銷售獎金_每筆round | 銷售獎金_每筆round:=SUMx ( '訂單明細' , ROUND( '訂單明細'[出貨金額]*0.1 , 0 ) ) |
出貨總金額_SUM:=SUM('訂單明細'[出貨金額])
出貨總金額:=SUMX('訂單明細','訂單明細'[出貨數量]*RELATED('商品明細'[銷售單價]))
訂單明細列數:=COUNTROWS('訂單明細')
訂單筆數:=DISTINCTCOUNT('訂單明細'[訂單編號])
總出貨量:=SUM('訂單明細'[出貨數量])
銷售獎金:=ROUND(SUMX('訂單明細','訂單明細'[出貨金額]*0.1),0)
銷售獎金_每筆round:=SUMX('訂單明細',ROUND('訂單明細'[出貨金額]*0.1,0))
P.29
Excel原生環境 | Power Pivot 工具 |
---|---|
指令:【插入】>【樞紐分析表】![]() |
![]() |
欄位直接拖曳
指令:【檔案】>【選項】>【進階】之下>【編輯自訂清單】> 加入清單項目
文字
數值
日期
P.31
S1:建立大綱階層,如欄位不在同一工作表則利用Related函數載入
商品類別:=RELATED('商品主類別'[商品類別])
季:=INT(([月]+2)/3)