跳至主要内容

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

Author: Sun Last Modified: 2025-07-21

您是否曾经需要查找一个特定的值,而该值可能出现在不同的工作表中,甚至分布在多个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的工作表。您想知道特定值(例如“Invoices123”)是否出现在单元格A1中,或者仅仅检查该值是否存在于这些工作表中。

步骤1:假设您在D2:D4中有一个工作表名称列表(D2: Sheet1, D3: Sheet2, D4: Sheet3)。在E1中输入要搜索的值(例如“Invoices123”)。然后,在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的公式可能会降低工作簿性能。

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


相关文章:


最佳办公效率工具

🤖 Kutools AI 助手:基于智能执行生成代码创建自定义公式分析数据并生成图表调用 Kutools 函数等功能,彻底改变数据分析方式…
热门功能查找、高亮或标记重复项 | 删除空行 | 合并不丢失数据的列或单元格 | 四舍五入 ...
高级 LOOKUP多条件 VLookup | 多值 VLookup | 多表查找 | 模糊查找 ....
高级下拉列表快速创建下拉列表 | 从属下拉列表 | 多选下拉列表 ....
列管理器添加指定数量的列 | 移动列 | 切换隐藏列的可见状态 | 比较区域和列 ...
精选功能网格聚焦 | 设计视图 | 增强编辑栏 | 工作簿与工作表管理器 | 资源库(自动文本) | 日期提取 | 合并数据 | 加密/解密单元格 | 按列表发送电子邮件 | 超级筛选 | 特殊筛选(筛选粗体/斜体/删除线...)...
排名前 15 的工具集12 种文本 工具添加文本删除特定字符等) | 50 多 种图表 类型甘特图等) | 40 多种实用 公式基于生日计算年龄等) | 19 种插入 工具插入二维码根据路径插入图片等) | 12 种转换 工具小写金额转大写汇率转换等) | 7 种合并与分割 工具高级合并行分割单元格等) | 还有更多...

使用 Kutools for Excel 提升您的 Excel 技能,体验前所未有的高效。 Kutools for Excel 提供超过 300 种高级功能来提高生产力并节省时间。 单击此处获取您最需要的功能...


Office Tab 将标签式界面引入 Office,让您的工作更加轻松

  • 在 Word、Excel、PowerPoint 中启用标签式编辑和阅读
  • 在同一窗口的新标签页中打开和创建多个文档,而不是在新窗口中进行操作。
  • 将您的生产力提升 50%,每天为您减少数百次鼠标点击!