ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 5706|回复: 14

[求助] 在指定文件夹的好多EXCEL里查找一串字符,最后显示所查找出来的表。

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-3-26 14:35 | 显示全部楼层 |阅读模式
各位老师:
       现在一个文件夹里有好多工作表,需要在这些EXCEL表中找出有“20124587111AA-4411“有这个字符的表。其中“20124587111AA-4411“这个占用了工作表的一个单元格。
      求求各位!急呀!

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-3-26 14:37 | 显示全部楼层

在指定文件夹的好多EXCEL里查找一串字符,最后显示所查找出来的表。

各位老师:
       现在一个文件夹里有好多工作表,需要在这些EXCEL表中找出有“20124587111AA-4411“有这个字符的表。其中“20124587111AA-4411“这个占用了工作表的一个单元格。
     有VBA也解决也行!

     求求各位!先谢谢各位老师了!

TA的精华主题

TA的得分主题

发表于 2013-3-26 14:45 | 显示全部楼层
思路:
遍历工作簿
打开
遍历工作表
USEDRANGE
FOR NEXT判断
完成

TA的精华主题

TA的得分主题

发表于 2013-3-26 14:47 | 显示全部楼层
李甲 发表于 2013-3-26 14:45
思路:
遍历工作簿
打开

二个遍历赞同,最后一个for 有点。。。。。。

点评

查找功能可能比FOR NEXT来得快点  发表于 2013-3-26 14:52

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-3-26 14:57 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
李甲 发表于 2013-3-26 14:45
思路:
遍历工作簿
打开

你好!我还看不懂,您能给我详细说一下吗?
这个遍历工作簿,我没听过?

TA的精华主题

TA的得分主题

发表于 2013-3-26 15:10 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
点击开始---搜索---所有文件和文件夹--- 未命名.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-3-26 15:16 | 显示全部楼层
鬼火6 发表于 2013-3-26 15:10
点击开始---搜索---所有文件和文件夹---

你好,这个我试了,不行!找不出来

TA的精华主题

TA的得分主题

发表于 2013-3-26 15:59 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 zhaogang1960 于 2013-3-26 16:00 编辑

采用上面二位老师的思路,如果不合题意,请楼主上传附件说明:

  1. Sub Macro1()
  2.     Dim p$, f$, sh As Worksheet, c As Range, arr$(1 To 10000, 1 To 2), m&
  3.     Application.ScreenUpdating = False
  4.     p = ThisWorkbook.Path & ""
  5.     f = Dir(p & "*.xls")
  6.     Do While f <> ""
  7.         If f <> ThisWorkbook.Name Then
  8.             With GetObject(p & f)
  9.                 For Each sh In .Sheets
  10.                     Set c = sh.UsedRange.Find("20124587111AA-4411", , , 1)
  11.                     If Not c Is Nothing Then
  12.                         m = m + 1
  13.                         arr(m, 1) = f
  14.                         arr(m, 2) = sh.Name
  15.                     End If
  16.                 Next
  17.                 .Close False
  18.             End With
  19.         End If
  20.         f = Dir
  21.     Loop
  22.     Cells.ClearContents
  23.     Application.ScreenUpdating = True
  24.     If m > 0 Then
  25.         [a1:b1] = Array("工作簿", "工作表")
  26.         [a2].Resize(m, 2) = arr
  27.     Else
  28.         MsgBox "没有查到符合条件的工作表"
  29.     End If
  30. End Sub

复制代码

TA的精华主题

TA的得分主题

发表于 2013-3-26 17:21 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 zyg365 于 2013-3-26 17:22 编辑
zhaogang1960 发表于 2013-3-26 15:59
采用上面二位老师的思路,如果不合题意,请楼主上传附件说明:


修改一下:更详细,单元格地址——工作簿 工作表 单元格地址
Sub Macro1()
    Dim p$, f$, sh As Worksheet, c As Range, arr$(1 To 10000, 1 To 3), m&
    Application.ScreenUpdating = False
    p = ThisWorkbook.Path & "\"
    f = Dir(p & "*.xls")
    Do While f <> ""
        If f <> ThisWorkbook.Name Then
            With GetObject(p & f)
                For Each sh In .Sheets
                    Set c = sh.UsedRange.Find("zyg", , , 1)
                    If Not c Is Nothing Then
                        m = m + 1
                        arr(m, 1) = f
                        arr(m, 2) = sh.Name
                        arr(m, 3) = c.Address
                    End If
                Next
                .Close False
            End With
        End If
        f = Dir
    Loop
    Cells.ClearContents
    Application.ScreenUpdating = True
    If m > 0 Then
        [a1:c1] = Array("工作簿", "工作表", "单元格地址")
        [a2].Resize(m, 3) = arr
    Else
        MsgBox "没有查到符合条件的工作表"
    End If
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-3-26 17:52 | 显示全部楼层
本帖最后由 小马2012 于 2013-3-26 17:57 编辑

首先谢谢各位,太厉害了,能做出来了!~
----------------------
另外,现在所有工作簿要放到同一个文件夹里才能找到,能不能在这个1级文件夹下查找本级或2级文件夹下、3级文件夹下、**,都能找到这个工作簿(也就是这个文件夹下有工作簿也有还有文件夹等,要从1级级文件夹下查所有)。且在显示成果的工作簿做个链接什么的,直接一点就打开这个工作
簿!~

----------------
还有,我发现现在统计出来的结果,在“工作簿”列把文件名和条数合到一起了,能不能把文件名和条数分开一下@


谢谢各位呢!???

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-11 21:56 , Processed in 0.028000 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表