You are on page 1of 18

第一課:Excel 基礎知識

在開始學習如何整合 Python 與 Excel 兩者的優勢之前,我們需要先建立一些 Excel


的基本知識。在這一章,作者會將一些 Excel 的基本概念與功能介紹給讀者,目的
不是要教讀者們如何用 Excel,而是在幫接下來的課程内容做一些鋪成。

1.1 Excel 的結構


Excel 是一個以表格為單位的工具,今天我們在使用 Excel 時,都是在針對某一
個單位的表格做運算。

從結構化的角度來看 Excel,最小的單位為儲存格(Cell):

當有多個連續的儲存格,就會構成一個陣列(Array):
陣列的呈現方式可以是橫竪方向:

這樣的一個陣列就適合用來詮釋一個數列或向量。
若今天一個陣列的欄和列的數目都超過一,就形成了一個二維陣列:

這樣的陣列就適合用來詮釋一個矩陣。
當多個連續的儲存格一直往右邊延伸下去,就是一個列(Row):

當多個連續的儲存格一直往下邊延伸下去,就是一個欄 (Column):

當我們把多個欄或列組合在一起,就形成了一個工作表(Worksheet):
在工作表的上一層,就是一個活頁簿(Workbook),活頁簿等同於是一個工作
表的集合,也是我們平常在檔案總管内看到,副檔名為 .xlsx 或是 .xls 的檔案。
最後,在活頁簿的上一層,就是 Excel 應用程式本身(Application),Excel 應
用程式可以同時開啓多個活頁簿。

在明白了 Excel 的結構之後,我們由上往下來看 Excel 的抽象結構,就會發現每


一個抽象的層次都是一對多的關係,舉例來説,一個活頁簿内可以有多個工作
表,而一個工作表只能屬於一個工作簿。一個工作表内可以有很多欄或很多列,
而一欄或一列只能屬於一個工作表。
以上概念對我們接下來的章節要學會如何要透過程式化的方式操作 Excel 非常重
要。

1.1.1 儲存格命名規則
在 Excel 的工作表中,任何一個儲存格都有獨一無二的儲存格位置,這個位置是
以該儲存格在工作表中的欄名+列號組合而成,儲存格是用該儲存格的 Row 值與
Column 值表示,就如同儲存格的地址一樣。注意 Row 值是用數字表示,
Column 值是用英文字母表示。舉例來説,下圖被選擇的儲存格名稱是 B4:
1.2 Excel 公式(Formula)
Excel 最核心的功能之一,容許使用者像寫數學公式一樣的在 Excel 工作表上進
行數學運算。

1.2.1 Excel 公式基礎:數學公式


今天若希望 Excel 能够做某一種數值運算,我們要如何在公式裡表達這個運算?

1. 先點選一個儲存格,讓其變成作用儲存格(Active Cell):

2. 輸入符號「=」:
3. 接下来請輸入 2 + 3:

4. Excel 在計算出公式的結果後,會將答案顯示在儲存格内:
1.2.2 參照(Reference)
再來看一個實際範例,若今天我們希望計算一個學生的月考總分,我們可以使用公
式的參照(Reference)功能來撰寫公式:

在寫 Excel 公式時,其實在輸入儲存格的名稱之後,Excel 會自動帶入該儲存格内


的資料進行運算。

接下來 Excel 便會呈現:


1.3 函數(Function)
Excel 本身也有非常多内建的函數(Function),這些函數能夠讓使用者輕鬆的完
成一些複雜的運算,舉例來説,若要計算一個陣列内資料的加總,我們可以使用
SUM() 函數:

我們可以得到與之前一樣的結果:

1.4 自動填滿鄰近儲存格公式
在輸入大量的資料到 Excel 時,如果能讓電腦自動的填入或計算資料,就可以幫使
用者節省許多時間。在 Excel 上想要做到這件事也不難,前提是你必須要給 Excel
一定的規則,它才有依照規則,自動化的幫使用者填入或計算資料。

我們來看一個範例,假設今天我們希望能夠將多個運動員的身高單位從公分轉換成
公尺,接下來只需要輸入公式,將身高儲存格的值除以 100 即可:
若要接著計算其他的身高資料,與其每一筆資料都輸入一次類似的公式,我們可以
點擊儲存格的拖曳填滿控點(在儲存格的右下角):

