Excel精英培训网

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

[已解决]如何将VBA提取到的数据(数组)进行排列呢??

[复制链接]
发表于 2013-7-22 18:14 | 显示全部楼层 |阅读模式
本帖最后由 279590778 于 2013-7-22 22:20 编辑

论坛里的各位前辈,请问一下如何将VBA提取到的数据(数组)分成多行多列,并依次填充呢?谢谢!!!
附件如下:
最佳答案
2013-7-23 15:14
(, 下载次数: 26)

求助.zip

47.62 KB, 下载次数: 13

发表于 2013-7-22 18:47 | 显示全部楼层
只是问问

根据什么拆分为多个表?

把子表分别放到单独的工作表不好么?
回复

使用道具 举报

 楼主| 发表于 2013-7-22 18:56 | 显示全部楼层
爱疯 发表于 2013-7-22 18:47
只是问问

根据什么拆分为多个表?

根据数据源中的B、C、E列条件分成多个表,因为表格样式是固定的,每个表中能装16行数据,多余的数据只能装到数据汇总表2、3...里面依次装入。有什么么办法能将他们依次装入么,既一个表装满就换下一个表?敬请版主帮忙解决,感激不尽。。。
回复

使用道具 举报

发表于 2013-7-22 19:24 | 显示全部楼层
可能有的朋友能理解,不过自己确实还是不理解。

1)“根据数据源中的B、C、E列条件”,这句不理解。
2)为什么表格样式必须要固定呀?

只要楼主的说明,大多数人看的懂,问题就好解决了。
回复

使用道具 举报

 楼主| 发表于 2013-7-22 19:47 | 显示全部楼层
爱疯 发表于 2013-7-22 19:24
可能有的朋友能理解,不过自己确实还是不理解。

1)“根据数据源中的B、C、E列条件”,这句不理解。

这可能有点误导,数据源中的B、C、E列是我将数据分类的一个判断列;既数据源中的B、C、E列同时满足我指定的三个条件后,将这些数据筛选出来,这个现在不用考虑!
我只是想实现将数据源中的数据依次放入到数据汇总表1、2、3...里面。
因为表格样式都是统一的,以前是采用手写的方式,现在我按1:1的比例把它做成电子表格,以便数据汇总后打印出来。。。有点乱哈,不知道我表达清楚没,如果没有我继续解释。。。呵呵!
回复

使用道具 举报

发表于 2013-7-22 21:38 | 显示全部楼层
一方面,5楼说“只是想实现将数据源中的数据依次放入到数据汇总表1、2、3...里面。”



另一方面,1楼数据源的标题有9个
序号
取样类型
取样栋号
取样部位
设计强度
取样日期
龄期
d
试样单编号
强 度(MPa)



效果表有7个
取样日期
试样单编号
试验单位
设计强度
龄期
d
强 度(MPa)
施工层段部位


不但标题顺序不同,而且列数也不同,让人不知道要达到什么效果?要不重新修改附件后,再发







回复

使用道具 举报

 楼主| 发表于 2013-7-22 22:19 | 显示全部楼层
爱疯 发表于 2013-7-22 21:38
一方面,5楼说“只是想实现将数据源中的数据依次放入到数据汇总表1、2、3...里面。”

非常感谢超级版主对本帖的关心,已将附件重新整理!

求助.zip

47.62 KB, 下载次数: 10

回复

使用道具 举报

发表于 2013-7-22 23:08 | 显示全部楼层
  1. Sub test()    '按条件汇总砼试块强度
  2.     Dim A, B, i, j, Rng

  3.     A = Sheet14.Range("a1").CurrentRegion
  4.     ReDim B(1 To UBound(A) - 2, 1 To 7)
  5.     For i = 3 To UBound(A)
  6.         B(i - 2, 1) = A(i, 6)
  7.         B(i - 2, 2) = A(i, 8)
  8.         B(i - 2, 4) = A(i, 5)
  9.         B(i - 2, 5) = A(i, 7)
  10.         B(i - 2, 6) = A(i, 9)
  11.         B(i - 2, 7) = A(i, 3) & A(i, 4)
  12.     Next i

  13.     Set Rng = Sheet5.Range("a6")
  14.     For i = 1 To UBound(B)
  15.         For j = 1 To UBound(B, 2)
  16.             Rng.Item(1, j) = B(i, j)
  17.         Next j
  18.         Set Rng = Rng.Offset(1, 0)
  19.         If i Mod 16 = 0 Then Set Rng = Rng.Offset(10, 0)
  20.     Next i
  21. End Sub
复制代码
求助2.rar (53 KB, 下载次数: 25)
回复

使用道具 举报

 楼主| 发表于 2013-7-23 10:52 | 显示全部楼层
爱疯 发表于 2013-7-22 23:08

超级版主太棒了,实现了想要的功能,但执行代码后速度教慢,这个可以通过关闭屏幕更新来实现么?还有就是能增加“先清除已填充数据在执行填充”功能就好了,这样才能保证数据更新的准确性。 感谢超级版主的帮助?论坛真好。。。
回复

使用道具 举报

发表于 2013-7-23 11:06 | 显示全部楼层
那你就在程序开始前加句,
Application.ScreenUpdating = False

现在有160条,实际最多会多少条?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 04:19 , Processed in 0.405965 second(s), 16 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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