vba 跳到下一个循环_VBA野知识分享:从一个数组中取部分值生成新数组,不使用循环的思路...

从一个数组中取部分值生成新数组,要实现此需求通常都是采用循环的方法来完成,那有没有更简易的思路呢?

借用jscript可以实现,直接取值,不用循环。例如从100000万中元素是取8000个值出来生成新的数组,jscript能简单运行过程和书写过程。

案例展示:

假设用A1:A50区域的值生成一个数组Arr,然后从Arr中取5个值出来生成第二个数组Arr2。

7444b1f2b7c84f51fb530551a2d3d11d.png

代码如下:

Sub 从数组中取一段值生成新的数组()    '不使用循环的思路    Dim x As Object, y As Object, arr, arr2 '声明变量    Set x = CreateObject("Scriptcontrol")    x.Language = "jscript"    x.eval "function aa(aa) {return aa.toArray();}"    arr = [a1:a30].Value '将A1:A30的值赋给变量Arr    Set y = x.Run("aa", arr) '将数组arr的值传给变量y     'slice有两个参数,第一参数10表示从第11个元素开始(下标为0,因此参数10表示第11个值开始取值,包含第11个值本身)     '第二个参数15表示取值时截止到第16个值结束,但不包含第16个值。     '简单讲,slice(10, 15)就是从第11个值开始取到第15个值结束     arr2 = Split(y.slice(10, 15), ",")     MsgBox Join(arr2, ","), vbOKOnly, "新的数组" '将提取出来的新数组转换成一个字符串,输出到屏幕上  'End Sub

执行代码的结果如下:

23f19233b457924534623d5536144d46.png

请核对以上结果,它是代码y.slice(10, 15)生成的。从第11个元素开始取值到第16个结束,但不包含第16个(数组下标为0)。

学会了吗?

关注公众号可以获取更多知识分享。

66cd11c10df8a1efae0d731e8c6c86aa.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值