2015-07-01 5 views
0

Я пытаюсь напечатать массив на листе excel, начиная с определенной ячейки i.e C3 до тех пор, пока он не будет завершен, так или иначе, чтобы создать цикл для печати массива?Печать массива на лист excel

В настоящее время печать каждого значения, как это:

Dim difference(0 To 41) As Long 
For Each mycell In ActiveWorkbook.Worksheets("Differences").UsedRange 
    Dim col As Long 
    col = mycell.Column 
    If ActiveWorkbook.Worksheets("Differences").Cells(mycell.Row,mycell.Column).Interior.Color = vbRed Then 
     difference(col) = difference(col) + 1 
    End If 
Next mycell 

Sheets("Summary").Cells(47, 3) = difference(0) 
Sheets("Summary").Cells(48, 3) = difference(1) 
Sheets("Summary").Cells(49, 3) = difference(2) 
etc. 

Это становится довольно утомительным, если вы печать из 42 различных значений! Поэтому мне нужен более простой способ печати массива из начальной ячейки до конечной ячейки.

ответ

0

Вы можете использовать:

Sheets("Summary").Cells(47, 3).Resize(Ubound(difference) + 1).Value2 = Application.Transpose(difference) 

Если объявить исходный массив как 2D и начать индексы на 1, вы можете упростить вывод, как вы не будете нуждаться в Transpose.

+0

Спасибо, это работает! Однако, по-видимому, в конце почему-то печатается «# N/A» по какой-то причине – Tony

+0

Это произойдет, если вы измените размер диапазона на один больше, чем фактический массив. – Rory

0

Вы можете попробовать этот цикл:

Dim i 
for i = 0 to to UBound(difference()) 
Sheets("Summary").Cells(47 + i,3).Value = difference(i) 
Next i 

Это предполагает, что вы хотите, чтобы начать вставку в ячейке 47. Изменение этого числа на то, что клетка вам нужно, чтобы начать с.

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