2017-02-07 2 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 правильно определены.

Мой вопрос: как добавить массив b после массива a. Предположим, что а = (8,3,5) и Ь = (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 

Я пытаюсь добавить CARRAY() в конце aArray, где эти два массива будут введены в cArray(). Почему это не работает? Я хотел бы понять.

Я также пробовал, создав функцию (How do I Merge two Arrays in VBA?), но тогда я как вызову процедуру? Это не работает.

Спасибо!

ответ

0

Вы хотите добавить массивы или диапазоны excel?

a и b находятся в вашем примере только объекты диапазона Excel. Не массивы.

В любом случае: Heres хорошая статья для присоединения массивов: How do I Merge two Arrays in VBA?

А вот статья для сортировки: VBA array sort function?

+0

На самом деле и б имеет значения диапазонов первенствовать. Я думал, что мне нужно преобразовать диапазоны в массивы, прежде чем искать значения массива. – vbalearner

+0

Я действительно не понимаю, что вы хотите. Join аннотирует все элементы массива размерных переменных в строку. например a = (8,6,9) Join (a, "/") Возвращает строку «8/6/9» – Shmukko

+0

Я хочу создать два массива из двух разных столбцов. И тогда мне нужно объединить эти два массива в третью. Например, рассматривая a = массив (8,3,5) и b = массив (1,72), третий массив c = массив (1,2,3,5,7,8), где значения сортируются в порядке возрастания , – vbalearner

Смежные вопросы