Я работаю над Sub, чтобы помочь очистить большой набор данных Мне нужно работать каждую неделю. данные список продуктов, с общим и размер для каждого, так это выглядит примерно так:VBA Faster Data Clean Up
Продукт 1 Все
Продукт 1 Малый
Продукт 1 Средний
Продукт 2 Все
Я хочу сохранить продукт только в том случае, если он соответствует одному из трех критериев, но если это так, я хочу сохранить все строки для этого продукта. Если продукт не соответствует ни одному из трех критериев, я хочу удалить каждую строку, содержащую этот продукт.
Я написал приведенный ниже код, который, кажется, работает, но занимает много времени.
For i = Data.Cells(Rows.Count, "B").End(xlUp).Row To 3 Step -1
If Data.Range("F" & i) = "All" Then
TY_Sales = Data.Range("K" & i)
LY_Sales = Data.Range("L" & i)
TY_Stock = Data.Range("O" & i)
Sales_Stock = TY_Sales + LY_Sales + TY_Stock
If Sales_Stock <= 0 Then
vendor_ref = Data.Range("E" & i)
For j = i + 10 To i Step -1
If Data.Range("E" & j) = vendor_ref Then
Data.Range("E" & j).EntireRow.Delete
End If
Next
End If
End If
Next
Его принимают возрастов, потому что мой первоначальный набор данных 17k строк, и я знаю, что я итерация через все это снова и снова, но я не знаю, лучший способ сделать это быстрее. Любая помощь приветствуется.
Я предполагаю, что ячейка «F» & i является частью дампа данных и определяет, что строка, на которой вы находитесь, является чем-то вроде позиции? Или это ячейка, где у вас есть ручная формула, которая проверяет, соблюдаются ли все категории, а затем помещается в «Все»? –
столбец F - это столбец, в котором указан размер продукта, а All - это строка для каждого продукта, содержащего данные для всего продукта. Это те строки, которые мне интересны в соответствии с моими критериями, вот почему я включил это: –
У вас медленная процедура, потому что вы пытаетесь пройти через каждую ячейку диапазона. То, что вы хотите сделать, - это копирование массива с массивами, объясненное здесь, а также другие рекомендации по производительности: http://stackoverflow.com/a/19167804/109122 – RBarryYoung