VBA将数组附加到另​​一个数组中

时间:2017-02-07 19:04:27

标签: arrays vba dynamic append concatenation

如何添加两个具有相同维度的动态数组,然后按这些值的升序对其进行排序?

例如,

Dim a as Variant
a = sheets(1).range("B" & firstRow & ":B" & lastRow)
Dim b as Variant
b = sheets(1).range("C" & firstRow & ":C" & lastRow)

firstRow和lastRow已正确定义。

我的问题是如何在数组a之后追加数组b。我们假设a =(8,3,5)和b =(1,7,2)。数组c必须是(8,3,5,1,7,2)。我尝试了以下但没有成功。谁能解释为什么它不起作用?

Dim c as variant
c = Join(b, Join(a, ","))

要对数组c中引入的值进行排序,我必须创建一个函数,或者只能进行一次操作吗?

谢谢

最后版本

我已更改为以下代码:

Dim aArray() As variant
aArray = aRange
Dim bArray() As Variant
bArray = bRange
Dim cArray() As Variant
cArray = aArray
Dim i As Integer

For i = 1 To UBound(coutArray)
 ReDim Preserve cArray(UBound(aArray)+1) As Variant
 cArray(i + UBound(aArray),1) = bArray(i,1)
Next i

我试图在aArray的末尾附加cArray(),其中这两个数组将在cArray()中引入。为什么这不起作用?我想了解。

我也尝试过创建一个函数(How do I Merge two Arrays in VBA?),然后我将如何调用一个过程?它运作不佳。

谢谢!

1 个答案:

答案 0 :(得分:0)

是否要追加数组或excel范围?

a和b仅在您的样本中包含Excel Range对象。不是数组。

无论如何:这是一篇关于加入数组的好文章:How do I Merge two Arrays in VBA?

这里有一篇关于排序的文章: VBA array sort function?