ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 多个excel中相同条件格式的数据如何汇总呢?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-6-10 22:51 | 显示全部楼层 |阅读模式
本帖最后由 dpf 于 2018-6-11 22:41 编辑

如图所示excel表格,大概有100个的样子,每个表格记录着最新的数据,比如就是想汇总“支撑2-04”中的“轴力(t)”其对应的“20:00”的所有数据到一个文件中,前提条件有三个“支撑2-04”、“轴力(t)”、“20:00”,想把满足这三个条件的所有数据汇总到一个表格里;这样的数据规则是统一的,但是因为数据不断的更新,不确定数据的具体单元格位置,请问应该如何操作这种跨表格的数据汇总呢?

TIM截图20180610224631.jpg
提问报表1~3.zip (122.38 KB, 下载次数: 4)

TA的精华主题

TA的得分主题

发表于 2018-6-10 23:27 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 z403025335 于 2018-6-10 23:37 编辑

Sub 汇总()
Dim q As FileDialog, wall As Workbook, w1 As Workbook
Dim s$, i%, x&, y&
Set q = Application.FileDialog(1)
    q.Title = "请选中您要汇总的所有文件"
    q.AllowMultiSelect = True
If q.Show = -1 Then
    s = InputBox("请选中要汇总的单元格地址", 输入地址, "A1")
    Set wall = Workbooks.Add
    With wall.Sheets(1)
    For i = 1 To q.SelectedItems.Count
        Set w1 = Workbooks.Open(q.SelectedItems(i))
            y = .Cells(1, Columns.Count).End(xlToLeft).Column + 1
            x = .Cells(Rows.Count, y).End(xlUp).Row + 1
            .Cells(x, y) = w1.Range(s)         w1.close
    Next i
End If
            
End Sub

TA的精华主题

TA的得分主题

发表于 2018-6-10 23:29 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 z403025335 于 2018-6-10 23:36 编辑

Sub 汇总()
Dim q As FileDialog, wall As Workbook, w1 As Workbook
Dim s$, i%, x&, y&
Set q = Application.FileDialog(1)
    q.Title = "请选中您要汇总的所有文件"
    q.AllowMultiSelect = True
If q.Show = -1 Then
    s = InputBox("请选中要汇总的单元格地址", 输入地址, "A1")
    Set wall = Workbooks.Add
    With wall.Sheets(1)
    For i = 1 To q.SelectedItems.Count
        Set w1 = Workbooks.Open(q.SelectedItems(i))
            y = .Cells(1, Columns.Count).End(xlToLeft).Column + 1
            x = .Cells(Rows.Count, y).End(xlUp).Row + 1
            .Cells(x, y) = w1.Range(s)           w1.close
    Next i
End If
            
End Sub

TA的精华主题

TA的得分主题

发表于 2018-6-11 06:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
可惜只有一个表有数据,举例能不能多一点。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-11 08:59 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
lsc900707 发表于 2018-6-11 06:47
可惜只有一个表有数据,举例能不能多一点。

你好,报表都是基本差不多的,我放了3个报表上来给您看一下。
提问报表1~3.zip (122.38 KB, 下载次数: 4)

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-11 09:30 | 显示全部楼层
z403025335 发表于 2018-6-10 23:29
Sub 汇总()
Dim q As FileDialog, wall As Workbook, w1 As Workbook
Dim s$, i%, x&, y&

谢谢,我研究一下,有不明白的地方再请教您。

TA的精华主题

TA的得分主题

发表于 2018-6-11 11:07 | 显示全部楼层
dpf 发表于 2018-6-11 09:30
谢谢,我研究一下,有不明白的地方再请教您。
  1. Sub 合并多薄首表不连续单元格()
  2.     Dim Fso As Object, File As Object, cnn As Object, rs As Object, SQL$, m&, arr()
  3.     Set Fso = CreateObject("Scripting.FileSystemObject")
  4.     ReDim arr(1 To Fso.GetFolder(ThisWorkbook.Path).Files.Count, 1 To 13)
  5.     For Each File In Fso.GetFolder(ThisWorkbook.Path).Files
  6.         If File.Name Like "*.xlsx" Then
  7.             m = m + 1
  8.             Set cnn = CreateObject("ADODB.Connection")
  9.             cnn.Open "Provider=Microsoft.ace.OLEDB.12.0;Extended Properties='Excel 12.0;hdr=no';Data Source=" & File
  10.             arr(m, 1) = Split(File.Name, ".")(0)
  11.             Set rs = cnn.Execute("SELECT * FROM [$G9:G9]")
  12.             arr(m, 2) = rs.Fields(0)
  13. '            Set rs = cnn.Execute("SELECT LAST(F2) FROM [Sheet1$A1:B100] ")
  14. '            arr(m, 3) = rs.Fields(0)
  15. '            Set rs = cnn.Execute("SELECT F2 FROM [Sheet1$A1:B100] WHERE F1 LIKE '%" & Split(Cells(1, 4), "/")(2) & "'")
  16. '            arr(m, 4) = rs.Fields(0)
  17.         End If
  18.     Next
  19.     ActiveSheet.UsedRange.Offset(1).ClearContents
  20.     If m > 0 Then [a2].Resize(m, 13) = arr
  21.     rs.Close
  22.     cnn.Close
  23.     Set rs = Nothing
  24.     Set cnn = Nothing
  25.     Set Fso = Nothing
  26. End Sub
  27. 'http://club.excelhome.net/forum.php?mod=viewthread&tid=1221645
复制代码

TA的精华主题

TA的得分主题

发表于 2018-6-11 11:25 | 显示全部楼层
dpf 发表于 2018-6-11 09:30
谢谢,我研究一下,有不明白的地方再请教您。

ADO合并多薄首表不连续单元格.rar (134.85 KB, 下载次数: 24)

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-11 20:50 | 显示全部楼层
本帖最后由 dpf 于 2018-6-11 22:22 编辑

谢谢您的表格,很大程度上给我解惑了,我还有一点小疑问:
如果我想提取其他更大的数值,比如AD175,如何修改才能避免“超出定义单元范围呢”?我尝试修改了几个数字,改的小就没问题,改的大就会溢出,这块如何解决呢?
TIM截图20180611204600.jpg
同时想请教一下,如果我报表里的单元格是变的,我是想根据“支撑4-05”的条件找到其对应的行的某个数值,应该怎么样定位更好呢?

TA的精华主题

TA的得分主题

发表于 2018-6-12 07:30 | 显示全部楼层
z403025335 发表于 2018-6-10 23:27
Sub 汇总()
Dim q As FileDialog, wall As Workbook, w1 As Workbook
Dim s$, i%, x&, y&

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

本版积分规则

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

GMT+8, 2024-11-22 19:37 , Processed in 0.043478 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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