У меня очень большой блок данных в таблице Excel (100 000 строк по 30 столбцов).VBA Excel - диапазон по разности по критерию контента
Первый столбец может иметь один из шести различных значений (CAT1..CAT6).
Мне нужно разделить содержимое в 6 электронных таблицах в той же книге.
Загрузите исходный диапазон в исходном варианте и разделите его в целевом варианте, который я пишу в целевых листах.
Код вдоль этой линии: Sub TestVariant()
Dim a, b, c As Variant
Dim i, j, k As Variant
Worksheets("Sheet1").Activate
a = Worksheets("Sheet1").Range("A1:AD100000").Value
ReDim b(UBound(a, 1), UBound(a, 2))
ReDim c(UBound(a, 1), UBound(a, 2))
j = 1
k = 1
For i = 1 To UBound(a, 1)
Select Case a(i, 1)
Case "CAT01"
b(j, 1) = a(i, 1)
'..
b(j, 30) = a(i, 30)
j = j + 1
Case Else
c(k, 1) = a(i, 1)
'..
c(k, 30) = a(i, 30)
k = k + 1
End Select
Next i
Worksheets("Sheet2").Range("A1").Resize(UBound(b, 1), UBound(b, 2)) = b
Worksheets("Sheet3").Range("A1").Resize(UBound(c, 1), UBound(c, 2)) = c
End Sub
Теперь вопросы:
Есть ли способ, чтобы скопировать одну «строку» в то время, от источника вариант к целевому варианту? Что-то вроде
б (J) = A (I,)
Есть ли способ просто Redim цели варианты к содержанию данных (изначально я просто DIM в соответствии с источником, но каждый целевым вариантом будет obiously имеет меньшее содержание, чем источник
есть ли другой подход к проблеме раскола более эффективной? (коллекции? ключи?)
любые предложения будут оценивать.
Спасибо за чтение
Cris
вы можете использовать 'Filter', просто отфильтровать все данные по" CAT "в колонке A, а затем скопируйте весь диапазон фильтров на другой рабочий лист, то есть самый быстрый и простой прием данных будет большой сбор данных. –
Копирование диапазона в диапазон, по-видимому, занимает много времени (часы!) –
Загрузить данные в Варианте невероятно быстры. –