如何在Excel中計算標準差:逐步教學 (2026)
由Iron Software團隊撰寫
Microsoft Excel中的vlookup函式是Excel試算表中處理資料的最實用工具之一。 其核心功能是執行垂直查找:您提供查找值,然後Excel在定義範圍的第一列中搜尋匹配項,然後從相同行的另一列返回相應的值。 無論您是在交叉參考產品ID、提取員工詳情,還是在兩個表格中匹配記錄,VLOOKUP都能將數小時的手工工作縮減為一個公式。
本指南涵蓋了您需要入門的所有內容:理解vlookup語法,編寫您的第一個vlookup公式,選擇精確匹配和近似匹配之間的選擇,故障排除常見錯誤,以及結合VLOOKUP與match函式進行更高級的使用。 您還會找到一個快速參考表以及一個開發者部分,展示如何使用IronXL以編程方式從excel文件中檢索資料。
理解VLOOKUP語法
在編寫公式之前,有助於了解每個部分的功能。 vlookup語法遵循以下結構:
=VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])
完整展開:lookup_value、table_array、col_index_num、range_lookup是每個VLOOKUP公式使用的四個參數。 以下是每個參數的含義:
- lookup_value:您要查找的值。 這可以是名稱、員工ID、產品ID或者任何其他標識符。
- table_array:包含您資料的資料範圍或表範圍。 VLOOKUP始終搜尋此範圍的第一列。
- col_index_num:列索引編號,指示Excel返回哪個列的值。 如果第一列存放ID,第二列存放名稱,輸入2將返回名稱。 第三列將是3,依此類推。
- range_lookup:最後一個參數,控制匹配行為。 輸入FALSE獲得精確匹配,或輸入TRUE獲得近似匹配。
VLOOKUP要求查找列是表範圍中的第一列,它只從此列右邊的列提取資料。 它不能查看查詢鍵左邊的列。
vlookup函式用於在指定表中查找資訊,並根據提供的行和列索引返回重疊單元格中的值。

方法1:編寫基本的VLOOKUP公式(精確匹配)
使用vlookup最常見的方法是精確匹配模式。 當您擁有唯一鍵(例如員工ID或產品ID)並需要準確的結果時,這是最安全的選擇。
步驟1:組織您的資料,使查找列成為表範圍的第一列。 VLOOKUP適用於垂直資料,並要求表垂直排列,意味著每一行代表一個記錄。
步驟2:點擊您希望結果顯示的單元格。
步驟3:輸入公式。 以員工表為例子:
=VLOOKUP(G2,A2:D9,2,FALSE())
這裡,G2 是您要搜索的查找值(員工ID),A2:D9 是表範圍(包含所有資料的單元格範圍),2 是 col_index_num(從第二列返回名稱),而 FALSE 指定精確匹配。
步驟4:按下Enter。 公式將返回與您搜索鍵相同行中匹配的精確值。
為了避免返回錯誤資料,在VLOOKUP中為精確匹配始終使用FALSE。如果省略 range_lookup 參數,VLOOKUP 將預設為近似匹配模式,這可能會導致需要精確匹配時出現意外和錯誤的結果。
在大多數情況下,當您擁有一個唯一鍵時,建議使用vlookup的精確匹配模式(FALSE)以確保準確的結果。

方法2:從不同的列檢索資料
一旦您了解列索引編號的運作方式,您可以通過更改而從表的任何列檢索資料。
使用同一員工表:
- =VLOOKUP(G2, A2:D9, 2, FALSE) 返回名稱(範圍中的第二列)
- =VLOOKUP(G2, A2:D9, 3, FALSE) 返回部門(第三列)
- =VLOOKUP(G2, A2:D9, 4, FALSE) 返回薪水(第四列)
列的編號始終從表範圍的左邊緣開始計算,而不是從工作表的列A開始。 所以如果您的表範圍從列C開始,那麼首先計算的列就是列C本身。
VLOOKUP只能從查找列的右邊提取資料,這限制了資料檢索的靈活性。

