Приветствую. При попытках автоматизации своей работы столкнулся с проблемой, которую решить у меня не получается. А именно не могу понять как копировать элементы массива в другой массив с использованием различных алгоритмов. Сама задача: требуется взять диапазон строк в одном столбце и перенести с удвоением в другой столбец. Пытался выполнить это через перебор строк и копирования в другой столбец с условием четности и нечетности. Не получилось. Да и не правильно это на мой взгляд. Стал использовать массивы, но не понимаю как это сделать. Присвоение элементов работает только один ко одному.
Прошу натолкнуть на правильную мысль.
Код
Sub Mas5()
Dim Arr()
Dim i As Long, j As Long, b As Long, Lastrow As Long
Application.ScreenUpdating = 0
Lastrow = Cells(Rows.Count, 1).End(xlUp).Row
Arr = Range(Cells(2, 1), Cells(Lastrow, 1)).Value
ReDim Arr2(1 To Lastrow*2, 1 To 1)
For i = 1 To Lastrow - 1
For j = i + 1 To Lastrow
'я не понимаю как описать алгоритм копирования
Next
Next
Cells(2, 7).Resize(Lastrow, 1).Value = Arr
Application.ScreenUpdating = 1
End Sub
isdn написал: взять диапазон строк в одном столбце и перенести с удвоением в другой столбец
Код
Option Explicit
Option Base 1
Sub aaa_bbb_bbb_1()
Dim i As Long, vim As Long
Dim tbl()
vim = Cells(Rows.Count, "a").End(xlUp).Row
tbl = Range("a2:a" & vim).Value
vim = vim - 1
For i = 1 To vim
tbl(i, 1) = tbl(i, 1) * 2
Next
Range("b2").Resize(vim, 1).Value = tbl
End Sub
Sub aaa_bbb_bbb_2()
Dim i As Long, vim As Long
vim = Cells(Rows.Count, "a").End(xlUp).Row
Range("b2:b" & vim).Value = Range("a2:a" & vim).Value
For i = 2 To vim
Range("b" & i).Value = Range("b" & i).Value * 2
Next
End Sub
Option Explicit
Public Sub Массив_Удвоить()
Dim arr_Sour() As Variant, arr_Dest() As Variant
arr_Sour = [a1].CurrentRegion.Offset(1).Value
ReDim arr_Dest(1 To UBound(arr_Sour) * 2, 1 To 1)
Dim x As Long
For x = LBound(arr_Sour) To UBound(arr_Sour)
arr_Dest(x * 2 - 1, 1) = arr_Sour(x, 1)
arr_Dest(x * 2, 1) = arr_Sour(x, 1)
Next
[f2].Resize(UBound(arr_Dest), UBound(arr_Dest, 2)) = arr_Dest
End Sub
Sub iInsertArray()
Dim arr(), i&, j&
arr = Range([a2], [a1].End(xlDown)).Value
ReDim iarr(1 To UBound(arr) * 2, 0)
For i = 1 To UBound(iarr) Step 2
j = j + 1
iarr(i, 0) = arr(j, 1)
iarr(i + 1, 0) = arr(j, 1)
Next i
[f2].Resize(UBound(iarr), 2).Value = iarr
End Sub
"Все гениальное просто, а все простое гениально!!!"