2015-08-12 6 views
0

Мне нужна помощь в разработке проекта, над которым я работал в последнее время. В excel я знаю, как использовать SUMIFS. Я знаю, что можно заставить его работать в VBA (начинающий VBA здесь), но я действительно не знаю, как это сделать. Поскольку я хотел бы использовать формулу вместо (вручную) или просто ссылаться на столбцы, мне действительно нужно сделать это в VBA, потому что лист обновляется каждый месяц. Это формула:Функция SUMIFS в VBA

=SUMIFS(N:N,A:A,"*Team*", A:A, "*Total*") 

У меня есть лист (бюджет), который обновляется каждый месяц. Он должен найти слова "Team" и "Total" в столбце A до последней строки и суммировать их в столбце N (той же строке) и найти слова «Grand Total» до последней строки в столбце A, и ее сумма будет помещена на столбец N. Вот пример таблицы.

enter image description here

Эта проблема была подслушивания меня в последнее время, и я действительно нужна помощь. Любые предложения будут оценены. Спасибо!

+0

Я настоятельно рекомендую использовать диапазон A: A в формуле sumifs. Sumifs - это формула массива и очень быстро становится очень медленной, если вы ссылаетесь на весь столбец. попробуйте перейти на A1: A50000, или сколько угодно строк. – AlexT82

+0

Я запомню это. Спасибо! – Z9z9z9

ответ

0

Вы можете просто присвоить строку формулы объекту Formula объекта Range, так что это не должно быть сложнее, чем вводить его в панель формул. Вы можете сохранить его в значительной степени, как есть.

Похоже, что единственная проблема, которую вы действительно имеете, - это найти "Grand Total".

Если это всегда последняя строка в столбце А, вы можете сделать следующее:

Dim intLastRow As Long 
intLastRow = Cells(Rows.Count, "A").End(xlUp).Row 

Теперь, когда у вас есть последняя строка, вы можете обратиться вашей ячейку в колонке N и назначить ему вашу формулу:

Cells(intLastRow, "N").Formula = "=SUMIFS(N:N,A:A,""*Team*"",A:A,""*Total*"")" 

Единственная сложная вещь в том, что любые кавычки (используемые в строковых литералах) должны быть удвоены.