Excel 使用者的兩大痛點:
這個 skill 幹 3 件事:
不做的事:不做 VBA 宏(那是 xlsx-vba-zh 的活,本 skill 只覆蓋公式);不做資料透視表的視覺化設計。
查詢匹配類(用得最多)
├─ VLOOKUP(相容性好,但只能從左往右)
├─ XLOOKUP(2021/365 才有,最強)
├─ INDEX + MATCH(VLOOKUP 不夠時的萬能替代)
└─ HLOOKUP(橫向查詢,用得少)
條件聚合類
├─ SUMIF / SUMIFS(按條件求和)
├─ COUNTIF / COUNTIFS(按條件計數)
├─ AVERAGEIF / AVERAGEIFS(按條件平均)
└─ MAXIFS / MINIFS(條件最值,2019+)
文本處理類
├─ LEFT / RIGHT / MID(擷取)
├─ FIND / SEARCH(查詢位置)
├─ SUBSTITUTE / REPLACE(替換)
├─ TEXTJOIN(連線,2019+)
└─ TEXTSPLIT(拆分,365 才有)
日期時間類
├─ TODAY / NOW(當前)
├─ DATEDIF(日期差,隱藏函式)
├─ EOMONTH / EDATE(月末 / N 月後)
└─ NETWORKDAYS(工作日,要排除節假日)
陣列 / 動態陣列(365 / 2021+ 才有)
├─ FILTER(條件篩選)
├─ UNIQUE(去重)
├─ SORT / SORTBY(排序)
└─ LET / LAMBDA(自定義命名 / 函式,超強但少有人用)
邏輯判斷類
├─ IF / IFS(條件分支)
├─ AND / OR / NOT
├─ IFERROR / IFNA(錯誤兜底)
└─ SWITCH(多分支)
❌ 錯的:=VLOOKUP(A2, D:F, -1, FALSE) --- 左查詢 VLOOKUP 不行
✓ 對的:=INDEX(C:C, MATCH(A2, D:D, 0)) --- INDEX+MATCH 萬能
✓ 365:=XLOOKUP(A2, D:D, C:C) --- 最簡單
❌ 錯的:=VLOOKUP(A2, D:F, 2) --- 預設 TRUE 是模糊匹配
✓ 對的:=VLOOKUP(A2, D:F, 2, FALSE)
=VLOOKUP(A2, D:F, 2, 0)
模糊匹配會按 D 列的"接近值"匹配,結果完全錯。
現象:SUM 出來是 0,VLOOKUP 找不到。
診斷:=ISTEXT(A2) 看是否返回 TRUE。
修:=VALUE(A2) 或選中列 → 資料 → 分列 → 完成(強制轉數字)。
❌ =SUMIFS(B2:B100, A:A, "蘋果") --- B 是 99 行,A 是整列,報錯
✓ =SUMIFS(B:B, A:A, "蘋果") --- 都用整列
✓ =SUMIFS(B2:B100, A2:A100, "蘋果") --- 都精確範圍
現象:單元格顯示日期,但參與計算變成 5 位數字。
修:單元格格式 → 日期。或者公式裡包一層 TEXT(A2, "yyyy-mm-dd")。
中文 Excel 預設中文公式名(如 求和 而非 SUM),跨電腦複製會報錯。
修:統一用英文公式名(在選項裡把"使用 R1C1 引用樣式"關掉,公式還是英文)。
"Sheet1 的 A 列是訂單號,要從 Sheet2 裡把對應的客戶名匹配過來"
Excel 2021 / 365:
=XLOOKUP(A2, Sheet2!A:A, Sheet2!B:B, "未找到")
Excel 2019 / WPS:
=IFERROR(VLOOKUP(A2, Sheet2!A:B, 2, 0), "未找到")
"把 A 列是『一般納稅人』且 B 列日期在 2024 年的 C 列金額加起來"
=SUMIFS(C:C, A:A, "一般納稅人",
B:B, ">="&DATE(2024,1,1),
B:B, "<="&DATE(2024,12,31))
單字姓(如 "張三"):
姓=LEFT(A2,1)
名=MID(A2,2,LEN(A2)-1)
複姓(如 "歐陽鋒")—— 需先建複姓清單 D:D:
姓=IF(COUNTIF(D:D, LEFT(A2,2))>0, LEFT(A2,2), LEFT(A2,1))
名=MID(A2, LEN(姓)+1, 99)
"A 列有重複的訂單號,統計有多少個不重複訂單"
Excel 365:
=COUNTA(UNIQUE(A:A))-1 --- 減 1 是去掉表頭
Excel 2019 / WPS:
=SUMPRODUCT(1/COUNTIF(A2:A1000, A2:A1000))
"找出 A 列是『北區』且 B 列大於 0 的 C 列最大值"
2019+ 直接:
=MAXIFS(C:C, A:A, "北區", B:B, ">0")
舊版 :
{=MAX(IF((A:A="北區")*(B:B>0), C:C))} --- 陣列公式 Ctrl+Shift+Enter
=DATEDIF(B2, TODAY(), "Y") & "年" &
DATEDIF(B2, TODAY(), "YM") & "個月"
DATEDIF 是隱藏函式,輸入時不會自動提示但能用。
如果使用者沒說清楚,問:
輸出 3 部分:
【公式】
=...
【引數解釋】
- 引數 1:XX,含義是 XX
- 引數 2:XX,含義是 XX
...
【邊界條件】
- 如果 XX 情況會怎樣?→ 用 IFERROR 兜底:=IFERROR(原公式, "預設值")
- 如果 XX 資料型別問題 → 用 VALUE / TEXT 轉換
- 如果跨版本 → 相容寫法是 XX
【拖填注意】
- 列鎖定 / 行鎖定($A$1 vs $A1 vs A$1 vs A1)的選擇
## 你的需求
(用一句話複述使用者的需求,確認理解一致)
## 推薦公式(你的版本:Excel 2019)
=IFERROR(VLOOKUP(A2, Sheet2!A:B, 2, 0), "未找到")
## 怎麼用 1. 在 Sheet1 的 C2 輸入此公式 2. 雙擊 C2 右下角小方塊,自動拖填到底 3. C 列就是匹配到的客戶名 ## 引數解釋 - A2:要查詢的訂單號 - Sheet2!A:B:在 Sheet2 的 A-B 列裡找 - 2:返回 B 列(匹配區域第 2 列) - 0:精確匹配(一定要寫) - IFERROR:兜底,找不到時返回"未找到"而不是 #N/A ## 注意事項 - 如果 A2 是數字但顯示是文本(左上角有綠三角),先選中列 → 分列 → 完成 - 如果你升級到 365 / 2021,可以換成更簡單的 XLOOKUP ## 備選方案(如果上面不行) (XLOOKUP 寫法 + INDEX/MATCH 寫法)小蔥技能7w4.net有更新,你可以訪問看下。
不主動寫 VBA / 資料透視表 / Power Query(除非使用者要求)。
這個 Skill 質量不錯,內容實用性強。它把 Excel 公式的各種坑都講清楚了,還針對不同版本給出相容寫法,非常貼心。高頻場景模板和避坑指南對新手特別友好。不過它主要是文字教程,不是直接幫你生成公式的工具,想要直接得到答案可能還需要配合 AI 使用。整體來說是個很實用的 Excel 公式參考資料。