Я использую этот сайт уже несколько месяцев, чтобы помочь мне начать свою карьеру программиста, и это мой первый пост здесь. Прошу прощения, если пропустил вчера этот вопрос при поиске по форуму. У меня была электронная таблица с примерно 6000 активных Sumif, ссылающихся на таблицу из 500 000+ строк. Как вы можете себе представить, это заняло некоторое время, чтобы вычислить. Я написал их в VBA, поэтому они вычисляют только тогда, когда пользователь решит это сделать. Однако при таком количестве сумифов выполнение кода занимает около 3-5 минут. Я ищу способы ускорить это для лучшего взаимодействия с конечным пользователем. Ниже я опубликую, как я выполняю сумифы. Просто для некоторого контекста это выполняет sumifs для одной и той же группы пользователей дважды, но с одним другим критерием. Дайте мне знать, если я упустил какую-либо соответствующую информацию.
For i = 1 To 12
Range("Emp_Utility").Offset(1, i).Activate
Do Until Cells(ActiveCell.Row, 2) = ""
ActiveCell.Value = Application.WorksheetFunction.SumIfs(Hrs, Emp, Cells(ActiveCell.Row, 2), Y, Cells(4, ActiveCell.Column), M, Cells(3, ActiveCell.Column))
ActiveCell.Offset(1, 0).Activate
Loop
Next i
For a = 1 To 12
Range("Emp_Billable").Offset(1, a).Activate
Do Until Cells(ActiveCell.Row, 30) = ""
ActiveCell.Value = Application.WorksheetFunction.SumIfs(Hrs, Emp, Cells(ActiveCell.Row, 2), Y, Cells(4, ActiveCell.Column), M, Cells(3, ActiveCell.Column), Bill, "No")
ActiveCell.Offset(1, 0).Activate
Loop
Next a