Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2215|回复: 7

[已解决]求助 合并工作溥(特定单元格数据)的宏代码

[复制链接]
发表于 2016-8-3 22:21 | 显示全部楼层 |阅读模式
本帖最后由 wqvbzyq 于 2016-8-8 13:59 编辑

求助各位大神!

我现在有这个一个表格用于汇总,数据来源于N多其他表格(放在同一文件夹里面),

       我现在的思路是通过DOS命令得到该文件夹所有的文件名,放在汇总表第一列里面,在第二行手动加了链接,引用第一个文件的数据,然后向下复制,此时每一行的数据都是引用的第一个文件的数据。
      然后我录制了动作(查找、替换),将第二个文件名(来自A3)替换在第三行的链接里面,在套个循环,最后改成这样子,经测试可以实现,但感觉效率很低(每一次循环只替换了一个单元格),请问有没有大侠能帮我优化一下。或重新设计一下代码,实现相似的功能。

Sub haha()
row1 = Cells(Rows.Count, 1).End(3).Row
arr1 = Cells(2, 1)
For i = 2 To row1
    Range(Cells(i, 2), Cells(i, 6)).Select
    Selection.Replace What:=arr1, _
        Replacement:=Cells(i, 1), LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Next i
Range("B3").Select
End Sub

最佳答案
2016-8-8 10:27
把整个文件夹解压后再试。

myfile.zip (48.89 KB, 下载次数: 6)

测试表格.rar

7.4 KB, 下载次数: 6

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
 楼主| 发表于 2016-8-5 11:19 | 显示全部楼层
求大神指定,或者有别的思路如何实现,

就是分别从几百个文件,里面的同一位置引上数据
回复

使用道具 举报

发表于 2016-8-6 22:09 | 显示全部楼层
你是想引用同一文件夹下所有xls文件相同单元格的数据吗?
请说明引用表中什么位置的数据,把引用的数据写在汇总表的什么地方。
回复

使用道具 举报

 楼主| 发表于 2016-8-7 10:45 | 显示全部楼层
本帖最后由 wqvbzyq 于 2016-8-7 10:54 编辑
pengyx 发表于 2016-8-6 22:09
你是想引用同一文件夹下所有xls文件相同单元格的数据吗?
请说明引用表中什么位置的数据,把引用的数据写在 ...

我是想从同一个文件夹的每个文件中,引用同一位置的数据。

比如将每个文件Sheet 1的A2引用到第三列,将每个文件Sheet 2的D5引用到第四列... ...
这个引用的对应关系对于每个文件都是一样的。
第一个文件的引用,我计划是用手动添加链接,因为引用位置比较散乱。
第二个文件引用的时候,可以复制上面的链接,只替换公式里面的引用的文件名就可以了。

比如C2里面的这个公式:='D:\Documents\Desktop\111\[2222.xlsx]Sheet1'!$E$5
对于第二个文件来说,我只要C2复制到C3,再把 2222.xlsx,替换成3333.xlsx(这个值,我放在$A3里面的)就可以了(我的想法是这样的)

回复

使用道具 举报

 楼主| 发表于 2016-8-7 20:48 | 显示全部楼层
本帖最后由 wqvbzyq 于 2016-8-7 20:51 编辑
su45 发表于 2016-8-7 13:46
是这个意思吗?

代码我看的不是很懂,只是大概理解你的思路,

但两个子程序都不通正常运行,不知道是EXCEL2013的问题,还是代码的问题。

另外,我每一列引用的数据,应该不是在同一个SHEET里面,对应的数据源也不只一个SHEET,

麻烦再帮忙看一下。

我本人只有学校里面学的一点C语言,面向对象的代码不太了解。麻烦你了。

回复

使用道具 举报

 楼主| 发表于 2016-8-7 23:28 | 显示全部楼层
本帖最后由 wqvbzyq 于 2016-8-7 23:44 编辑
su45 发表于 2016-8-7 21:00
如果不是同一个页上,那VBA也解决不了。代码是没问题,只是你不会用。
建议你搞个附件,其中包含你要链接的 ...

由于不了解VBA,所以我不是很清楚运行的问题在哪儿?第一个宏运行后数据无变化,第二个出现LOOP无do提未,

想麻烦你看一下我的思路,优化或指正一下。

我是想手动结合宏命令方式,宏命令处理重复操作部分。

我先在DOS里面用dir命令得到文件名,放在第一列,再把第一个文件需要提取的数据,手动的引用到相应的位置,
比如B2里面是“='D:\1\[2222.xlsx]Sheet1'!$C$4”。复制第二行的引用公式到其他的行。

现在,每一行的单元格,引用的数据源是一样的,每一列引用的相对位置是一样的。行与行之间,只是公式引用的文件名不一样,像B2相对B3、B4、B5...来说,C2相对C3、C4、C5...,
我只要选中一行,用Ctrl+H命令将公式里面的2222.xlsx替换成3333.xlsx就可以了(文件名放在第一列)。
我自已写代码时,发现不能一行替换一次,只能每个单元格执行一次替换操作。所以就觉得效率有点低,想请高手优化一下。

我写出来的代码仅重复替换的过程(以单元格为基础循环的,不知道怎么以行为基础替换)。







测试.rar

41.26 KB, 下载次数: 3

测试文件

回复

使用道具 举报

 楼主| 发表于 2016-8-8 09:13 | 显示全部楼层
su45 发表于 2016-8-7 21:00
如果不是同一个页上,那VBA也解决不了。代码是没问题,只是你不会用。
建议你搞个附件,其中包含你要链接的 ...

刚百度了一下,好像我把代码里面的
Cells(i, j).Select   替换成   Range(Cells(i, 2), Cells(i, 6)).Select,去掉外层的循环,效率就提升到我希望的程度了
回复

使用道具 举报

发表于 2016-8-8 10:27 | 显示全部楼层    本楼为最佳答案   
把整个文件夹解压后再试。

myfile.zip (48.89 KB, 下载次数: 6)
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-12 15:43 , Processed in 0.350538 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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