Цикл проверки сумм в зависимости от нескольких столбцов с неизвестными записями - PullRequest
0 голосов
/ 01 февраля 2019

Я занимаюсь проверкой данных в Excel VBA.

Я получаю списки сотрудников, даты и количества, и перед дальнейшей обработкой мне нужно проверить, имел ли ЛЮБОЙ сотрудник (столбец A) на ЛЮБУЮ дату (столбец B) более определенного определенного количества чего-либо (столбец C)условная сумма).

В качестве примера давайте предположим, что я хочу проверить входящие листы следующего формата:

Example

… и мне нужно повыситьпредупреждение, если у любого сотрудника было более одного полного cookie в любой день.(В этом примере должно появиться предупреждение, потому что на 1 января у Бена было 1,2 куки-файла.)

Допущения:

  • Я не знаю, какие имена есть в списке.
  • Я не знаю, сколько записей в день было у этого человека.
  • Я не знаю порядок записей во входящих листах.

Мой текущий подходбыло бы отфильтровать столбцы A и B для уникальных значений, выполнить цикл по этим двум спискам и применить SumIfS для суммирования соответствующих значений в столбце C. Однако это кажется совершенно неэффективным, поскольку включает в себя много вложенных циклов, и это скорее "Excel"", чем" VBA ".

Как я могу решить эту проблему, используя VBA правильно?

1 Ответ

0 голосов
/ 01 февраля 2019

Просто используйте функцию SUMIFS , чтобы получить общее количество файлов cookie, которые каждый сотрудник имел за один день:

=SUMIFS(C:C,A:A,A:A,B:B,B:B) 'alternatively =SUMIFS(C:C,A:A,A2,B:B,B2)

=IF(SUMIFS(C:C,A:A,A:A,B:B,B:B) > 1,A:A & " is too fat", A:A & " can eat more")

Для использования в немецком Excel:

=SUMMEWENNS(C:C;A:A;A:A;B:B;B:B) 'alternatively =SUMMEWENNS(C:C;A:A;A2;B:B;B2)

=WENN(SUMMEWENNS(C:C;A:A;A:A;B:B;B:B) > 1;A:A & " is too fat"; A:A & " can eat more")

enter image description here

Если вам нужно решение VBA, взгляните на метод WorksheetFunction.SumIfs или просто напишите эту формулу с VBA в столбце:

Range("E2:E20").Formula = "=SUMIFS(C:C,A:A,A:A,B:B,B:B)" '<-- takes only english formula

напр.использовать его для легкой фильтрации позже (например, чтобы получить список всех толстых сотрудников).

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