2014-09-28 4 views
0

Я очень новичок в Excel VBA. Я хочу создать пользовательскую функцию = Unique (J2: J234), чтобы он маскировал реальный набор функций, выполняющих задание i.e = SUM (1/COUNTIF (J2: J234, J2: J234)). Это мой код ниже:Создать пользовательскую функцию для подсчета уникальных значений в столбце

Function Unique(Var As range) 
    Unique = Application.SUM(1/(Application.COUNTIF(Var, Var))) 
End Function 

Благодаря

+0

Я пробовал различные модификации без каких-либо результатов, что Я получаю #VALUE !. Будьте рад, если кто-нибудь может помочь. – user1841445

+0

Используйте 'Application.power (..., -1)' вместо 1/... Также вы можете использовать 'with application', чтобы избежать повторения. –

+0

Вы получили какие-либо улучшения или решения, используя любое предложение до сих пор? – ZAT

ответ

0

Ваш UDF не будет работать, так как исходная формула является формула массива (вводится с Ctrl-Shift-Enter, и нет простого способа ввода, который в ОДС

Я хотел бы предложить использовать функцию объекта сбора, который предотвращает входящие элементы с повторяющимися ключами:

Option Explicit 
Function Unique(Var As Range) 
    Dim V As Variant 
    Dim C As Collection 
    Dim I As Long 
V = Var 
Set C = New Collection 

On Error Resume Next 
For I = 1 To UBound(V, 1) 
    C.Add V(I, 1), CStr(V(I, 1)) 
Next I 
On Error GoTo 0 

Unique = C.Count 

End Function