在我的VBA程序中,我有大量数据,我需要不断使用其子数组。
我的方法是:
Redim subArr(rowBegin to rowEnd)
For r = rowBegin to rowEnd
subArr(r) = bigArr(r)
Next r
有没有更有效的方法来引用这种子阵列?感谢...
答案 0 :(得分:3)
使用数组非常快,所以这可能没有任何明显的好处 - 我可以理解它是如何从编码意义上吸引而不是循环来填充更小的数组
鉴于您正在使用单个元素数组,您可以:
Join
带有分隔符的大数组到单个字符串Split
大号数组由“marker”字符串组成,然后将缩小的字符串分隔成带分隔符的较小数组下面的代码将数字1到100转储到一个数组中,然后按上面的方式拆分它以取出前10条记录
Sub test()
Dim bigArr
Dim subArr
Dim strSep As String
Dim strDelim As String
Dim strNew As String
Dim rowBegin As Long
Dim rowEnd As Long
strDelim = ","
strSep = "||"
'fill array with 1 to 100
bigArr = Application.Transpose(Application.Evaluate("row(1:100)"))
rowBegin = 1
rowEnd = 10
bigArr(rowEnd + 1) = strSep
'make a single string
strNew = Join(bigArr, strDelim)
'split the string at the marker
vArr = Split(strNew, strSep)
ReDim subArr(rowBegin To rowEnd)
'split the smaller string with the desired records
subArr = Split(Left$(vArr(0), Len(vArr(0)) - 1), strDelim)
End Sub
答案 1 :(得分:2)
简短回答:可能不是
答案不是那么简短:既然您正在创建一个非0/1边界的子数组,为什么不直接传递对原始数组和边界的引用?
BTW:VBA阵列的一个很好的资源是CPearson的网站http://www.cpearson.com/excel/vbaarrays.htm