方法3:對範圍進行近似匹配
近似匹配和精確匹配有不同的目標。 近似匹配模式(range_lookup設定為TRUE)設計用於您在範圍內查找值的情況,而不是具體的記錄。 稅率等級表或傭金階梯系統是常見範例。
當range_lookup為TRUE時,VLOOKUP執行近似匹配,意味著它匹配一個值範圍而不是單個精確值。 VLOOKUP有兩種匹配模式:精確匹配和近似匹配,兩者均由最後一個參數range_lookup控制。
重要:對於近似匹配模式,資料表必須按第一列升序排序,以避免錯誤的結果。 如果提供給VLOOKUP的表未按升序排序,使用近似匹配模式可能會導致錯誤的結果。 對於近似匹配模式,資料表必須按第一列升序排序,以避免錯誤的結果。 VLOOKUP僅在滿足此排序要求時才支持近似匹配。
範例公式:
=VLOOKUP(B2, $E$2:$F$6, 2, TRUE)
這將尋找B2中的值落在哪個範圍中,並從範圍的第二列返回比率。
方法4:在複製公式時使用VLOOKUP的絕對引用
當您將vlookup公式複製到其他單元格時,除非您將其鎖定,否則表範圍引用會移動。 在複製VLOOKUP公式時,使用$符號鎖定表範圍以建立絕對引用。 這可確保當公式被複製時表範圍不會移動。 這將整個表引用固定住,而查找值單元格會自動調整。
=VLOOKUP(A2, $C$2:$F$50, 2, FALSE)
C2和F50之前的美元符號建立了絕對引用,確保當公式向下複製時表範圍不會移動。
方法5:將VLOOKUP與MATCH函式結合使用
MATCH函式可嵌入在VLOOKUP中以建立動態列查找。MATCH自動找到列標頭的位置,而不是輸入固定的列號。
在VLOOKUP公式中使用MATCH函式可建立動態列索引,使來自表中列的資料檢索能根據其位置變化。
=VLOOKUP(H2,A2:E6,MATCH(H3,A1:E1,0),FALSE())
此處,MATCH(H3, A1:E1, 0)在您的標頭行中查找儲存在H3中的列名並返回其位置號。 然後VLOOKUP使用該數字作為col_index_num。
當VLOOKUP與MATCH結合使用時,通過允許使用者指定要搜索的列作為動態引用而不是靜態數字來增強靈活性。 MATCH與VLOOKUP的整合有助於防止資料結構變化時(如新增或删除列)發生的錯誤。
全vlookup lookup_value table_array col_index_num參陣列依然適用於此; 只有第三個參數變為動態。

