VBA SUMIF на массиве - PullRequest
       10

VBA SUMIF на массиве

1 голос
/ 29 января 2020

ОК, поэтому я хочу сделать sumif для столбца в массиве, потому что я не хочу печатать на листе, чтобы получить тип диапазона для Worksheet.function.Sumif, идея состоит в том, чтобы остаться полностью в коде VBA и писать на листе как можно меньше. Я пытаюсь оптимизировать скорость: 4814 строк на 40 столбцов X 60.

Итого по первому столбцу - всего 197 321 164, это правильно, следующие столбцы низкие, и вместо того, чтобы идти в четверть 40, остальное включается и все после 8 равно 0. Первый «To_Quarter» в массиве равен 9, поэтому с> = я бы подумал, что это будет go до 9. Я попытался поместить свой Next I перед End IF, но затем он просто запрашивает For .

изображение коробки местных жителей: https://ibb.co/cgFQhxY

Любая помощь будет высоко ценится.


Sub SumifONarray()
Dim arrQuarters, arrNumber_of_Assets As Variant

Dim I As Long, J As Long

arrNumber_of_Assets = Range("Costs_Number_of_Assets")
arrQuarters = Range("Quarters_1to40")

Dim MaxRecov_If_result, arr_Row10_Resolution_Physical_Possession_Expenses_To_Quarter, arr_Row10_Resolution__Max_Recovery_Grid As Variant

arr_Row10_Resolution_Physical_Possession_Expenses_To_Quarter = Range("_Row10_Resolution_Physical_Possession_Expenses_To_Quarter")
arr_Row10_Resolution__Max_Recovery_Grid = Range("_Row10_Resolution__Max_Recovery_Grid")

ReDim arrIf_Max_Recovery_Amount_Sum(1 To 1, 1 To UBound(arrQuarters, 2))
        For J = LBound(arrQuarters, 2) To UBound(arrQuarters, 2)
        For I = LBound(arrNumber_of_Assets, 1) To UBound(arrNumber_of_Assets, 1)

   If arr_Row10_Resolution_Physical_Possession_Expenses_To_Quarter(I, 1) >= arrQuarters(1, J) Then
                MaxRecov_If_result = MaxRecov_If_result + arr_Row10_Resolution__Max_Recovery_Grid(I, J)
                    Else: MaxRecov_If_result = 0
                    End If
                Next I
                    arrIf_Max_Recovery_Amount_Sum(1, J) = MaxRecov_If_result
                    MaxRecov_If_result = 0
                Next J
End Sub

Я загрузил образец ниже с кодом из 10 строк. https://easyupload.io/wfixds

...