excel - 如何在VBA中高效创建子数组?

标签 excel vba

在我的 VBA 程序中,我有一个很大的数据数组,我需要不断地使用它的子数组。

我的方法是:

Redim subArr(rowBegin to rowEnd)
For r = rowBegin to rowEnd
    subArr(r) = bigArr(r)
Next r

有没有更有效的方法来引用这种子数组?谢谢...

最佳答案

使用数组的速度非常快,因此这可能不会带来明显的好处 - 尽管我可以理解它从编码意义上比循环填充较小的数组更有吸引力

假设您正在使用单个元素数组,您可以:

  1. 在大数组中引入一个“标记”字符串
  2. 将带有分隔符的大数组连接为单个字符串
  3. 通过“标记”字符串拆分大数组,然后使用分隔符将缩减后的字符串分隔成较小的数组

下面的代码将数字 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

关于excel - 如何在VBA中高效创建子数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10167495/

相关文章:

java - 导入 Apache POI 单元库

excel - 如何使用 apache POI 在 Excel 页面上设置标题?

json - 在数组中循环 JSON 以获得 VBA 中的相同值

vba - ActiveSheet 与 Application.ActiveSheet

运行其他模块的VBA模块

excel - 仅更改单元格中字符串的特定部分,保持原样

vba - 双击启动宏

VBA:在多个条目单元格上使用下拉菜单进行自动过滤

java - 如何修复 "We found a problem with some content in ' abc.xlsm'。您希望我们尽力恢复吗?

vba - 仅保存工作表的表对象值的副本