Удалить значения выше некоторого уровня в диапазоне определенной строки - PullRequest
0 голосов
/ 11 июня 2019

Я хочу написать код, который использует предпочтительно массивы , потому что у меня будет длинный список значений в этой таблице (ListObject).Поэтому не только эти несколько строк вы можете увидеть на фотографиях.Моя цель состоит в том, чтобы удалить строки таблицы (ListObject), когда значения превышают сумму 50 000.

Это то, что я хочу сделать:

На листе у меня есть 2столбцы с данными об имени элемента и значением: enter image description here

Я хочу, чтобы код просматривал значения вместе с тем же элементом и суммировал, если общая сумма значений в пределахтот же пункт> 50.000.Если это так, то элементы, которые не превышают 50 000, должны быть удалены из таблицы.

Это мой желаемый результат:

enter image description here

Я понятия не имею, какую процедуру я могу использовать, чтобы это произошло в vba.Я думал о «Для каждого», но у меня будет много строк в таблице, и я знаю, что использование «для каждого» замедлит выполнение кода.Еще раз хочу заметить, что это таблица (объект списка).

Буду признателен за некоторые идеи.

1 Ответ

0 голосов
/ 11 июня 2019

Я бы использовал что-то вроде этого:

Sub Macro2()

Dim val() As Integer


'setting a array with data
data = Range("E5:F18").Value


'Finding Unique values and storing them in Chck

Range("E5:E18").Copy Range("G4")
Range("G5:G18").RemoveDuplicates Columns:=1, Header:=xlNo

chck = Range("G4:G" & Cells(Rows.Count, 7).End(xlUp).Row).Value

' Constructing new array for values

ReDim Preserve val(1 To UBound(chck))

For i = LBound(data) To UBound(data)

    For j = LBound(chck) To UBound(chck)

        If chck(j, 1) = data(i, 1) Then

            'Here you can add your code to remove the value from rows, so that later you can delete the blank rows or anything like that
            val(j) = val(j) + data(i, 2)

        End If

    Next

Next

'In last you will have all the sum of values for unique Items in Val


End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...