У меня есть повторяющийся список из 145 категорий с 15 столбцами данных для каждой категории. Я собираю этот список, уменьшая количество категорий до 24 и добавляя соответствующие данные.Как скопировать выбранный диапазон в заданный массив?
Например, Если у меня были категории A B C D E F G и я консолидировал, я бы добавил все значения в A и, скажем F, чтобы получить новую категорию.
Другая проблема заключается в том, что все эти 145 категорий повторяются в течение 60 периодов времени. Поэтому мне приходится консолидировать данные отдельно для каждого периода времени.
Для этого я пытаюсь использовать массивы.
Sub CategoriesToSectors()
Dim k As Integer
Dim j As Integer
Dim p As Integer
Dim Destination As Range
' p is just a filler/dummy variable until I later decide which categories go into which sector
Dim CategoryData(144, 14) As Long
Dim SectorData(23, 14) As Long
k = 0
' k should go Upto 60
' I first copy the data from a range in the first worksheet into the array CategoryData
' Then I move 145 rows down for the next time-period's data and repeat this whole process
While k < 60
Sheets("ReformattedData").Select
Range("B1:P145").Select
ActiveCell.CurrentRegion.Offset(k * 145, 0).Select
CategoryData = Selection.Value
For j = 0 To 14
SectorData(0, j) = CategoryData(1, j) + CategoryData(6, j) + CategoryData(8, j) + CategoryData(13, j)
For p = 1 To 23
SectorData(p, j) = CategoryData(15, j) + CategoryData(19, j) + CategoryData(31, j) + CategoryData(44, j)
Next p
Next j
' paste consolidated sectordata array one below another in SectorData worksheet
Sheets("SectorData").Select
Range("B2").Select
Set Destination = ActiveCell.Offset(k * 25, 0)
Destination.Resize(UBound(SectorData, 1), UBound(SectorData, 2)).Value = SectorData
Wend
End Sub
Как вы можете видеть, что я делаю это первая попытка скопировать первый блок диапазона в массив CategoryData. Затем я объединяю данные в массив сектора - я только что использовал повторяющиеся значения для его проверки - цикл for с p не должен существовать. В конечном итоге я буду использовать 24 разных оператора для создания массива SectorData.
Затем я вставляю консолидированные данные на другой лист. Вернемся к первому листу и переместим мой выбор вниз для следующего блока диапазона (145 ячеек ниже первой ячейки), затем я выбираю эти данные и повторяю.
Это не работает - ошибка ввода данных в первый массив - CategoryData.
Справка будет принята с благодарностью.
Спасибо
На какой линии имеет место ошибка, и что это сообщение об ошибке? –
Ошибка возникает здесь: CategoryData = Selection.Value Что-то по строкам не может назначить массив. – user2643068