Откройте редактор VBA, затем выберите «Модуль» в меню «Вставка». Вставьте следующее в результирующее текстовое поле:
Function DEPTAPPCOUNT(Dept As String, Range As Range, CountRange As Range) As Integer Dim count As Integer For Each rCell In Range If rCell.Text = Dept Then If rCell.Offset(0, 1).Text <> "" Then count = count + 1 End If Next DEPTAPPCOUNT = count End Function
Нажмите кнопку «Сохранить» на панели инструментов, затем закройте редактор VBA, чтобы вернуться к вашей электронной таблице. Теперь вы можете использовать эту DEPTAPPCOUNT
функцию так же, как встроенные функции Excel. Если столбец вашего отдела охватывает от А2 до А7 (а даты оценки - от В2 до В7 - подсчитанный столбец должен находиться справа от столбца отдела, чтобы эта функция работала), введите, =DEPTAPPCOUNT("Sales", A2:A7, B2:B7)
чтобы получить количество записей о продажах с не Сроки оценки. Настройте первый параметр ( Sales
текст) по желанию для подсчета в других отделах.
Если вы используете Excel 2007 или новее, вам нужно сохранить лист в XLSM
формате (с поддержкой макросов).
Для тех, кто интересуется, почему CountRange
необходимо передать пользовательскую функцию, даже если она не используется, необходимо, чтобы Excel пересчитал количество, если столбец даты изменился. Другими словами, передача дополнительного диапазона функции создает зависимость в вычислениях Excel.