Excel精英培训网

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

[已解决]如何用代码分离数据?

[复制链接]
发表于 2013-5-15 19:04 | 显示全部楼层 |阅读模式
附件 分离数据附件.rar (12.06 KB, 下载次数: 4)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-5-15 19:35 | 显示全部楼层
  1. Sub 提取数据()
  2.     Dim lLastrow&, arr1, arr(), i&, j&
  3.     lLastrow = Cells(Rows.Count, 1).End(xlUp).Row
  4.     arr1 = Range("a1:a" & lLastrow)
  5.     ReDim arr(1 To (lLastrow + 1) \ 7, 1 To 1)
  6.     For i = 6 To lLastrow Step 7
  7.         j = j + 1
  8.         arr(j, 1) = arr1(i, 1)
  9.     Next
  10.     Range("d1").Resize(j).Value = arr
  11. End Sub
复制代码
回复

使用道具 举报

发表于 2013-5-15 19:41 | 显示全部楼层
  1. Sub 提取数据()
  2.     '最后一行行号,源数组,结果数组,循环用变量
  3.     Dim lLastrow&, arr1, arr(), i&, j&
  4.    
  5.     '取A列最后一行数据所在行号
  6.     lLastrow = Cells(Rows.Count, 1).End(xlUp).Row
  7.    
  8.     '读取数据
  9.     arr1 = Range("a1:a" & lLastrow)
  10.    
  11.     '结果数组扩维,用的动态数组,因为是6行一间隔,所以最后行加1,再整除7,得到个数
  12.     ReDim arr(1 To (lLastrow + 1) \ 7, 1 To 1)
  13.    
  14.     '第6行开始循环,步长为7
  15.     For i = 6 To lLastrow Step 7
  16.         '个数,指标结果数组一维
  17.         j = j + 1
  18.         '取出每组最后一个数字存入结果数组
  19.         arr(j, 1) = arr1(i, 1)
  20.     Next
  21.    
  22.     '判断是否有提取到数据,避免出错
  23.     If j > 0 Then
  24.         Application.ScreenUpdating = False
  25.         
  26.         '先清除D列原有数据
  27.         Columns("d").ClearContents
  28.         
  29.         '写回单元格
  30.         Range("d1").Resize(j).Value = arr
  31.         
  32.         Application.ScreenUpdating = True
  33.         MsgBox "提取完成"
  34.     End If
  35. End Sub
复制代码
回复

使用道具 举报

发表于 2013-5-15 19:42 | 显示全部楼层    本楼为最佳答案   
分离数据附件.rar (16.13 KB, 下载次数: 4)

评分

参与人数 1 +1 收起 理由
dfshm + 1 很给力!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 01:56 , Processed in 0.324117 second(s), 16 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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