Excel精英培训网

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

[已解决]VBA mid函数截取某列单元格第9位到第13位

[复制链接]
发表于 2011-12-19 11:06 | 显示全部楼层 |阅读模式
5学分
我想在VBA中实现截取某列单元格的第9位到第13位
vba.mid(range("a1:a1000"),9,4)
请问可以用列或着数组做mid的参数吗,谢谢高手指点!
最佳答案
2011-12-19 13:31
  1. Private Sub CommandButton1_Click()
  2. Dim arr, arr2, t
  3. Dim i As Long
  4. t = Timer
  5. arr = Range("A1", [A65536].End(xlUp))
  6. ReDim arr2(1 To UBound(arr), 1 To 1)
  7. For i = 1 To UBound(arr)
  8.   arr2(i, 1) = Mid(arr(i, 1), 9, 4)
  9. Next
  10. [B1].Resize(i - 1, 1) = arr2
  11. MsgBox Timer - t
  12. End Sub
复制代码
我的电脑在数据2万条的时候运行时间是0.047秒。

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2011-12-19 11:11 | 显示全部楼层
可以直接使用VBA数据循环得到,很快的
回复

使用道具 举报

 楼主| 发表于 2011-12-19 11:20 | 显示全部楼层
我有几万行数据的,用循环肯定不行的

点评

数组运行几万行数据也就零点几秒的时间。  发表于 2011-12-19 11:25
回复

使用道具 举报

发表于 2011-12-19 11:23 | 显示全部楼层
同意2楼
楼主应该上传附件,也许。。。已解决了
回复

使用道具 举报

发表于 2011-12-19 13:31 | 显示全部楼层    本楼为最佳答案   
  1. Private Sub CommandButton1_Click()
  2. Dim arr, arr2, t
  3. Dim i As Long
  4. t = Timer
  5. arr = Range("A1", [A65536].End(xlUp))
  6. ReDim arr2(1 To UBound(arr), 1 To 1)
  7. For i = 1 To UBound(arr)
  8.   arr2(i, 1) = Mid(arr(i, 1), 9, 4)
  9. Next
  10. [B1].Resize(i - 1, 1) = arr2
  11. MsgBox Timer - t
  12. End Sub
复制代码
我的电脑在数据2万条的时候运行时间是0.047秒。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-9 14:25 , Processed in 0.247298 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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