KutoolsforOffice — 一套方案,五大工具。事半功倍。三月特賣:20% 折扣

如何在另一個工作簿中查詢或搜尋特定值?

作者Kelly修改日期

在日常 Excel 工作中,您經常需要從其他工作簿提取資訊。無論是彙整摘要、跨部門對帳,還是引用獨立維護的參考資料,掌握如何從不同工作簿查詢並取得所需資料都至關重要。此功能不僅大幅提升資料一致性,更能有效減少手動錯誤,特別適用於處理分散式資料來源、大型資料集,或與同事共用的工作簿時。

本文探討如何在另一個工作簿中查詢或搜尋特定值,並將相關資料直接傳回您目前使用的 Excel 檔案。文中介紹三種實用方法,涵蓋常見應用情境:經典的 VLOOKUP 函數(支援參照已開啟或已關閉的工作簿)、適合動態需求的 VBA 解決方案,以及其他靈活的替代公式技巧。透過詳盡說明與實際範例,協助您選出最契合自身工作流程的最佳做法。


在 Excel 中從另一個工作簿查詢資料並返回值

假設您正在 Excel 中準備一份水果採購表,需要取得儲存在另一個活頁簿中的最新水果價格。與其手動複製貼上,不如直接從來源活頁簿查詢水果名稱,並自動擷取對應價格,確保資料即時準確且自動更新。以下示範如何運用 VLOOKUP 函數輕鬆達成此任務。

建立範例資料從另一個活頁簿中查詢水果資料

首先開啟您要彙整資料的工作簿,以及包含相關資訊(例如價格)的來源工作簿。

選擇您希望顯示某種水果價格的儲存格,並在該儲存格中輸入下列公式,視需要替換相關細節:

=VLOOKUP(B2,[Price.xlsx]Sheet 1!$A$1:$B$24,2,FALSE)

輸入公式後,按下 Enter。若想將此查詢套用至更多列,只需向下拖曳填滿控點(即儲存格右下角的小方塊),即可快速填滿所需數量的儲存格!

輸入公式以從另一個活頁簿進行查詢

拖曳並填滿公式至其他儲存格

說明與提示:
(1)以上範例公式中:

  • B2 是用來存放欲查詢水果的儲存格。
  • Price.xlsx 是包含價格資料的來源活頁簿,請確認檔案名稱與副檔名正確無誤。
  • Sheet 1 是來源活頁簿中包含查詢表格的工作表。
  • A$1:$B$24 為同時包含鍵值(例如水果名稱)與數值(價格)的範圍。若您的資料區域不同,請務必調整此範圍!
  • 2 表示將從限定區域的第二欄傳回數值。
  • FALSE 確保必須完全符合;若使用 TRUE,則可能傳回錯誤或近似結果。
(2)若您關閉來源工作簿,Excel 會自動更新公式參照,加入檔案路徑(例如:=VLOOKUP(B2,'W:\test\[Price.xlsx]Sheet1'!$A$1:$B$24,2,FALSE))。請確保所參照的檔案仍位於此路徑,否則公式可能會傳回錯誤或 #REF!。若您移動或重新命名來源工作簿,可能需要手動更新公式中的參照。
(3)若出現 #N/A 錯誤,通常表示查詢值不存在於來源區域中。請仔細檢查拼字與區域設定,並確認所有必要工作簿皆可正常存取。

 

運用此方法,您能輕鬆整合來自外部來源的最新價格或資訊!只要參照的工作簿已開啟,或可於正確路徑存取,當來源工作簿內容更新時,返回值便會自動同步。
優點:設定簡單,多數使用者皆能快速上手;資料即時自動更新,省時又可靠。
限制:若檔案路徑或工作簿名稱變更,公式可能變得複雜而難以維護;此外,跨關閉工作簿查詢可能拖慢大型檔案運作,甚至提示您手動更新連結。

若需處理更複雜的資料擷取,或經常在外部活頁簿關閉時仍需參照其中資料,請考慮採用下方提供的 VBA 方法或其他替代公式。

