Константин Карначук
Гуру
(4550)
10 лет назад
Dim r%, c%, v
v = Array(Array(1, 2, 3, 4, 5, 6, 7), Array(2, 6, 4, 3, 7, 2, 3), Array(4, 5, 6, 1, 2, 3, 5))
r = 21: c = 1
'одну вторую строку массива в один диапазон
ActiveSheet.Range(Cells(r, c), Cells(r, c + UBound(v(2)))) = v(2)
r = 23: c = 1
'первое значение первой строки массива в другой диапазон
ActiveSheet.Range(Cells(r, c), Cells(r + 2, c + UBound(v(2)))) = v(0)(0)
Aleksandr H.
Мыслитель
(6004)
10 лет назад
For i = 1 to 7 do
cells(i,1).value = Arr(1,i-1) ' масив начнем с 0-й позиции
как-то так
Александр ЗлатенковМыслитель (6175)
10 лет назад
получится семь поочередных операций.
Надо, разом присвоить. .
как, например, если весь массив присвоить равному по колличеству строк и столбцов диапазону операция проходит мгновенно в один такт.
[a1:c7]=x (где Х это наш массив)
Алексей Матевосов (AlexM)
Просветленный
(27395)
10 лет назад
Допустим исходный массив (диапазон) - D1:F7
Копировать надо один столбец массива в диапазон A1:A7
Range("D1:F7").Resize(7, 1).Offset(0, n).Copy (Sheets(1).Range("A1:A7"))
при n = 0,1,2 будет копироваться 1,2 или 3 столбец
Александр ЗлатенковМыслитель (6175)
10 лет назад
С циклом то понятно. Без цикла можно? Как если целиком масив копирую разом в диапазон? Выделить часть массива (как диапазон) и присвоить эти значения нужному диапазону
Андрей Лящук
Профи
(975)
10 лет назад
А можно немного наркоманский код предложить? ;)
Sub gg()
Dim arr As Variant
Dim s As String
Dim d As New DataObject
arr = Array(Array(1, 2, 3, 4, 5, 6, 7), _
Array(2, 6, 4, 3, 7, 2, 3), _
Array(4, 5, 6, 1, 2, 3, 5))
ActiveWorkbook.Names.Add Name:="rngish", RefersToR1C1:="=Лист1!R1C1:R7C1"
For i = 0 To UBound(arr(1)): s = s & Str(arr(1)(i)) & Chr(10): Next
d.SetText (s)
d.PutInClipboard
ActiveSheet.Paste Range(ActiveWorkbook.Names("rngish").RefersTo)
ThisWorkbook.ActiveSheet.Cells(1, 2) = arr(0)(0)
End Sub
Его значения:
1 2 3 4 5 6 7
2 6 4 3 7 2 3
4 5 6 1 2 3 5
И есть именованный диапазон
rngish=[a1:a7]
Как присвоить диапазону только второй ряд из массива?