# excel軟體操作
###### tags: `電腦` `學習` `軟體`
###### 撰寫時間 : 2021/09/12-09/14
## 教學影片
[PAPAYA Excel 基礎教學](https://www.youtube.com/watch?v=wg3R5LdQ56k&list=PL7enJ2-v6SPm-EHMuRMCG7R7C-vXQugNM&index=1)
## 軟體定位
**spreadsheet的處理與日常資料處理**,就算是進階一點的`VBA`感覺用途侷限,不值得學習。要深入,去學`python`、`matlab`、統計系在用的`SAS`、`SPSS`等工具會比較有意義。
## 知識點
- 向下移動`enter`、向右移動`tab`、向左移動`shift+tab`
- 凍結窗格使表格下滑時,首欄能一直顯示
- 資料排序,可分多層級比較與自定義排序方式
- 資料篩選,提供文字模糊比對、色彩篩選等
- 認識excel匯出到**Power BI**進行資料視覺化
- 插入->表格、格式化表格(讓軟體自動偵測或是使用`ctrl`+`shift`選取表格範圍)
- 交叉分析篩選器(視覺化篩選功能)
- 設定格式化的條件(篩選->把特定資料隱藏;設定格式化->標註特定資料),提供資料橫條、色階、圖示集等
- 工作表設定、合併彙算
- 圖表內建篩選、材質、股票折線走勢圖、雷達圖、組合圖
- **樞紐分析表(pivot table)**,分篩選、欄、列、值區域如積木一般可進行自定義排列、可組成群組、時間表功能視覺化篩選機制、樞紐分析圖、與原數據連動,並更新資料
- 列印分頁設定、 調整縮放比例、每頁都列印標題列、頁首、頁尾、浮水印
- 預設儲存格是相對參照,在**符號前面加上`$`代表絕對參照**(快捷鍵是反白後按`F4`),例如`A$1`為相對欄和絕對列
- 可以隱藏儲存格或是工作表
- 文字與公式**串接合併用`&`**,例如`"<"&A1`,代表小於A1儲存格的數,也適用於日期
- **儲存格定義名稱、名稱管理員**->替儲存格取別名,方便調用
- **資料剖析**分隔符號、固定寬度來分隔資料
- 快捷鍵`f4`可重複上一個指令
- 拖曳邊框移動資料、ctrl+拖曳邊框複製資料、shift+拖曳邊框插入資料
- 選擇性貼上->轉置(欄列對調)、**加減乘除運算**
- 移除重複項、`ctrl~`顯示公式、新增註解
- 資料->模擬分析->目標搜尋,**計算出英文要考到幾分才及格?**
- `Alt`+`Enter`儲存格內部換行
- excel會自動判別數字格式 分數`0 1/2`,文字(手機號碼)`'0978` ,以下為[自訂數值格式語法](https://www.youtube.com/watch?v=rR2dKiw9mNo&list=PL7enJ2-v6SPm-EHMuRMCG7R7C-vXQugNM&index=21):
|符號|解釋|
|:-:|:-:|
|`#`|數字,沒有意義不顯示|
|`?`|數字,無意義以**空格**形式呈現,可以對齊數據|
|`0`|數字,**強制顯示**指定的位數|
|`@`|代表**文字**|
|`*`|**填充**其後的符號|
|`,`|**千分位**,簡化大數值|
|`_`|**留白**其後符號的**寬度**|
|`AM/PM`|時間格式轉12小時制|
|`y/m/d/h/m/s`|年/月/日/時/分/秒|
|`aaa/aaaa`|周幾/星期幾|
- 自訂格式`正值; 負值; 零值; 文字`,可變更色彩與輸入條件式的語法
![](https://raw.githubusercontent.com/HsuChiChen/image_hosting_service/main/2023/05/20230503_215018.png)
- `ctrl`+`;`靜態抓取現在日期;`ctrl`+`shift`+`;`靜態抓取現在時間
- 保護表格編輯權限、不顯示公式,但我實測會被google doc破解,不管用
- 無法解決問題?找出這些資料的共同特性,並用**輔助欄**進行二段式解決
- 按快捷鍵`F9`可更新表中數據
- excel中**每個日期都有對應的數字**,從1900/01/01日為1開始數,而時、分、秒由小數進行儲存
- **甘特圖(Gantt Chart)**顯示專案、進度等**與時間相關**的系統進展
- 將`true/false`轉換為`1/0`
1. `--(判斷式)`
2. `(判斷式)*1`
- 帕列托圖(80/20法則)是指在**原因和結果、努力和收穫之間,普遍存在著不平衡的關係**,譬如80%的利潤由20%的顧客帶來,80%的財富集中在20%的人手中
- 擷取網頁上的資料
1. 資料->從web->貼上URL
2. 自己寫程式或網頁爬蟲軟體parsehub
- 3D地圖視覺化行政區域
- excel亂碼處理?資料->從csv匯入->**將編碼格式轉換成`UTF-8`**
- 李克特量表(Likert scale)是一種心理反應量表,常在問卷中使用
- Forms表單->power query資料整理->power pivot建立資料模型->樞紐分析表
- [power query資料整理](https://www.youtube.com/watch?v=c4ZXLLExG_w&list=PL7enJ2-v6SPm-EHMuRMCG7R7C-vXQugNM&index=39)
- 模擬分析
1. 目標搜尋-不確定公式需要哪些輸入值才能得到該結果
2. 運算列表-多個公式都使用同一個共同變數
3. 規劃求解-多變數、多限制條件
## 函式
- 基礎
|函式|功能|
|:-:|:-:|
|`LARGE(array, k)`|第k個大的數|
|`SMALL(array, k)`|第k個小的數|
|`IF(condition, true, false)`|if條件|
|`IFS([condition1, true1, condition2, true2...)`|if巢狀條件,增加程式可讀性。若要指定預設結果,請在最終的 `logical_test`引數輸入`TRUE`|
|`VLOOKUP(關鍵字,儲存格範圍, 最左邊欄的欄從1開始數 ,精準模糊比對)`|例如以零件編號來查看汽車零件的價格,使用False代表精準比對;True為模糊比對,儲存格範圍需**遞增排列**,`VLOOKUP`已被更好用的`XLOOKUP`所取代|
|`IFERROR(value, value_if_error)`|在選項空白時可以加上`IF`來不顯示錯誤訊息,另外也可用**資料驗證提示輸入訊息與錯誤提醒**|
|`COUNT(資料範圍)`|計算數字儲存格數目|
|`COUNTA(資料範圍)`|計算不是空白的儲存格數目|
|`COUNTA(資料範圍, 條件)`|計算符合條件的儲存格數目|
|`COUNTIF(資料範圍1, 條件1, 資料範圍2, 條件2, ...)`|計算符合多條件的儲存格數目|
- 日期
|函式|功能|
|:-:|:-:|
|`MONTH(value)`|回傳月份|
|`SUMIF(加總範圍, 資料範圍1, 條件1, 資料範圍2, 條件2, ...)`|類似`COUNTIF`,差別是多了加總範圍|
|`INDIRECT(ref_text, [a1])`|傳回文字串所指定的參照|
|`TODAY()`|動態取得現在日期|
|`NOW()`|動態取得現在日期、時間,可以按`F9`手動刷新時間|
|`DATEDIF(start_date,end_date,unit)`|參數有`"Y"`, `"M"`, `"D"`,`"YM"`(月差異,日、年都會被忽略)|
|`NETWORKDAYS(start_date, end_date, [holidays])`|忽略自定義工作日計算|
|`NETWORKDAYS.INTL(start_date, end_date, [weekend], [holidays])`|忽略自定義工作日,再加上例行性放假,例如:`[weekend]=1`星期六、星期日|
|`RANK.EQ(number,ref,[order]=0)`|傳回數字在一數列中的排名,會給重複的數字相同的排名並影響後續的排名。而`RANK.AVG`如果有多個數值的排名相同,則會傳回該組數值的平均排名|
- 字串處理
|函式|功能|
|:-:|:-:|
|`LEFT(text, [num_chars])`|傳回字串前幾個字元|
|`RIGHT(text,[num_chars])`|傳回字串後幾個字元|
|`MID(text, start_num, num_chars)`|字串中指定位置開始,傳回特定的字元數|
|`FIND(find_text, within_text, [start_num])`|傳回該尋找字串在第一個字串中的起始位置,從1開始|
|`LEN(text)`|傳回文字字串中的字元數|
- 範例
| 商品 | 品名 | 性別 | 尺寸 |
|:------------:|:--------:|:----:|:----:|
| 羽絨外套-女-M | 羽絨外套 | 女 | M |
|公式|`=LEFT(B3, FIND("-",B3)-1)`|`=MID(B3, FIND("-",B3)+1,1)`|`=RIGHT(B3,LEN(B3)-FIND("-",B3,FIND("-",B3)+1))`|
|說明|find長度再left擷取|find尋找開始位置,再mid擷取|總長度len減去find找到第二個`"-"`,再right擷取|
- 進階
|函式|功能|
|:-:|:-:|
|`INDEX(array, row_num, [column_num])`|陣列中由列和欄號索引選取的元素值|
|`XMATCH (lookup_value、lookup_array、[match_mode]、[search_mode])`|搜尋單欄、單列中的指定位置|
|`RANDBETWEEN(bottom, top)`|取亂數,可以配合`INDEX`去挑選任意表格|
|`CHOOSE(index_num, value1, [value2], ...)`|根據index回傳一個後面的選項|
|`RAND()`|傳回大於或等於 0 且小於 1 的平均分配隨機實數|
|`ROUNDUP(number, num_digits)`|無條件進位到某一指定位數,同樣也有`ROUND`,`ROUNDDOWN`,`MROUND`(四捨五入到所需倍數的數值)|
|`AND`, `OR`, `NOT`|布林邏輯,但要注意excel中不等於符號為`<>`|
|`=SUMPRODUCT (array1, [array2]...) `|陣列相乘總和|
- 動態陣列
一行公式回傳多筆資料,具有`spilling`的特性。函數範圍在結尾加上`#`能參照到所有`spilling`的欄位。
|函式|功能|
|:-:|:-:|
|`UNIQUE(array)`|傳回範圍中唯一值清單|
|`FILTER(array, condition,[if_empty])`|篩選資料範圍,利用布林運算`(condition1)*(condition2)`代表同時符合兩個狀況的資料才會被篩選到|
|`SORT(array, [sort_index], [sort_order], [by_col])`|排序順序的數字:1表示遞增排序(預設);-1表示遞減排序|
|`OFFSET(reference, rows, cols, [height], [width])`|傳回根據所指定列數及欄數之儲存格或儲存格範圍之範圍的參照,配合`COUNTA`,`MATCH`可隨輸入不同,動態改變選取範圍|
- 進階2
|函式|功能|
|:-:|:-:|
|`XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], [match_mode], [search_mode])`|0完全相符;-1下一個較小;1下一個較大;2萬用字元比對(`*`, `?`, `~`)。<br>1預設正向搜尋;-1反向搜尋。|
|`LET(name1, name_value1, calculation_or_name2,...`|新增變數|
|`CONCAT(text1, [text2],…)`|將兩個或多個文字字串合併成一個字串,等同於`&`,但可一次選取範圍|
|`CHAR(number)`|CHAR(65)='A' CHAR(10)=(換行)|
|`PMT(rate, nper, pv, [fv], [type])`|利率、期數、本金|
|`=LAMBDA([parameter1, parameter2, ...],計算)`|於公式->定義名稱**建立subfunction**|