ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 从分表提取对应行数据到总表

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-3-25 14:16 | 显示全部楼层
lizhipei78 发表于 2023-3-25 13:10
你这个虽然说简单,但有一个前提就是其它各区只填写自己那一行的数据,假如其它区也填写了就会出现错误, ...

任何代码只针对该主题的问题而写 不可能做到万能的代码 具体情况具体处理

TA的精华主题

TA的得分主题

发表于 2023-3-25 14:18 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
lizhipei78 发表于 2023-3-25 13:10
你这个虽然说简单,但有一个前提就是其它各区只填写自己那一行的数据,假如其它区也填写了就会出现错误, ...

麻烦你给个适应各种情况的代码看看

TA的精华主题

TA的得分主题

发表于 2023-3-25 14:33 | 显示全部楼层
cjc209 发表于 2023-3-25 14:18
麻烦你给个适应各种情况的代码看看

我只是提个意见罢了,我是新手,刚学习,向大佬学习中
建议楼主可以根据表格拆分给各地区就好了,各地区只填写自己那一列就好了
就从新手来说,你的代码中,是不是可以每次在打开的时候,先取到文件名,然后根据文件名在地区中查找,如果查找到就取该行的值,好像instr或者Like应该可以,不过这样子再加一个循环,那速率肯定会慢很多的了

TA的精华主题

TA的得分主题

发表于 2023-3-25 14:59 | 显示全部楼层
lizhipei78 发表于 2023-3-25 14:33
我只是提个意见罢了,我是新手,刚学习,向大佬学习中
建议楼主可以根据表格拆分给各地区就好了,各地区 ...

那除非文件名与表中对应的名称一样就可以

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-25 15:42 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
cjc209 发表于 2023-3-25 14:12
你没有看清吗  题目就是 各个地区填写对应的行,然后返给我汇总。比如“东山区”的,他只填“东山区”这 ...

谢谢老师,是有这种可能,比如说东山区的误填到其他行,所以能不能只提取对应的行,东山区只提取东三区那一行的数据到总表对应行,其它行就算有数据也不要提取。可以实现吗老师?

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-25 15:48 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
lizhipei78 发表于 2023-3-25 14:33
我只是提个意见罢了,我是新手,刚学习,向大佬学习中
建议楼主可以根据表格拆分给各地区就好了,各地区 ...

就是要你说的这种,分表文件名根据总表第2列名称来查找,如果找到包含第2列名称的就是对应的分表,然后提取分表对应行的数据到总表对应行。老师帮忙写一个VBA呗

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-25 15:54 | 显示全部楼层

谢谢老师,但是有个小小的问题,比如说东山区的,他误填或者多填到其它行,就会导致提取的数据错误。能不能只提取分表对应的那一行的数据,其它行就算有数据也不要提取。还有,能不能限定文件后缀只能是xls和xlsx,否则如果文件夹里有其它格式的文件也会提取到总表中,比如说txt文本文件也会被提取了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-25 15:58 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
cjc209 发表于 2023-3-25 14:59
那除非文件名与表中对应的名称一样就可以

老师,文件名会包含有总表第2列的关键字

TA的精华主题

TA的得分主题

发表于 2023-3-25 16:41 | 显示全部楼层
Sub UpdateTable()
    Dim df0 As Workbook
    Set ws = Sheets("总表") '更改为需要更新的工作表名称
    Dim path As String
    path = "D:\从分表提取对应行数据到总表\" '需要修改到实际目录
    Dim file As String
    file = Dir(path)
    Dim df As Object
    Dim i As Integer, x As Integer

    Do While file <> ""
        Set df0 = Application.Workbooks.Open(path & file)
        Set df = df0.Sheets("总表")
        x = df.UsedRange.Rows.Count
        For i = 5 To x
            If df.Cells(i, 3) <> "" Then
                ws.Range("C" & i & ":H" & i).Value = df.Range("C" & i & ":H" & i).Value
                ws.Cells(i, 9) = file
                Exit For
            End If
        Next i
        df0.Close
        file = Dir
    Loop

End Sub


TA的精华主题

TA的得分主题

发表于 2023-3-25 17:06 | 显示全部楼层
shchint 发表于 2023-3-25 15:58
老师,文件名会包含有总表第2列的关键字

那就小做修改就对了
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-9-29 16:17 , Processed in 0.039764 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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