Excel精英培训网

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

[已解决]分割取数倒序这个代码能进行改进吗?我想它运行速度更高

[复制链接]
发表于 2012-1-11 08:41 | 显示全部楼层 |阅读模式
分割取数倒序即倒着取数的EXCEL自定义函数


Function 分割取数倒序(取数单元格, 倒的取数序号, 分隔符) As String
'按分割符取数,三个参数,第一个为对象,第二个为取第几个值(分割符每个值与其它值之间的分界线),第参数为分割符
On Error Resume Next
Dim temp
temp = Split(取数单元格, 分隔符)
A = 0
For i = 1 To 100
F = "墼"
F = temp(i - 1)

If F <> "墼" Then A = A + 1

Next i

分割取数倒序 = temp(A - 倒的取数序号)
End Function
最佳答案
2012-1-11 09:11
ubound、lbound分别取数组的最大下标和最小下标。
split返回的数组最小下标为0
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2012-1-11 09:03 | 显示全部楼层
用split非常好!
后面的循环就没必要了。temp是个数组,可以直接取其相应元素嘛
回复

使用道具 举报

 楼主| 发表于 2012-1-11 09:08 | 显示全部楼层
我不知道如何求得数组中元素的个数
回复

使用道具 举报

发表于 2012-1-11 09:11 | 显示全部楼层    本楼为最佳答案   
ubound、lbound分别取数组的最大下标和最小下标。
split返回的数组最小下标为0
回复

使用道具 举报

发表于 2012-1-11 09:22 | 显示全部楼层
F = "墼"在整个代码中没起到任何作用
只循环到100,要是数组元素多于100个呢?
因此如果要用你这个思路改成do循环,当出错时结束循环,循环中累加
回复

使用道具 举报

 楼主| 发表于 2012-1-11 13:27 | 显示全部楼层
谢谢大家,已经照4楼的改好了
Function 分割取数倒序(取数单元格, 倒的取数序号, 分隔符) As String
'按分割符取数,三个参数,第一个为对象,第二个为取第几个值(分割符每个值与其它值之间的分界线),第参数为分割符
On Error Resume Next
Dim temp
temp = Split(取数单元格, 分隔符)
A = UBound(temp, 1)


分割取数倒序 = temp(A - 倒的取数序号 + 1)

End Function
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-24 16:20 , Processed in 0.341815 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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