Макрос VBA с использованием countif с тремя столбцами

У меня есть Excel с тремя столбцами.

Column A:               Column B:    Column C:    
shirts (long, short)    color        age

Теперь мне нужно узнать, сколько существует длинных зеленых рубашек с возрастом 10 лет. Конечно, теперь я знаю, как отфильтровать это вручную, но я хотел бы сделать это автоматически. На самом деле у меня гораздо более сложный файл Excel с примерно 80 тысячами строк, и мне нужно найти еще пару чисел. Однако решение для приведенного выше примера сделает эту работу за меня. Я просто адаптирую его к моему фактическому файлу. Я нашел несколько возможных решений, но я думаю, что простая функция countIf будет самой простой или она будет недостаточно производительной, когда речь идет о более чем 80 тыс. строк? Я также изо всех сил пытаюсь создать функцию countIf, которая использует два дополнительных столбца. Я начал делать это так. Подсчитайте длинные рубашки, если значение B «зеленое», а значение столбца C равно «10». В основном я хотел бы знать, является ли это правильным решением и как может выглядеть функция.


person jz22    schedule 19.04.2017    source источник
comment
добавьте код, который вы пробовали с вопросом. Вместо объяснения формулы добавьте формулу, которую вы использовали   -  person Sivaprasath Vadivel    schedule 19.04.2017
comment
Моя попытка была настолько плохой, что я подумал, что лучше ее не добавлять.   -  person jz22    schedule 20.04.2017


Ответы (2)


Поскольку у вас есть 3 условия для вашего Count, вам нужно использовать функцию CountIfs (а не CountIf).

Код ниже выполнит задание для 3 столбцов, которые вы предоставили, и пример в вашем сообщении:

Dim CountIfsRes As Long

CountIfsRes = WorksheetFunction.CountIfs(Range("A:A"), "=long", Range("B:B"), "=green", Range("C:C"), "=10")

MsgBox CountIfsRes
person Shai Rado    schedule 19.04.2017

Ответ выше подходит, если вы хотите узнать, сколько существует длинных зеленых рубашек.

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

=COUNTIFS(A:A,"long",B:B,"green",C:C,"10")

person Joe W    schedule 19.04.2017