Заданы массивы А и В, содержащие n и m элементов соответственно. Вставить массив В между k-м и (k + 1)-м элементами массива А (k задано). VBA

Возникли трудности при решении данной задачи, выводит не совсем верный результат. Почему-то после объединения массивов A и B не выводит остаточные значения массива A. Заранее спасибо.

Sub n215()
Dim i As Double, k As Double, A(1 To 10) As Double, B(1 To 10) As Double
For i = 1 To 6
A(i) = Cells(i, 1)
Next
For i = 1 To 4
B(i) = Cells(i, 2)
Next
k = 4
For i = 1 To 4
k = k + 1
A(k) = B(i)
Next i
For i = 1 To k
Cells(i, 3) = A(i)
Next i
End Sub

Ответы (1 шт):

Автор решения: vikttur

Немого не дожали )

Вставить между... Это значит: взять k значений массива А, дописать значения массива В, ниже дописать значения масива А, начиная с k + 1 с до последнего. Но как? Ни в массив А, ни в массив В значения двух массивов не поместятся... Да просто - создать третий массив С, задав его размерность

ReDim C_(1 To n + m, 1 To 1)

а после заполнения выгрузить на лист:

Cells(1, 3).Resize(UBound(C_), 1).Value = C_

Двумерный - потому что одномерный массив горизонтальный, его можно записать на лист в одну строку. Чтобы записать в столбец, его придется или транспонировать, или значения в ячейки записывать в цикле (а это плохо, т.к. обращение к объектам листа - медленная операция).

Здесь показывал, как исходные массивы заполнять диапазоном значений за один раз, без цикла.

Дальше пробуйте сами.

Ответ будет дополнен, но через несколько дней. Надо же дать студенту возможность подумать и получить зачет самостоятельно:)

→ Ссылка