У меня есть список из примерно 12 000 строк с номерами проектов, менеджерами по работе с клиентами, датой создания, статусом ... и т. Д. В настоящее время я делаю отчеты каждые 2 недели в виде сводных таблиц, а затем составляю из них графики. Я знаю, что это можно автоматизировать, поскольку я исключил сводные таблицы и воспроизвел результат с помощью counttifs. Теперь я хочу иметь возможность делать то же самое с VBA, до такой степени, что пользователь может перейти в электронную таблицу, нажать кнопку и отобразить самые свежие данные. Для начала я хочу немного изучить counttif в vba.
Допустим, таблица выглядит так
A | B | C
proj.Number Account Manager Status
123 Person 1 Won
234 Person 2 Lost
345 Person 3 Quoted
В настоящее время это мой код, который отлично работает для counttif, но без цикла ... и я знаю, что это можно как-то сделать
Dim PersonOne as Range
Set PersonOne = Range("E2")
Dim PersonTwo as Range
Set PersonTwo = Range("E3")
Dim PersonThree as Range
Set PersonThree = Range("E4")
Range("D2") = "Person 1"
Range("D3") = "Person 2"
Range("D4") = "Person 3"
PersonOne = (WorksheetFunction.CountIf(Range("B2", Range("B2").End(xlDown)), "Person 1"))
PersonTwo = (WorksheetFunction.CountIf(Range("B2", Range("B2").End(xlDown)), "Person 2"))
PersonThree = (WorksheetFunction.CountIf(Range("B2", Range("B2").End(xlDown)), "Person 3"))
Как мне автоматизировать это до такой степени, что мне даже не нужно писать имена людей (часть, где я говорю диапазон (d2) = какой-то человек. Могу ли я иметь код, который ищет все возможные уникальные имена, помещает их в определенном диапазоне электронной таблицы, а затем подсчитать, сколько раз это имя встречается в данном диапазоне?
Спасибо
ActiveWorkbook.RefreshAll
, и он обновит сводную таблицу. Также вы можете разблокировать все ячейки, заблокировать те, с которыми пользователи не должны вмешиваться, и защитить лист. - person M--   schedule 28.04.2017