跳至主要内容

如何快速在多个工作表或工作簿中搜索一个值?

Author: Sun Last Modified: 2025-07-31

您是否曾经需要查找一个特定的值,而该值可能出现在不同的工作表中,甚至分布在多个Excel工作簿里?这是一个常见的情况,尤其是在处理大型项目、月度报告时,或者当需要整合分散在多个文件中的信息时。手动逐一查看每个工作表或文件不仅耗时,而且容易出错。在本教程中,您将发现几种高效搜索数据的有效方法,无论是在一个工作簿内、多个工作簿间,还是基于公式或整合数据解决方案进行搜索。这些方法能够满足您在日常Excel工作流程或数据分析项目中可能遇到的实际需求。

使用查找和替换功能在一个工作簿的多个工作表中搜索值

通过VBA在文件夹的所有工作簿中搜索值

使用Kutools for Excel快速搜索多个打开的工作簿中的值 good idea3

使用Excel公式跨多个工作表搜索值


使用查找和替换功能在一个工作簿的多个工作表中搜索值

Excel的查找和替换功能是一种基本但有效的方法,可以快速在同一个工作簿的多个工作表中查找特定值。此方法在您知道要搜索哪些工作表时最为有用,或者当您的数据在单个文件中相对结构化良好时也非常适用。它不支持跨不同文件或关闭的工作簿进行搜索,但提供了一种直接的快速查找方式。

1. 首先,按住Ctrl键并依次点击“工作表标签栏”中的每个工作表来选择要包含在搜索中的工作表标签。这确保搜索将同时应用于所有选定的工作表。参见截图:

A screenshot of selecting multiple sheet tabs in Excel using the Ctrl key

2. 一旦选择了所需的工作表,按下Ctrl + F以打开“查找和替换”对话框。在“查找”选项卡下的“查找内容”文本框中输入要查找的值,然后点击“查找全部”按钮。Excel将立即显示所选工作表中包含您搜索值的所有单元格列表及其位置。参见截图:

A screenshot of the Find and Replace window in Excel showing the Find what field

提示:查找和替换工具仅在打开且可见的工作表中搜索。如果您希望扩展搜索范围至其他工作表,请务必按照上述说明选择它们。如果意外遗漏了一个工作表,只需在选择后重复操作即可。

注意事项:此方法不会搜索已关闭或隐藏的工作簿,并且不会自动突出显示单元格——它只会列出结果供导航使用。

故障排查:如果未看到预期结果,请仔细检查您的工作表选择,并确认没有应用任何可能隐藏或限制搜索的筛选器或单元格保护。


轻松跨多个工作表和工作簿查找和替换值

Kutools for Excel 的高级查找和替换功能提供了一种高效的方法,可以在多个工作表甚至所有打开的工作簿中搜索和替换值。借助这一高级功能,您在处理大型数据集时可以节省时间并消除错误,使您的 Excel 任务更快速、更准确。
A screenshot of Kutools for Excel's Find and Replace feature in action

Kutools for Excel - 通过超过300个必备工具,让Excel功能大幅提升。永久免费享受AI功能!立即获取


通过VBA在文件夹的所有工作簿中搜索值

如果您需要在保存于文件夹中的多个工作簿中搜索特定值(包括尚未打开的文件),Excel的内置工具无法直接完成此任务。在这种情况下,VBA(Visual Basic for Applications)宏可以帮助您自动化这一过程,系统地打开文件夹中的每个工作簿,扫描所有工作表,并记录匹配项的位置。这种方法对于定期审计或在归档文件或批量文件中检查值非常实用。

1. 首先,在Excel中打开一个新的(或空白)工作簿。选择希望搜索结果显示的单元格(通常是A1)。按下Alt + F11以启动Microsoft Visual Basic for Applications编辑器窗口。

2. 在VBA编辑器中,转到“插入”>“模块”以创建一个新模块,然后将以下VBA代码粘贴到模块窗口中。

