Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
楼主: yizhih

[已解决]请教数组提取问题

[复制链接]
发表于 2013-1-26 21:32 | 显示全部楼层
请教2、按下“提取2”按钮实现以下功能。
将“合并”表J列中每36行为一组,每一组中间隔5行提取,放到“汇总”工作表中。
例如,J6:J41是第一组,
将J6、J12、J18、J24、J30、J36提取出来放到“汇总”工作表的J6:J11中,
将J7、J13、J19、J25、J31、J37提取出来放到“汇总”工作表的J12:J17中,
将J8、J14、J20、J26、J32、J38提取出来放到“汇总”工作表的J18:J23中,
将J9、J15、J21、J27、J33、J39提取出来放到“汇总”工作表的J24:J29中,
将J10、J16、J22、J28、J34、J40提取出来放到“汇总”工作表的J30:J35中,
将J11、J17、J23、J29、J35、J41提取出来放到“汇总”工作表的J36:J41中。

你这个要求我没有理解错吧。
回复

使用道具 举报

 楼主| 发表于 2013-1-26 23:49 | 显示全部楼层
本帖最后由 yizhih 于 2013-1-27 10:53 编辑
hwc2ycy 发表于 2013-1-26 21:32
请教2、按下“提取2”按钮实现以下功能。
将“合并”表J列中每36行为一组,每一组中间隔5行提取,放到“汇 ...


非常感谢hwc2ycy 老师。还有以下问题:
提取1还有一个错误,就是“主表格5”的任何数据都没有被提取,其他都对。

关于提取2,又做了一个简单的表,便于理解,请老师看看,谢谢!
提取2.rar (12.04 KB, 下载次数: 6)
回复

使用道具 举报

 楼主| 发表于 2013-1-27 14:12 | 显示全部楼层
hwc2ycy 发表于 2013-1-26 21:32
请教2、按下“提取2”按钮实现以下功能。
将“合并”表J列中每36行为一组,每一组中间隔5行提取,放到“汇 ...

请 hwc2ycy老师帮助把“提取2”的问题给解决一下。提取2我又重新做了个附件,便于理解,但是源数据不只是两位数和两组数据,位数和组数都在50-500之间。还有实际应用中源数据是由函数提取过来的,请老师只将值提取过来。
提取1已经好了,不用改了。
谢谢!
回复

使用道具 举报

发表于 2013-1-27 14:33 | 显示全部楼层
yizhih 发表于 2013-1-27 14:12
请 hwc2ycy老师帮助把“提取2”的问题给解决一下。提取2我又重新做了个附件,便于理解,但是源数据不只是 ...

新上传的附件不是最终的效果图啊。你隔几行提一行,怎么可能两列的数据数样多了。
跟原来的要求又不一样了?
回复

使用道具 举报

 楼主| 发表于 2013-1-27 22:00 | 显示全部楼层
本帖最后由 yizhih 于 2013-1-27 22:04 编辑
hwc2ycy 发表于 2013-1-27 14:33
新上传的附件不是最终的效果图啊。你隔几行提一行,怎么可能两列的数据数样多了。
跟原来的要求又不一样 ...


基本没有改变:
1、在“合并”工作表中,J列每36行是一大组,在一大组当中每6行是一小组,共有6小组。在一大组中提取每一小组的第一行、第二行、第三行、第四行、第五行、第六行组成六个新的小组,放到“汇总”工作表J列中。
2、提取完第一个大组后,第一个大组就完成了,然后开始提取J列的第37行开始到72行组成的第二个大组,提取方法同上。然后是第73行到108行的第三大组,109行到144行的第四大组,...............直至最后一个大组。
3、有所改变的是实际上源数据每一行中不止2个数字,一般有0-25个数字,在提取后放到“汇总”表时,请一个数字一个单元格这样放置。
4、如果是空行,则空行也算是一行,提取过去。
5、还有一点就是实际上“合并”工作表J列的数字是用函数从别的表中提取的,在向“汇总”工作表中提取时只提取数值。
再次感谢 hwc2ycy老师。

回复

使用道具 举报

发表于 2013-1-27 22:43 | 显示全部楼层
本帖最后由 hwc2ycy 于 2013-1-27 22:53 编辑
  1. Sub 提取2()
  2.     Dim shtHz$
  3.     Dim iRow&
  4.     Dim arr, arr2()
  5.     Dim i&, j&, k&, iRow2&, l&
  6.     With Worksheets("合并")
  7.         iRow = .Cells(Rows.Count, "j").End(xlUp).Row
  8.         If iRow < 6 Then Exit Sub
  9.         arr = .Range("j6:j" & iRow)
  10.     End With

  11.     ReDim arr2(1 To UBound(arr) , 1 To 1)

  12.     iRow = UBound(arr)
  13.     Stop
  14.     For i = 1 To UBound(arr) \ 36
  15.         For j = 1 To 6
  16.             For k = 1 To 6
  17.                 iRow2 = i * 36 - 36 + j + k * 6 - 6
  18.                 If iRow2 > iRow Then GoTo quit
  19.                 l = l + 1
  20.                 arr2(l, 1) = arr(iRow2, 1)
  21.             Next
  22.         Next
  23.     Next
  24. quit:
  25.     With Worksheets("汇总")
  26.         .Range("j:j").ClearContents
  27.         .Range("j6").Resize(l) = arr2
  28.     End With
  29.     MsgBox "提取完成"
  30. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2013-1-28 16:02 | 显示全部楼层
hwc2ycy 发表于 2013-1-27 22:43

非常感谢 hwc2ycy 老师的帮助,提取2对了。
如果老师有时间的话,请老师把“提取1”、“提取2”的提取结果改为一个单元格一个数字,这是我的考虑不周所致。
再次感谢老师。
回复

使用道具 举报

发表于 2013-1-28 16:29 | 显示全部楼层
只要第一个数字嘛?
回复

使用道具 举报

 楼主| 发表于 2013-1-28 17:41 | 显示全部楼层
本帖最后由 yizhih 于 2013-1-28 17:42 编辑
hwc2ycy 发表于 2013-1-28 16:29
只要第一个数字嘛?


不是,都要,就是“提取1”、“提取2”的提取结果是一个单元格一个数字,有多少数字填多少个单元格。谢谢老师!
shilie.JPG

回复

使用道具 举报

 楼主| 发表于 2013-1-29 13:42 | 显示全部楼层
hwc2ycy 发表于 2013-1-28 16:29
只要第一个数字嘛?

请 hwc2ycy老师帮助。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-3 07:08 , Processed in 0.346630 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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