2016-06-28 11 views
0
このような構造化参照して働くことができるアプリケーションをVisual Basicで UDFを記述する方法

カスタム機能、

=UDF([Colomn1]) 

またはこの:

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

どれでもアイデア?

@Roryこの関数は範囲で動作しますが、列を参照すると機能しません。結果の値が繰り返されます。

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

あなたは ''(列1)lenを言うとき、それはどういう意味?行がカウントまたはelse.Youが、それはですのでFunction' – Neelesh

+0

構造化参照は、単に、範囲を返す '使用して必要な機能を定義することができるもの他のUDFと同じです。 – Rory

+0

これは編集を使用して元の質問にする必要があります。コメントにない –

答えて

1

あなたの構文が間違って表示されます。 [Colomn1][@ Colomn1]である必要があります(正しく入力されている可能性があります)。 ListObject(別名構造化された)テーブル参照:

colomn1

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

は、(A例えばA1またはA)真のワークシート範囲の参照を連想フル列参照を使用する機能を混同しない
ください。

colomn2

+0

Synaxは間違っていません。組み込み関数は[Colomn1]でうまく機能します。 [@ Colomn1]は[Colomn1]の方が遅い。最初の1つのExcelループの値がsecontであるため、パラメータとして渡された範囲 –

+0

addendum addedを参照。 – Jeeped