備註功能區公式太複雜、難以記憶嗎?將它儲存為自動圖文集項目,日後只需一鍵即可重複使用!閱讀更多……     免費試用
kutools for excel AI 的螢幕截圖

透過 KUTOOLS AI 解鎖 Excel 的神奇功能

  • 智慧執行:透過簡易指令,輕鬆執行儲存格操作、分析資料,並建立圖表!
  • 自訂公式:打造專屬公式,讓您的工作流程更順暢!
  • VBA 編碼:輕鬆撰寫並套用 VBA 程式碼,立即提升工作效率!
  • 公式解析:輕鬆掌握複雜公式!
  • 文字翻譯:輕鬆打破試算表中的語言隔閡!
運用 AI 驅動的工具強化您的 Excel 能力。立即下載體驗前所未有的高效!

使用 VBA 從另一個已關閉的工作簿中查詢資料並返回值

使用 VLOOKUP 設定查詢參照時,常因來源檔案的路徑、名稱或工作表頻繁變更而令人困擾。在此類情境下,透過 VBA 自動化查詢流程將更為流暢——即使來源活頁簿已關閉,也能自動完成範圍選擇並傳回所需資料。

請依照下列步驟使用 VBA 執行跨活頁簿查詢:

1. 同時按下 Alt+F11 鍵,即可開啟 Microsoft Visual Basic for Applications 編輯器視窗。

2. 在 VBA 編輯器中,點選插入 模組,然後將下列程式碼複製貼上至模組視窗:

VBA:從另一個已關閉的活頁簿查詢資料並返回值

Option Explicit

' Convert column number to column letter
Private Function GetColumn(ByVal Num As Integer) As String
    If Num <= 26 Then
        GetColumn = Chr(Num + 64)
    Else
        GetColumn = Chr((Num - 1) \ 26 + 64) & _
                    Chr((Num - 1) Mod 26 + 65)
    End If
End Function

Sub FindValue()

    Dim xAddress As String
    Dim xString As String
    Dim xFileName As Variant
    Dim xUserRange As Range
    Dim xRg As Range
    Dim xFCell As Range
    Dim xSourceSh As Worksheet
    Dim xSourceWb As Workbook
    
    On Error Resume Next
    
    ' Get current selection address
    xAddress = Application.ActiveWindow.RangeSelection.Address
    
    ' Ask user to select lookup range
    Set xUserRange = Application.InputBox( _
        Prompt:="Lookup values :", _
        Title:="Kutools for Excel", _
        Default:=xAddress, _
        Type:=8)
    
    If Err.Number <> 0 Then Exit Sub
    On Error GoTo 0
    
    ' Limit selection to used range
    Set xUserRange = Application.Intersect(xUserRange, _
                                           Application.ActiveSheet.UsedRange)
    
    ' Ask user to select source workbook
    xFileName = Application.GetOpenFilename( _
                "Excel Files (*.xlsx), *.xlsx", _
                1, _
                "Select a Workbook")
                
    If xFileName = False Then Exit Sub
    
    Application.ScreenUpdating = False
    
    ' Open source workbook
    Set xSourceWb = Workbooks.Open(xFileName)
    Set xSourceSh = xSourceWb.Worksheets.Item(1)
    
    ' Build external reference string
    xString = "='" & xSourceWb.Path & Application.PathSeparator & _
              "[" & xSourceWb.Name & "]" & _
              xSourceSh.Name & "'!$"
    
    ' Loop through user range
    For Each xRg In xUserRange
    
        ' Find matching value in source sheet
        Set xFCell = xSourceSh.Cells.Find( _
                        What:=xRg.Value, _
                        LookIn:=xlValues, _
                        LookAt:=xlWhole, _
                        MatchCase:=False)
        
        ' If found, write formula 2 columns to the right
        If Not xFCell Is Nothing Then
            xRg.Offset(0, 2).Formula = _
                xString & _
                GetColumn(xFCell.Column + 1) & _
                "$" & xFCell.Row
        End If
        
    Next xRg
    
    ' Close source workbook without saving
    xSourceWb.Close False
    
    Application.ScreenUpdating = True

