从一个数组中取部分值生成新数组,要实现此需求通常都是采用循环的方法来完成,那有没有更简易的思路呢?
借用jscript可以实现,直接取值,不用循环。例如从100000万中元素是取8000个值出来生成新的数组,jscript能简单运行过程和书写过程。
案例展示:
假设用A1:A50区域的值生成一个数组Arr,然后从Arr中取5个值出来生成第二个数组Arr2。
代码如下:
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
执行代码的结果如下:
请核对以上结果,它是代码y.slice(10, 15)生成的。从第11个元素开始取值到第16个结束,但不包含第16个(数组下标为0)。
学会了吗?
关注公众号可以获取更多知识分享。