2016-06-28 7 views
0

Wie UDF in Visual Basic für Applikationen zu schreiben, die mit strukturierten Referenzen wie das funktionieren können:Benutzerdefinierte Funktion, die mit strukturierten Referenzen in Excel-Tabellen arbeitet

=UDF([Colomn1]) 

oder dies:

=UDF(if(len([Colomn1])>1,[Colomn1])) 

Beliebig Ideen?

@Rory, diese Funktion arbeitet mit Bereich, aber nicht mit Bezug auf Spalte arbeiten. Ergebniswerte werden wiederholt.

Function udff(sRange As Range) As Variant 
    Dim valueArr As Variant 
    valueArr = sRange.Value 
    ReDim resArr(LBound(valueArr, 1) To UBound(valueArr, 1), LBound(valueArr, 2) To UBound(valueArr, 2)) 
    For i = LBound(valueArr, 1) To UBound(valueArr, 1) 
     For j = LBound(valueArr, 2) To UBound(valueArr, 2) 
      resArr(i, j) = valueArr(i, j) & "!" 
     Next j 
    Next i 
    udff = resArr 
End Function 
+0

Wenn Sie 'sagen len (Column1)', was bedeutet das? Zeilen zählen oder etwas else.You können Ihre benötigten Funktionen mit 'Function' – Neelesh

+0

Eine strukturierte Referenz gibt einfach einen Bereich definieren, es ist so das gleiche wie jedes andere UDF. – Rory

+0

Dies sollte in der ursprünglichen Frage mit Bearbeiten sein. Nicht in den Kommentaren –

Antwort

1

Ihre Syntax erscheint falsch. [Colomn1] sollte [@ Colomn1] (und möglicherweise richtig buchstabiert) sein.

Function udf(rng As Range) 
    udf = rng * 2 
End Function 

colomn1

Sie die Möglichkeit, nicht verwechseln assoziative Vollspaltenreferenzen mit echten Arbeitsblatt-Bereich Referenzen zu verwenden (zum Beispiel A1 oder A: A) mit ListObject (aka strukturiert) Tabellenverweisen.

colomn2

+0

Synax ist nicht falsch. Eingebaute Funktionen funktionieren gut mit [Colomn1]. [@ Colomn1] ist langsamer als [Colomn1], weil in Excel Excel Schleifen Werte, in secont Bereich als Parameter übergeben –

+0

Siehe Addendum hinzugefügt. – Jeeped