接下來往下拖曳,就會發現 Excel 會快速地將公式複製到連續的儲存格,根據公式


將所有運動員的身高單位從公分轉換成公尺:
若我們檢查 Excel 自動填滿的公式, 可以發現 Excel 自動產生的公式都是根據相對
應位置的規則產生的:

1.5 Excel 陣列公式


雖然自動填滿可以幫助我們輕鬆填入或計算資料,但是它也有衆多缺點,主要一個
缺點在於效能,也就是遇上需要計算或填入大量資料時,其執行的速度會變得十分
緩慢。此時,我們可以使用 Excel 的陣列公式來解決效能的問題。陣列公式是一種
可對陣列中一或多個項目執行同樣運算的公式。

我們再次以運動員的身高的資料作爲範例,我們先選擇以下陣列:
1. 接下來我們針對這個陣列輸入符號「=」,代表接下來輸入的公式會被應用到
整個陣列:

2. 接下來我們輸入公式,注意這次我們是將一個 Excel 陣列除以 100:

3. 按下 Ctrl + Shift + Enter:


Excel 便會將陣列内的每一筆資料除以 100。

注意在陣列運算作用範圍内,每一個儲存格都是共用同一個公式。
使用陣列運算有以下幾個好處,第一點效能快,也就是其執行的差距速度會比自動
填滿快非常多,在計算的資料量變大時,這個執行時間的差距會變得非常明顯。第
二點是保護資料,由於陣列公式是多個儲存格共用同一個公式,因此,計算的結果
不能被輕易修改,避免許因爲不小心修改到資料而發生的錯誤。

1.6 Excel 排序功能


使用 Excel 處理與分析資料時,一個常會需要用到的功能就是排序。舉例來説,假
設我們搜集了許多學生的考試成績,接下來我們希望能夠將學生的成績由小到大排
序:

首先,我們選擇想要排序的資料:
接下來,我們點選排序功能:

再選擇要排序的欄位,在這個範例我們是根據表頭為“成績”的一欄做排序:

最後,學生們的成績就被排序好了:
1.7 Excel 過濾功能
延續上一節已經排序好的資料,接下來如果要將大於等於 80 分的學生過濾出來,
可以透過 Excel 的篩選功能:

篩選功能允許使用者透過直接選擇想要的值,或是設定條件來過濾資料:
接下來我們將條件設定成大於等於 80:

確認之後,即可過濾出分數大於等於 80 分的學生:
1.9 VLOOKUP 函數
假設我們在建立完畢學生的資料之後,若我們希望能夠有一個能夠很方便的讓使用
者搜尋學員分數的功能:

我們可以使用 Excel 的搜尋資料函數來協助我們打造此功能,而 Excel 最具代表性


的搜尋函數,不外乎就是 VLOOKUP 函數。

我們來參考以下範例:

此範例的公式為:

=VLOOKUP(A9, A2:B6, 2, FALSE)


在上述公式,第一個參數代表搜尋資料的依據,我們是要透過學生姓名搜尋學生的
分數,因此輸入欲搜尋的學生姓名所在的儲存格 A9。第二個參數代表搜尋資料的
範圍,因此我們選擇 A2:B6。而第三個則是代表傳回範圍中符合條件的欄位數,由
於分數這一欄是 A2:B6 這個範圍的第二欄,因此我們將第三個參數設定成 2。最後
一個參數則是搜尋方式,由於我們要搜尋完全名字完全符合的學生,因此選擇
FALSE,代表完全符合。

上述公式在執行完畢之後,Excel 便會根據學生姓名,將該學生的分數顯示出來:

接下來我們若想查詢其他的學生成績,只需要修改儲存格内的學生姓名即可,而
Excel 會自動將相對應的值搜尋出來:
1.10 小結
在這篇教學裡面,我們學會了 Excel 應用程式的抽象結構,像是活頁簿、工作表…
等概念,這些結構層次看似複雜,但是其實彼此之間的關聯非常單純。在接下來我
們要學習透過 Python 操作 Excel 時,這些結構便是物件導向程式設計的基礎。我們
也學會了 Excel 這個應用程式的一些基礎功能,無論是計算、查詢、或是轉換資料,
Excel 都有許多强大的内建功能可以使用。

參考文獻
若讀者希望能夠學習更多 Excel 的功能,可以參考微軟官網的文件以及教學:

https://support.microsoft.com/zh-TW/excel

You might also like