Уважаемые гуру форума, прошу проконсультировать в чисто теоретическом вопросе. Ситуация такая. Предположим, что имеется массив размером 5х4 и этот массив выгружается в ячейку А2. При этом в ячейках столбца С у нас имеется формула (любая). При выгрузке означенного массива формула разумеется затрется. Я пытаюсь бороться с этим 2 способами:
Способ 1 . Формирую 2 массива (5х2 и 5х1) и вставляю их в соответствующие ячейки
Код |
---|
Private Sub CommandButton1_Click() ReDim Arr(1 To 5, 1 To 2) ReDim Arr2(1 To 5, 1 To 1) For j = 1 To 5 Arr(j, 1) = 1 Arr(j, 2) = 2 Arr2(j, 1) = 3 Next j Cells(2, 1).Resize(UBound(Arr, 1), UBound(Arr, 2)).Value = Arr 'выгрузка результата Cells(2, 4).Resize(UBound(Arr2, 1), UBound(Arr2, 2)).Value = Arr2End Sub |
Способ 2. После выгрузки массива восстанавливаю формулу в «затершихся» ячейках
Код |
---|
Private Sub CommandButton2_Click() ReDim Arr(1 To 5, 1 To 4) For j = 1 To 5 Arr(j, 1) = 1 Arr(j, 2) = 2 Arr(j, 4) = 3 Next j Cells(2, 1).Resize(UBound(Arr, 1), UBound(Arr, 2)).Value = Arr 'выгрузка результата Cells(1, 3).AutoFill Destination:=Range(Cells(1, 3), Cells(6, 3)), Type:=xlFillDefault 'восстанавливаем формулуEnd Sub |
Оба варианта работают, но очень хотелось бы знать какой из вариантов более правильный и грамотный. И еще вопрос про данную ситуацию. Можно ли каким-либо способом выгружать массив сразу в 2 места (т.е. часть массива (первые 2 колонки) в ячейку А2, а вторую часть (3 колонку) в ячейку С2)? Или может быть можно каким-либо способом указать в массиве для Arr(j, 3), что в этом элементе массива должна оказаться та формула которая уже имеется на листе?
Заранее спасибо всем откликнувшимся за консультации