End Sub

重要細節:

  • 此程式碼會將符合的數值傳回至查詢範圍向右偏移兩欄的位置。例如,若您選取 B 欄,結果將顯示於 D 欄。
  • 若希望結果顯示於其他欄位,請將 2 改為其他數值(例如)1 表示下一欄,3 表示向右第三欄),並套用至 xRg.Offset(0,2).Formula 中的對應位置。
  • 當出現提示時,請選擇正確的活頁簿與工作表;此程式碼一律會使用所選檔案中的第一個工作表。若您的來源工作表並非第一個,請調整程式碼。
  • 執行不熟悉的巨集前,務必先儲存檔案,因為巨集執行後將無法復原。

3. 按下 F5 鍵,或點擊執行按鈕以執行巨集,隨即會彈出「Kutools for Excel」對話方塊,提示您選取欲查詢數值的儲存格範圍。

指定您要查詢的資料範圍

4. 選取範圍後,按一下確定。隨即會出現另一個對話方塊,提示您選擇來源活頁簿(即使該活頁簿已關閉)。請瀏覽並選取正確的檔案,然後按一下開啟以完成確認。

選取您要查詢值的活頁簿

巨集執行完畢後,來源活頁簿中的對應數值將自動填入您目前工作表的目標欄位。若部分數值遺漏,請確認目前工作表中待檢索的數值區域是否與來源資料完全一致(比對時會嚴格區分大小寫,並受前後空格字元影響)。

對應的值已從關閉的活頁簿中傳回

優點:可處理已關閉的活頁簿、避免在公式中硬式編碼檔案路徑,並能於執行時靈活選擇來源檔案。
注意事項:必須啟用巨集;VBA 在受保護的工作表或非 Excel 檔案上可能無法運作。若打算經常使用此功能,請將活頁簿儲存為支援巨集的格式(*.xlsm)。

若遇到任何錯誤,請確認工作表或檔案名稱拼寫正確、所選區域適當,且檔案路徑可正常存取。如需偵錯,建議在 VBA 編輯器中逐行逐步執行程式碼。


跨活頁簿查詢的替代公式解決方案

除了傳統的 VLOOKUP 與 VBA 之外,Excel 還提供其他跨活頁簿查詢的方式。根據您的資料結構、偏好使用公式而非巨集,或需要更高彈性(例如向左搜尋或多條件查詢),這些替代方案可能更為合適。

跨活頁簿使用 INDEX 與 MATCH 函數

結合 INDEX 與 MATCH 函數,您就能在另一個活頁簿中向任意方向(左、右、上、下)查詢數值;尤其當您需要擷取的資料欄位不在查詢欄位右側時(這正是 VLOOKUP 的限制),此方法格外實用。

情境:假設您想從另一個已開啟的活頁簿中擷取價格,但水果名稱不一定位於第一欄。

1. 在目標活頁簿中,選取要顯示結果的儲存格(例如 C2),並輸入下列公式(請依需求替換活頁簿、工作表與範圍):

=INDEX([Price.xlsx]Sheet1!$B$1:$B$24, MATCH(B2, [Price.xlsx]Sheet1!$A$1:$A$24,0))

2. 按下 Enter 後,視需要向下拖曳填滿控制點,即可複製或填滿公式。

參數說明:

  • [Price.xlsx]Sheet 1!$B$1:$B$24:儲存價格的範圍。
  • B2:要查詢的水果名稱。
  • [Price.xlsx]Sheet 1!$A$1:$A$24:搜尋查詢值的範圍。
  • 結尾的0可確保完全符合。
若來源工作簿處於關閉狀態,Excel 會自動更新公式中的檔案路徑;如同使用 VLOOKUP 時一樣,請務必確保該路徑持續有效。

優勢:支援向左或向右查詢,適用於更彈性的版面配置!
提示:移動或重新命名來源檔案時,務必同步更新公式,以免出錯!

