У меня есть электронная таблица сотрудников. Столбец A — это список типов отделов (продажи, кадры, зарплата и т. д.). Столбец B — это дата завершения их оценки или пустой, если она не завершена. Мне нужна функция, которая проверяет столбец Dept на наличие определенного типа отдела (например, «Продажи»), и если он равен «Продажи», то проверяет соответствующие строки столбца Appraisal и подсчитывает количество дат. Затем я бы повторил это для всех других типов отделов. Так, для примера «Продажи», если есть четыре сотрудника и двое имеют дату оценки, результатом будет «2». Обратите внимание, что я не хочу, чтобы она подсчитывала даты в столбце B, относящиеся к другим типам отделов.
Столбец А - Отдел . . . . - HR - Продажи - HR - Зарплата - Продажи - Продажи - Продажи .
Столбец Б - Оценка- 1/07/2015 - 8/07/2015 - 6/07/2015 - "Пусто" - "Пусто" - 3/07/2015 - "Пусто" -
решение1
Откройте редактор 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
Нажмите кнопку Save на панели инструментов, затем закройте редактор VBA, чтобы вернуться в электронную таблицу. Теперь вы можете использовать функцию DEPTAPPCOUNT
так же, как встроенные функции Excel. Если столбец вашего отдела занимает от A2 до A7 (и даты оценки находятся в B2-B7 — подсчитываемый столбец должен быть непосредственно справа от столбца отдела, чтобы эта функция работала), введите , =DEPTAPPCOUNT("Sales", A2:A7, B2:B7)
чтобы получить количество записей о продажах с непустыми датами оценки. Отрегулируйте первый параметр (текст Sales
) по желанию, чтобы подсчитать в других отделах.
Если вы используете Excel 2007 или более позднюю версию, вам необходимо сохранить рабочий лист в XLSM
формате (с поддержкой макросов).
Для тех, кто задается вопросом, почему CountRange
необходимо передавать пользовательской функции, даже если она не используется, это необходимо, чтобы Excel пересчитал счетчик, если столбец даты изменился. Другими словами, передача дополнительного диапазона в функцию создает зависимость в вычислениях Excel.