Вот очень простой пример. Мы хотим посчитать количество значений в столбце B, которые превышают 10 . Мы помещаем критерии в ячейку C1 и в C2 введите:
=COUNTIF(B:B,C1)
Теперь мы знаем, что есть 11 пунктов, которые способствуют подсчету. Теперь мы хотим их найти.
Введите следующую пользовательскую функцию в стандартном модуле:
Public Function CountIfFinder(rng As Range, crit As String) As String Dim r As Range, DQ As String DQ = Chr(34) crit = DQ & crit & DQ CountIfFinder = "" Set rng = Intersect(rng, rng.Parent.UsedRange) For Each r In rng s = "=countif(" & r.Address & "," & crit & ")" If Evaluate(s) = 1 Then CountIfFinder = CountIfFinder & "," & r.Address(0, 0) Next r CountIfFinder = Mid(CountIfFinder, 2) End Function
Выберите ячейку (скажем, D1 ) и введите:
=CountIfFinder(B:B,C1)
Пользовательские функции (UDF) очень просты в установке и использовании:
- ALT-F11 открывает окно VBE
- ALT-I ALT-M открывает новый модуль
- вставьте материал и закройте окно VBE
Если вы сохраните книгу, UDF будет сохранен вместе с ней. Если вы используете версию Excel более поздней, чем в 2003 году, вы должны сохранить файл как .xlsm, а не .xlsx
Чтобы удалить UDF:
- откройте окно VBE, как указано выше
- очистить код
- закройте окно VBE
Чтобы использовать UDF из Excel:
= MyFunction (А1)
Чтобы узнать больше о макросах в целом, смотрите:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
а также
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
а подробности о UDF смотрите в:
http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx
Макросы должны быть включены, чтобы это работало!