2017-02-07 32 views
0

如何追加兩個具有相同維數的動態數組,然後按照這些數值的升序對數組進行排序?VBA將數組追加到第三個數組中

例如,

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?),但然後我怎麼會調用一個過程?它沒有工作。

謝謝!

回答

0

你想追加數組或excel範圍嗎?

a和b在您的示例中只有Excel Range對象。不是數組。

總之:下面有用於連接陣列的好文章:How do I Merge two Arrays in VBA?

這裏進行排序的文章: VBA array sort function?

+0

其實A和B具有的Excel範圍的值。我想在查找數組的值之前,我必須將範圍轉換爲數組。 – vbalearner

+0

我真的不知道你想做什麼。連接將一個sinhgle維數組的所有元素註釋爲一個字符串。例如a =(8,6,9) 加入(a,「/」) 返回字符串「8/6/9」 – Shmukko

+0

我想從兩個不同的列創建兩個數組。然後,我需要將這兩個數組聚合成第三個數組。例如,考慮a =數組(8,3,5)和b =數組(1,72)第三個數組c =數組(1,2,3,5,7,8),其中值按升序排序。 – vbalearner