Excel精英培训网

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

[已解决]快速提取列数据。

[复制链接]
发表于 2012-8-19 00:45 | 显示全部楼层 |阅读模式
快速提取sheet1表里B,M,X,列里数据到sheet2。
最佳答案
2012-8-19 08:25

  1. Sub 快速提取()
  2.     Dim a, arr(), i%
  3.     a = Sheet1.Range("a1").CurrentRegion
  4.     ReDim arr(1 To UBound(a), 1 To 3)
  5.     For i = 1 To UBound(a)
  6.         arr(i, 1) = a(i, 2)
  7.         arr(i, 2) = a(i, 13)
  8.         arr(i, 3) = a(i, 24)
  9.     Next
  10.     With Sheet2
  11.         .Cells.ClearContents
  12.         .Range("a1").Resize(i - 1, 3) = arr
  13.         If MsgBox("提取完成,要查看结果吗?", vbQuestion + vbYesNo) = vbYes Then .Select
  14.     End With
  15. End Sub
复制代码

订单.rar

7.33 KB, 下载次数: 20

发表于 2012-8-19 01:40 | 显示全部楼层
用=号就可以,请看例子

订单.zip

11.95 KB, 下载次数: 5

回复

使用道具 举报

发表于 2012-8-19 01:55 | 显示全部楼层

  1. Sub c1()
  2.     Application.ScreenUpdating = False
  3.     Dim myr As Long
  4.     myr = Range("b1").End(xlDown).Row
  5. '    Range("b1:b" & myr).Copy Destination:=Worksheets("Sheet2").Range("a1")
  6. '    Range("m1:m" & myr).Copy Destination:=Worksheets("Sheet2").Range("b1")
  7. '    Range("x1:x" & myr).Copy Destination:=Worksheets("Sheet2").Range("c1")
  8.     Range("b:b").Copy Destination:=Worksheets("Sheet2").Range("a:a")
  9.     Range("m:m").Copy Destination:=Worksheets("Sheet2").Range("b:b")
  10.     Range("x:x").Copy Destination:=Worksheets("Sheet2").Range("c:c")
  11.     Application.ScreenUpdating = True
  12. End Sub
复制代码
回复

使用道具 举报

发表于 2012-8-19 07:55 | 显示全部楼层
实现方法应该有很多的
回复

使用道具 举报

发表于 2012-8-19 08:25 | 显示全部楼层    本楼为最佳答案   

  1. Sub 快速提取()
  2.     Dim a, arr(), i%
  3.     a = Sheet1.Range("a1").CurrentRegion
  4.     ReDim arr(1 To UBound(a), 1 To 3)
  5.     For i = 1 To UBound(a)
  6.         arr(i, 1) = a(i, 2)
  7.         arr(i, 2) = a(i, 13)
  8.         arr(i, 3) = a(i, 24)
  9.     Next
  10.     With Sheet2
  11.         .Cells.ClearContents
  12.         .Range("a1").Resize(i - 1, 3) = arr
  13.         If MsgBox("提取完成,要查看结果吗?", vbQuestion + vbYesNo) = vbYes Then .Select
  14.     End With
  15. End Sub
复制代码

订单.rar

17 KB, 下载次数: 7

回复

使用道具 举报

发表于 2012-8-19 09:21 | 显示全部楼层
本帖最后由 JLxiangwei 于 2012-8-19 09:22 编辑
  1. Sub tiqu()
  2.     Dim arr, x
  3.     arr = Sheet1.Range("a1").CurrentRegion
  4.     x = UBound(arr)
  5.     With Sheet2
  6.         .Cells.ClearContents
  7.         .Range("a1").Resize(x, 1) = Application.Index(arr, , 2)
  8.         .Range("b1").Resize(x, 1) = Application.Index(arr, , 13)
  9.         .Range("c1").Resize(x, 1) = Application.Index(arr, , 24)
  10.     End With
  11. End Sub
复制代码
直接调用函数,不用循环简单一点。
订单.zip (14.78 KB, 下载次数: 7)

点评

Index这速度实在不敢恭维哈!  发表于 2012-8-19 09:24
回复

使用道具 举报

发表于 2012-8-19 09:39 | 显示全部楼层
呵呵,index是慢,数据量很小的时候,用它很方便,不用去循环赋值
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-21 04:24 , Processed in 0.443638 second(s), 18 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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