在Excel表格中使用VLOOKUP
如果您的資料被格式化為Excel表(插入>表),VLOOKUP可以使用結構化引用而不是普通的單元格地址。 結構化引用使公式更容易閱讀,並在表中新增新行時自動擴展。
=VLOOKUP([@EmployeeID], EmployeeTable, 3, FALSE)
結構化引用還減少了手動更新絕對引用的需求,並在行數經常變化的大型資料集中很好地工作。 樞紐分析表可以在VLOOKUP結果資料被檢索後對此方法進行補充總結。
常見問題和排除故障
N/A錯誤
VLOOKUP中的#N/A錯誤表示在指定的表範圍中找不到查找值,這可能由於不同原因如錯誤的資料或格式問題而發生。
常見原因:
- 查找值或來源資料第一列中的額外空格
- 文字值以數字形式儲存或數字儲存為文字(如果型別不匹配,搜索結果將失敗)
- 查找值在資料範圍內根本不存在
- 在精確匹配模式下嘗試部分匹配(VLOOKUP不支持部分匹配)
要處理VLOOKUP中的#N/A錯誤,您可以使用IFNA函式在發生錯誤時返回自定義消息或值:
=IFNA(VLOOKUP(G2, A2:D9, 2, FALSE), "未找到")
使用IFERROR函式也可以捕捉VLOOKUP #N/A錯誤,但重要的是要注意它會捕捉所有型別的錯誤,而不僅僅是#N/A,這可能導致掩蓋其他問題。
VLOOKUP返回錯誤的值
如果vlookup結果看起來正確但實際上是錯誤的,請檢查是否意外啟用了近似匹配模式。缺少或錯誤設置的最後一個參數預設為TRUE,這會觸發近似匹配模式。 將匹配模式設置為FALSE以進行精確查找。
VLOOKUP僅返回資料集中找到的第一個匹配項,當多個條目滿足查找標準時這可能是一個限制。 如果查找列中存在重複的個別值,VLOOKUP將始終在第一個匹配項上停止並忽略其餘的結果,可能會返回意外結果。
查找列不是第一列
VLOOKUP通過僅搜索表範圍的第一列來工作。 如果您需要搜索的列不在資料範圍的左側,您有兩種選擇:新增一個輔助列以將鍵移至左側,或轉換為索引匹配組合,可以在任何方向搜尋。
公式返回#REF!
這通常意味著col_index_num大於您的表範圍中的列數。 檢查您指定的列號是否未超出表範圍的寬度。
螢幕截圖建議:螢幕截圖顯示公式欄中的IFNA公式以及當輸入不存在的ID時結果單元格中出現的友好 "未找到" 文字。
快速參考:VLOOKUP模態與使用案例
| 工作場景 | range_lookup | 公式範例 | 筆記 |
|---|---|---|---|
| 通過員工ID查找(精確) | FALSE | =VLOOKUP(A2,$C$2:$F$50,2,FALSE) | 建議使用唯一鍵 |
| 通過產品ID查找 | FALSE | =VLOOKUP(B2,$E$2:$H$100,3,FALSE) | 精確匹配,使用$安全複製 |
| 傭金起點(範圍) | TRUE | =VLOOKUP(C2,$J$2:$K$6,2,TRUE) | 表必須升序排序 |
| 動態列通過索引匹配或MATCH | FALSE | =VLOOKUP(H2,A2:E6,MATCH(H3,A1:E1,0),FALSE) | 列由單元格值驅動 |
| 包裝IFNA | FALSE | =IFNA(VLOOKUP(...),"未找到") | 乾淨地處理缺失條目 |
Vlookup lookup_value table_array參數始終是必需的。 最後一個參數技術上是可選的,但在實踐中省略它可能會導致錯誤的結果。
VLOOKUP的局限性需謹記
VLOOKUP是大多數日常任務中可靠的excel函式,但在您在生產模型中依賴它之前,需要了解其幾個內建的限制:
- 它只能搜索表範圍的第一列,這意味著每次查找僅限於一列
- 它只返回第一個匹配項,因此當大型資料集中包含重複鍵時不適用
- col_index_num是一個靜態數字,這意味著將新列插入到表中可能會使計數偏移並且公式返回失敗
- 文字值和數字必須型別匹配,否則查找將靜默失敗
為了更好的功能,在較新的excel版本中使用XLOOKUP替代VLOOKUP。 XLOOKUP是Microsoft 365和Excel 2021中可用的新功能,解決了左列和首個匹配的限制。 儘管如此,VLOOKUP在所有excel版本中仍是廣泛支持的,並且繼續為絕大多數日常查找正確工作。
開發者:使用IronXL讀取和查找Excel資料
如果您是.NET或C#開發者,需要以程式化方式複製VLOOKUP式查找,IronXL為您提供一個乾淨的API來讀取excel試算表,迭代行和檢索單元格值而不需Microsoft Office或Interop。
通過NuGet安裝IronXL:
安裝 IronXL.Excel 套件
下面的例子載入了一本活頁簿,從excel表中讀取了一個員工ID和名稱對的表,並執行了一個等價於=VLOOKUP(lookupId, A2:D9, 2, FALSE)的查找:
using IronXL;
// Load the workbook
WorkBook workBook = WorkBook.Load("vlookup_demo.xlsx");
WorkSheet sheet = workBook.WorkSheets[0];
// Define the data range (equivalent to table_array in VLOOKUP)
string lookupId = "E004";
string lookupColumn = "A"; // first column (Employee ID)
string returnColumn = "B"; // second column (Name)
int dataStartRow = 2;
int dataEndRow = 9;
string result = "Not Found";
for (int row = dataStartRow; row <= dataEndRow; row++)
{
// Read the cell value from the lookup column
string cellValue = sheet[$"{lookupColumn}{row}"].StringValue;
if (cellValue == lookupId)
{
// Return the corresponding value from the return column
result = sheet[$"{returnColumn}{row}"].StringValue;
break; // Return the first match, same as VLOOKUP
}
}
Console.WriteLine($"Employee Name: {result}");
// Output: Employee Name: David Lee
using IronXL;
// Load the workbook
WorkBook workBook = WorkBook.Load("vlookup_demo.xlsx");
WorkSheet sheet = workBook.WorkSheets[0];
// Define the data range (equivalent to table_array in VLOOKUP)
string lookupId = "E004";
string lookupColumn = "A"; // first column (Employee ID)
string returnColumn = "B"; // second column (Name)
int dataStartRow = 2;
int dataEndRow = 9;
string result = "Not Found";
for (int row = dataStartRow; row <= dataEndRow; row++)
{
// Read the cell value from the lookup column
string cellValue = sheet[$"{lookupColumn}{row}"].StringValue;
if (cellValue == lookupId)
{
// Return the corresponding value from the return column
result = sheet[$"{returnColumn}{row}"].StringValue;
break; // Return the first match, same as VLOOKUP
}
}
Console.WriteLine($"Employee Name: {result}");
// Output: Employee Name: David Lee
Imports IronXL
' Load the workbook
Dim workBook As WorkBook = WorkBook.Load("vlookup_demo.xlsx")
Dim sheet As WorkSheet = workBook.WorkSheets(0)
' Define the data range (equivalent to table_array in VLOOKUP)
Dim lookupId As String = "E004"
Dim lookupColumn As String = "A" ' first column (Employee ID)
Dim returnColumn As String = "B" ' second column (Name)
Dim dataStartRow As Integer = 2
Dim dataEndRow As Integer = 9
Dim result As String = "Not Found"
For row As Integer = dataStartRow To dataEndRow
' Read the cell value from the lookup column
Dim cellValue As String = sheet($"{lookupColumn}{row}").StringValue
If cellValue = lookupId Then
' Return the corresponding value from the return column
result = sheet($"{returnColumn}{row}").StringValue
Exit For ' Return the first match, same as VLOOKUP
End If
Next
Console.WriteLine($"Employee Name: {result}")
' Output: Employee Name: David Lee
此方法模仿vlookup在Excel中的工作方式:它迭代資料範圍的第一列並從相同行中指定的列返回相應的值。 對於大型資料集,您可以將這個方法擴展到基於字典的查找以獲得更快的性能。
IronXL還支持使用單元格地址表示法讀取任意列E和其他列,迭代命名表中的結構化引用,並將結果導出回XLSX而不需任何Office依賴。
開始使用免費試用在您的項目中測試IronXL。 完整文件可在ironsoftware.com/csharp/excel/獲得。
延伸閱讀:
包裝
知道如何在excel中使用vlookup可以打開廣泛的實用工作流程:從ID列出名單、匹配價格與產品ID、從員工名錄檢索部門資料等等。 對於具有唯一鍵的日常查找,精確匹配(FALSE)幾乎總是正確的起點。 當您需要基於範圍的結果時,只要資料升序排序,近似匹配(TRUE)就能很好地工作。 為了更大的靈活性,索引匹配組合或在excel vlookup中巢狀match函式完全去除了左列限制。
如果您正在構建使用excel資料進行大規模工作的.NET應用程式,IronXL使您可以在無需Office Interop程式碼的情況下讀取、搜索和檢索excel試算表中的資料。 趕快拿起免費試用,看看您能多快地將試算表智能新增到您的應用中。