VBA:搜索文件夹中所有工作簿的值。

Sub SearchFolders()
'UpdatebyKutoolsforExcel20200913
    Dim xFso As Object
    Dim xFld As Object
    Dim xStrSearch As String
    Dim xStrPath As String
    Dim xStrFile As String
    Dim xOut As Worksheet
    Dim xWb As Workbook
    Dim xWk As Worksheet
    Dim xRow As Long
    Dim xFound As Range
    Dim xStrAddress As String
    Dim xFileDialog As FileDialog
    Dim xUpdate As Boolean
    Dim xCount As Long
    Dim xAWB As Workbook
    Dim xAWBStrPath As String
    Dim xBol As Boolean
    Set xAWB = ActiveWorkbook
    xAWBStrPath = xAWB.Path & "\" & xAWB.Name
    On Error GoTo ErrHandler
    Set xFileDialog = Application.FileDialog(msoFileDialogFolderPicker)
    xFileDialog.AllowMultiSelect = False
    xFileDialog.Title = "Select a forlder"
    If xFileDialog.Show = -1 Then
        xStrPath = xFileDialog.SelectedItems(1)
    End If
    If xStrPath = "" Then Exit Sub
    xStrSearch = "KTE"
    xUpdate = Application.ScreenUpdating
    Application.ScreenUpdating = False
    Set xOut = Worksheets.Add
    xRow = 1
    With xOut
        .Cells(xRow, 1) = "Workbook"
        .Cells(xRow, 2) = "Worksheet"
        .Cells(xRow, 3) = "Cell"
        .Cells(xRow, 4) = "Text in Cell"
        Set xFso = CreateObject("Scripting.FileSystemObject")
        Set xFld = xFso.GetFolder(xStrPath)
        xStrFile = Dir(xStrPath & "\*.xls*")
        Do While xStrFile <> ""
            xBol = False
            If (xStrPath & "\" & xStrFile) = xAWBStrPath Then
                xBol = True
                Set xWb = xAWB
            Else
                Set xWb = Workbooks.Open(Filename:=xStrPath & "\" & xStrFile, UpdateLinks:=0, ReadOnly:=True, AddToMRU:=False)
            End If
            For Each xWk In xWb.Worksheets
                If xBol And (xWk.Name = .Name) Then
                Else
                Set xFound = xWk.UsedRange.Find(xStrSearch)
                If Not xFound Is Nothing Then
                    xStrAddress = xFound.Address
                End If
                Do
                    If xFound Is Nothing Then
                        Exit Do
                    Else
                        xCount = xCount + 1
                        xRow = xRow + 1
                        .Cells(xRow, 1) = xWb.Name
                        .Cells(xRow, 2) = xWk.Name
                        .Cells(xRow, 3) = xFound.Address
                        .Cells(xRow, 4) = xFound.Value
                    End If
                    Set xFound = xWk.Cells.FindNext(After:=xFound)
                Loop While xStrAddress <> xFound.Address
                End If
            Next
            If Not xBol Then
            xWb.Close (False)
            End If
            xStrFile = Dir
        Loop
        .Columns("A:D").EntireColumn.AutoFit
    End With
    MsgBox xCount & " cells have been found", , "Kutools for Excel"
ExitHandler:
    Set xOut = Nothing
    Set xWk = Nothing
    Set xWb = Nothing
    Set xFld = Nothing
    Set xFso = Nothing
    Application.ScreenUpdating = xUpdate
    Exit Sub
ErrHandler:
    MsgBox Err.Description, vbExclamation
    Resume ExitHandler
End Sub

3. 按下F5键或点击“运行”按钮执行此宏。将出现一个“选择文件夹”对话框,允许您选择包含要搜索的工作簿的文件夹。参见截图:

A screenshot of the Select a Folder dialog in Excel for choosing a folder to search

4. 点击确定。搜索完成后,将弹出一个消息框,告知您找到包含指定值的单元格总数。参见截图:

A screenshot of a dialog showing the number of cells found during a search in Excel

5. 点击确定以关闭消息框。所有找到该值的位置将列在一个新的工作表中,包括工作簿名称、工作表名称、单元格引用以及确切的单元格内容供您审查。

A screenshot of the list of found cells in Excel after using VBA search

提示:当前搜索词在VBA中设置为“KTE”。您可以自定义它,通过更改代码中的xStrSearch = "KTE"行为您想要查找的任何值。

注意事项:在运行之前,请确保所有相关工作簿都已保存并关闭(除了运行宏的那个工作簿,它可以保持打开状态)。包含大量或复杂Excel文件的大型文件夹可能需要一些时间来处理。在执行过程中请勿中断宏。

故障排查:如果遇到错误,请验证所有文件都是真实的Excel工作簿(未损坏或受密码保护),并且您的宏安全设置允许代码运行。如果宏未能完成,请尝试先在较小的文件集上运行它。


使用Kutools for Excel快速搜索多个打开的工作簿中的值

当您想在已经打开的多个工作簿中进行搜索时,Kutools for Excel提供了专用的“查找和替换”窗格,使整个过程更加轻松和有条理。这对于无需编写脚本或复杂设置即可快速扫描工作簿非常有帮助,特别适合经常同时处理多个文件并需要用户友好、简单明了的工具来管理搜索的用户。

Kutools for Excel 提供了超过 300 种高级功能,简化复杂任务,提升创造力与效率。 通过集成 AI 能力,Kutools 能够精准自动执行任务,让数据管理变得轻松简单。Kutools for Excel 的详细信息...         免费试用...

1. 在任意打开的工作簿中,转到 Kutools 选项卡并选择 导航。然后点击 查找和替换 按钮 Find and Replace button 以打开 查找和替换 窗格,通常位于Excel窗口的左侧。参见截图:

A screenshot of the Find and Replace pane in Excel

2. 在 查找 选项卡中,将要搜索的值输入到 查找内容 文本框中。从 所有工作簿范围内 下拉菜单中选择,以在每个打开的工作簿中执行搜索。然后点击 查找全部 以立即显示所有匹配单元格的列表及其位置。参见截图:
A screenshot of the Kutools Find and Replace pane with the 'Find what' field filled out

提示: Kutools for Excel的高级查找和替换工具不仅允许您在所有打开的工作簿中搜索和替换数据,还可以专门在选定的工作表、活动工作簿、当前工作表甚至当前选定区域中进行搜索和替换。这使您可以根据需要获得定制化的控制。
A screenshot of Kutools for Excel’s Find and Replace dialog showing results across all workbook

注意事项:确保在开始搜索之前所有要搜索的工作簿均已打开,因为此工具无法搜索未在Excel中打开的文件。

故障排查:如果某些文件未出现在搜索结果中,请再次确认它们已完全加载到Excel中,并且不在受保护视图或只读模式下,这可能会限制搜索访问权限。

演示:使用Kutools for Excel搜索多个打开的工作簿中的值

 
Kutools for Excel:超过 300 种实用工具触手可及!永久免费享受 AI 功能!立即下载!

使用Excel公式跨多个工作表搜索值

在您工作簿中有几个已知的工作表名称,并且需要检查特定值是否存在以及存在于哪些工作表中时,可以使用Excel公式动态地对它们进行搜索。这种方法特别适用于希望自动刷新搜索结果,并且工作表列表相对静态或在单独表格中管理的情况。

此方法要求您已经知道或列出所有要搜索的工作表名称。它最适用于自动化检查、仪表板,或者每当您想构建摘要参考而不每次都运行完整扫描时。

优点: 结果会随着数据的变化自动更新;不需要脚本或插件;所有操作都在工作簿内完成。
缺点: 不适合工作表名称频繁变化或拥有大量工作表的情况。

示例场景:假设您有三个名为Sheet1Sheet2Sheet3的工作表。您想知道特定值(如“Invoice123”)是否出现在这些工作表的A1单元格中,或者简单地检查该值是否存在于这些工作表中的任何地方。

步骤1. 假设您在D2:D4(D2: Sheet1, D3: Sheet2, D4: Sheet3)中有一个工作表名称列表。在E1中输入要搜索的值(例如“Invoice123”)。然后,在F2中输入以下公式:

=IF(COUNTIF(INDIRECT("'"&D2&"'!A:A"), $E$1) >0, "Found", "Not Found")

步骤2. 将公式从F2拖动到F4,以检查D2:D4中列出的所有工作表。这将为每个工作表返回“已找到”或“未找到”。

工作原理:该公式使用INDIRECT创建对每个列出的工作表的引用,并使用COUNTIF检查E1中的值是否出现在每个工作表的A列中。如有必要,调整范围A:A以定位另一列或特定范围(例如A1:Z100)。

额外提示:要检索包含该值的工作表名称,请使用以下数组公式(在旧版Excel中使用Ctrl + Shift + Enter输入,或在Microsoft 365/Excel 2021+中作为常规公式输入):

=TEXTJOIN(", ",TRUE,IF(COUNTIF(INDIRECT("'"&D2:D4&"'!A:A"), $E$1)>0, D2:D4, ""))

这将返回一个逗号分隔的包含该值的所有工作表名称的列表。注意INDIRECT——它仅适用于打开的工作簿,不允许搜索关闭的文件。

注意事项:如果工作表名称被更改或删除,公式将返回#REF!错误;始终验证工作表名称列表是否正确。对于较大的工作簿,基于INDIRECT的公式可能会降低工作簿的性能。

故障排查:如果看到错误,请检查所有引用的工作表是否存在,并确认搜索范围是否正确。对于动态工作表列表,请考虑使用命名范围或数据验证以自动更新工作表列表。


相关文章:


最佳 Office 办公效率工具

🤖 Kutools AI 助手:基于智能执行,彻底革新数据分析 生成代码创建自定义公式分析数据并生成图表调用 Kutools Functions
热门功能:查找、选中项的背景色或标记重复项|删除空行|合并列或单元格且不丢失数据|四舍五入(无公式)...
高级 LOOKUP多条件查找 (VLookup)多值查找 (VLookup)多表查找 (VLookup Across Multiple Sheets)模糊查找 (Fuzzy Lookup)...
高级下拉列表快速创建下拉列表依赖型下拉列表多选下拉列表...
列管理器添加指定数量的列移动列切换隐藏列的可见状态比较区域及列...
特色功能网格聚焦设计视图增强编辑栏工作簿 & 工作表管理器资源库(自动文本)|日期提取合并数据加密/解密单元格按列表发送电子邮件超级筛选特殊筛选(筛选粗体/倾斜/删除线等)...
热门15 大工具集12 款文本工具添加文本删除特定字符等)50+ 种图表 类型甘特图等)40+ 实用公式基于生日计算年龄等)19 款插入工具插入二维码按路径插入图片等)12 种转换工具小写金额转大写汇率转换等)7 款合并与分割工具高级合并行分割单元格等)...更多精彩等你发现
使用 Kutools,支持您的首选语言——包括英语、西班牙语、德语、法语、中文及40 多种其他语言!

用 Kutools for Excel 加速你的 Excel 技能,体验前所未有的高效办公。 Kutools for Excel 提供300 多项高级功能,助您提升效率,节省大量时间。点击此处,获取你最需要的功能...


Office Tab 为 Office 带来标签式界面,让你的工作更加轻松

  • 在 Word、Excel、PowerPoint 启用标签式编辑和阅读
  • 在同一窗口的新标签中打开和创建多个文档,无需新建窗口。
  • 办公效率提升50%,每天帮你减少上百次鼠标点击!