Имеется замечательная формула: =ЕСЛИ(СЧЁТЕСЛИ(B$1:B10;B10)=1;МАКС(A$1:A9)+1;"") взятая отсюда: https://www.planetaexcel.ru/techniques/14/103/ тренируюсь переделывать формулы в функции, в общем почти получилось. Не пойму как прибавить последнюю единицу.
Код
Function All_in_one(a, b, с)
' =ЕСЛИ(СЧЁТЕСЛИ(B$1:B10;B10)=1;МАКС(A$1:A9)+1;"")
' https://www.planetaexcel.ru/techniques/14/103/
Dim Максимум As Integer
Dim СчетЕсли As String
СчетЕсли = Application.WorksheetFunction.CountIf(a, b)
Максимум = Application.WorksheetFunction.Max(c)
If СчетЕсли = 1 Then
All_in_one = Максимум
ElseIf СчетЕсли <> 1 Then
All_in_one = ""
End If
End Function
Согласен, погорячился, в следующий раз буду внимательнее. Тему нужно было назвать так: Функция нумерации всех уникальных представителей списка, присваивающая каждому свой номер. Так что не хватает в моей функции, чтобы все уникальные представители списка были не нулями, а 1, 2, 3, 4 и т.д.?
dim284 написал: тренируюсь переделывать формулы в функции
а с какой целью не подскажете?
Код
Function All_in_one(a, b, c)
Dim m#, n#
n = Application.WorksheetFunction.CountIf(a, b)
If n = 1 Then
m = Application.WorksheetFunction.Max(c) + 1
All_in_one = m
Else
All_in_one = ""
End If
End Function
БМВ спасибо за подсказку, понял что ElseIf лишнее. Но прибавление единички в строку с Max все равно выдает только все единички, а не 1, 2, 3, 4 и т.д.? buchlotnik спасибо, нужно просто в формуле переменные обозначить As Double и функция БМВ заработала, как и Ваша.
Цитата
buchlotnik написал: а с какой целью не подскажете?
Формулы это какая-то головная боль, как их сохранять не понятно. У меня есть длинные формулы каторыми часто пользуюсь. Вспоминать каждый раз их код, как и набирать его, это долго, открывать вордовский файл с избранными формулами тоже не удобно. А если хотя бы несколько формул переделать в функции, то их можно вызывать из надстройки. На этом сайти я подсмотрел как аргументы макросом подписать можно - в общем красота. Благодаря этому сайту я подсел на экселевскую иглу С "с" и "с " увидел проблему, толи не доглядел, толи пунто-свичер переключил, в общем сенкью. Придумал как бороться - больше не использовать, в двух алфавитах много разных непохожих букв.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