Страницы: 1
RSS
вывод на лист одного столбца из 2мерного массива
 
Здравствуйте!  
имеем  
a = [a1:c10]
[e1:e10] = a(1:10, 2) :)
 
как вывести на лист только одну размерность из массива?  
cells(i,1) = a(i,2) не подойдет - долго перебирать циклом  
неужели делать из 2мерного массива одномерный и потом его вставлять?  
 
спасибо
 
2 варианта на выбор:  
 
Sub Макрос1()  
   a = [a1:c10].Value
   [e1:e10] = Application.WorksheetFunction.Index(a, 0, 2)
End Sub  
 
 
Sub Макрос2()  
   Dim a As Range: Set a = [a1:c10]
   [e1:e10] = a.Columns(2).Value
End Sub
 
Sub Макрос1()  
a = [a1:c10]
[e1:e10] = Application.Transpose(Application.Index(Application.Transpose(a), 2, 0))
End Sub  
 
Но мне не нравится...  
Думаю, быстрее будет перебором в другой массив переложить, а его выгрузить.
 
Да, что-то я с индексом перемудрил... Ну не формулист я... :)
 
EducatedFool,  
Hugo,  
большое спасибо !
 
Да, замерил.  
Самый быстрый вариант - [e1:e50000] = x.Columns(2).Value
Затем перебор массивов, затем индекс. Хотя разница небольшая:  
 
Index: 0,609375  
Columns: 0,5  
Array2Array: 0,5625  
 
Но зато перебор массивов самый гибкий - можно в процессе ещё что угодно делать, например раскладывать в два массива по условию.
Страницы: 1
Читают тему
Наверх