首页 > 解决方案 > 几个不连续的列到数组中

问题描述

我尝试尽可能有效地将 4 列加载到数组中。
我试过了

dim ar
ar = sheet1.Range("C2:C2681,G2:G2681,J2:J2681,T2:T2681")

但只有第一列被加载到数组中。
我也试过

    ar = .Range("C2:T" & lastRow)
    ar = Application.Index(ar, , Array(1, 5, 19))

但这给了我一个类型不匹配的错误。

为此目的有什么聪明的技巧吗?

标签: arraysexcelvba

解决方案


ReDim with Preserve 只允许您修改最后一个等级,但您可以先移动数组元素的值。

dim ar as variant, i as long

ar = sheet1.Range("C2:T2681").value

for i=lbound(ar, 1) to ubound(ar, 1)
    ar(i, 2) = ar(i, 5)   'move column G to 2nd
    ar(i, 3) = ar(i, 8)   'move column J to 3rd
    ar(i, 4) = ar(i, 18)  'move column T to 4th
next i

redim preserve ar(lbound(ar, 1) to ubound(ar, 1), lbound(ar, 2) to 4)

推荐阅读