Joh*_*son 2 arrays excel performance vba
由于在工作表中逐个单元地写入值的大循环,我有一个运行时间很长的例程.我以为我会聪明并将所有内容加载到2D阵列中然后快速将其转储到Excel工作表中.目标是加快速度.发现我不能只做我想要的.
xlsheet.Range("C2") = MASTER_OUT
Run Code Online (Sandbox Code Playgroud)
发现以上不起作用.MASTER_OUT是一个包含34列和各行的2D数组.我希望我不必遍历数组并在工作表中逐个单元格放置数据,因为这根本不会节省任何时间.
小智 6
xlsheet.Range("C2").Resize(UBound(MASTER_OUT, 1), UBound(MASTER_OUT, 2)) = MASTER_OUT
Run Code Online (Sandbox Code Playgroud)
翻转行和列是很常见的.如果是这种情况,则使用Excel Application对象的TRANSPOSE函数并翻转未结束的排名.
xlsheet.Range("C2").Resize(UBound(MASTER_OUT, 2), UBound(MASTER_OUT, 1)) = _
Application.Transpose(MASTER_OUT)
Run Code Online (Sandbox Code Playgroud)
请注意,TRANSPOSE有局限性¹.我相信它在无符号整数的最大值附近开始变得不可靠(例如65,536(...?))
¹请参阅数据文件中的Excel VBA中的Error13,以获得可靠的2D转置辅助函数,没有任何限制.