ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 多表格的 条件查询代码写了一半,搞不定了。

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-8-13 15:50 | 显示全部楼层 |阅读模式
新手小白, 需要弄一个多表格查询工具,从网上半抄半改的 搞不定了。。。。。所以来求助下。


需要 在查询SHEET中 C2单元格位置输入 省份  。 C3输入   是否异常数据  (是或否) 但 这2个 不是必填项,可以2个都填,也可以只填一个。

非查询SHEET 的 所有SHEET进行按条件查询 (需要查询的表格 是否异常数据 在A列  省份在B列,其它列内容不固定 )

从第六行开始写入表头

2 因为每个表格 的列不固定  表头可能也不一样, 只有AB列是固定的,所以 需要用拼接的方式  要有表头,需要把表头的颜色带过去方便查看)

求大家帮忙


微信截图_20240813154516.png

多表的条件查询.rar

183.62 KB, 下载次数: 11

TA的精华主题

TA的得分主题

发表于 2024-8-13 16:05 | 显示全部楼层
不建议这样把表头行带进去,可以最前方多加一列写sheet名,按这个逻辑你应该能写出来

TA的精华主题

TA的得分主题

发表于 2024-8-13 16:16 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 ynzsvt 于 2024-8-13 16:41 编辑

列号2才是省份。

多表的条件查询.rar

209.84 KB, 下载次数: 23

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-13 16:28 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
小凡、、、 发表于 2024-8-13 16:05
不建议这样把表头行带进去,可以最前方多加一列写sheet名,按这个逻辑你应该能写出来

我觉得前方多加一列写sheet名 是对的。,但是 我真心不会。。。每个表的列不一样呀 所以。。。我还是觉得 要带表头的。。

TA的精华主题

TA的得分主题

发表于 2024-8-13 16:37 | 显示全部楼层
  1. Sub test()
  2. Dim sH As Worksheet, sH1 As Worksheet, i&, j&, Arr, mRow&, SFstr$, zTstr$, jL&
  3. Set sH1 = Worksheets("查询")
  4. With sH1
  5.     mRow = .UsedRange.Rows.Count
  6.     If mRow > 5 Then .Rows("6:" & mRow).Delete
  7.     SFstr = .[c2]
  8.     zTstr = .[c3]
  9.     If SFstr = "" Or zTstr = "" Then Exit Sub
  10. End With
  11. For Each sH In Worksheets
  12.     With sH
  13.         If .Name <> sH1.Name Then
  14.             Arr = .[a1].CurrentRegion
  15.             jL = 0
  16.             ReDim brr(1 To UBound(Arr, 1) + 1, 1 To UBound(Arr, 2))
  17.             For i = 1 To UBound(Arr, 1)
  18.                 If Arr(i, 1) = zTstr And Arr(i, 2) = SFstr Then
  19.                     jL = jL + 1
  20.                     For j = 1 To UBound(Arr, 2)
  21.                         brr(jL, j) = Arr(i, j)
  22.                     Next j
  23.                 End If
  24.             Next i
  25.             If jL Then
  26.                 With sH1
  27.                     mRow = .Cells(.Rows.Count, "A").End(3).Row
  28.                     If mRow <= 5 Then mRow = 6 Else mRow = mRow + 1
  29.                     .Cells(mRow, 1).Resize(1, UBound(Arr, 2)) = Arr
  30.                     .Cells(mRow, 1).Resize(1, UBound(Arr, 2)).Interior.Color = 12874308
  31.                     .Cells(mRow + 1, 1).Resize(jL, UBound(brr, 2)) = brr
  32.                 End With
  33.             End If
  34.         End If
  35.     End With
  36. Next
  37. sH1.UsedRange.EntireColumn.AutoFit
  38. MsgBox "Done!"
  39. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-13 16:38 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-8-13 16:42 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 ynzsvt 于 2024-8-13 16:45 编辑
PP不吃香菜 发表于 2024-8-13 16:38
请问如果 需要把表头加上 是改哪句。。。

刚刚在3楼更新了附件。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-8-13 16:44 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
PP不吃香菜 发表于 2024-8-13 16:28
我觉得前方多加一列写sheet名 是对的。,但是 我真心不会。。。每个表的列不一样呀 所以。。。我还是觉得 ...

你要带表头格式的话,不用写入数组,用筛选复制粘贴
image.jpg

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-13 16:46 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-30 11:21 | 显示全部楼层
小凡、、、 发表于 2024-8-13 16:44
你要带表头格式的话,不用写入数组,用筛选复制粘贴

文档可以发下 学习学习么。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-18 18:18 , Processed in 0.049538 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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