使用 XLOOKUP 執行跨活頁簿查詢(適用於 Excel 365 及更新版本)

若您使用 Excel 365 或 Excel 2021,全新的 XLOOKUP 函數更具彈性:不僅能輕鬆找出完全相符的資料、支援向左查詢,還能自動處理遺漏值,避免錯誤產生。

使用方式:
在要顯示結果的儲存格中輸入:

=XLOOKUP(B2, [Price.xlsx]Sheet1!$A$1:$A$24, [Price.xlsx]Sheet1!$B$1:$B$24, "Not found")

按下 Enter,並視需要複製公式。此處的「Not found」可替換為任何您希望在查詢失敗時顯示的自訂文字。

優點:比 VLOOKUP 更靈活、更易管理,還能避免許多舊版公式常見的錯誤;但 XLOOKUP 僅適用於較新版本的 Excel。

針對多重條件比對、跨合併工作表搜尋,或避免超大檔案造成的效能問題等複雜需求,建議將原始數據整理為結構化表格,或善用 Excel 內建的 Microsoft Power Query 工具,高效串聯多個活頁簿中的資料。

最佳 Office 生產力工具

🤖KUTOOLS AI 助手:基於以下內容徹底革新數據分析:智慧執行     產生程式碼  建立自訂公式    分析資料並產生圖表  呼叫增強函數……
熱門功能尋找、醒目提示或標記重複值     刪除空白行     合併列或儲存格而不遺失資料     不使用公式的四捨五入……
高級 LOOKUP多重條件 VLookup    多重數值 VLookup     跨多個工作表 VLookup      模糊查找……
高級下拉列表快速建立下拉式清單     相依式下拉式清單     多選下拉式清單……
欄位管理員新增指定數量的欄位移動欄位切換隱藏欄位的可見狀態比較範圍與欄位……
精選功能網格聚焦     設計視圖   增強編輯欄    工作簿與工作表管理員     資源庫(自動文字)  日期提取     合併工作表    加密/解密儲存格    依清單傳送電子郵件     超級篩選      特殊篩選(篩選粗體儲存格/斜體/刪除線……) ......
頂尖 15 工具組12 文字工具添加文本刪除特定字符,……)   50+ 圖表 類型甘特圖,……)   40+ 實用公式基於生日計算年齡,……)   19 插入工具插入二維碼從路徑插入圖片,……)   12 轉換工具金額轉大寫匯率轉換,……)   7 合併和拆分工具高級合併行分割儲存格,……)……以及更多
在您的慣用語言中使用 Kutools—支援英文、西班牙文、德文、法文、中文及另外 40+ 種語言!

運用 Kutools for Excel 強化您的 Excel 技能,體驗前所未有的高效能!Kutools for Excel 提供超過 300 項進階功能,大幅提升生產力並節省寶貴時間。立即點擊,取得您最需要的功能……


Office Tab 為 Office 帶來分頁式介面,讓您的工作更輕鬆自在!

  • 在 Word、Excel、PowerPoint 中啟用分頁式編輯與閱讀功能,以及 Access、Visio 與 Project。
  • 在同視窗的新分頁中開啟並建立多份文件,而非另開新視窗。
  • 每天為您提升 50% 的工作效率,並省下數百次滑鼠點擊!

所有 Kutools 增益集,一個安裝程式

Kutools for Office 套件整合了 Excel、Word、Outlook 與 PowerPoint 的增益集,以及 Office Tab Pro,非常適合需要跨多個 Office 應用程式協作的團隊使用!

ExcelWordOutlookTabsPowerPoint
  • 全能套件— 包含 Excel、Word、Outlook 與 PowerPoint 增益集,以及 Office Tab Pro
  • 一個安裝程式,一個授權— 數分鐘內即可完成設定(支援 MSI)
  • 協同運作更出色— 在多個 Office 應用程式間實現流暢的生產力體驗
  • 30 天完整功能試用— 無需註冊,無需信用卡
  • 超值之選— 比單獨購買各增益集更省費用