2011-12-29 20 views
2

どのようにしてセルの範囲を関数に渡すと、項目を別々に処理できるようになりますか?したがって、どのようにして関数の範囲にセルを渡すのですか?Excelで範囲を関数に渡す

私はので、私は、私は、リスト内の項目数を取得することができますかわからない。このことから

Function processNumbers(Var as Range) 

従って使用する方法を持つことができ、それをやろうとしていると、アレイを横断しています内容を編集する。上記よりアイテムを持ち込む方がいいですか?

答えて

2

あなたの関数宣言が正しい方法です。

Function processNumbers(Var as Range) As Variant 
    NumberOfCells = Var.Cells.Count 
    NumberOfRows = Var.Rows.Count 
    NumberOfColumns = Var.Columns.Count 
    RangeAddress = Var.Address 

    ' Iterate the range (slow) 
    For Each Cl in Var.Cells 
     ' ... 
    Next 

    ' Get Values from range as an array 
    Dim Dat as variant 
    Dat = var 

    ' Iterate array 
    For rw = LBound(Dat,1) to UBound(Dat,1) 
     For col = LBound(Dat,2) to UBound(Dat,2) 
      ' reference Dat(rw,col) 
     Next col 
    Nest rw 

    ' Put (modified) values back into range. Note: won't work in a UDF 
    Val = Dat 
End Function 
+0

ありがとうございます。ありがとうございます。「UDFでうまくいかない」とはどういう意味ですか? Val = Datの代わりにprocessNumbers = Datを実行すると、完全に修正されたリストの代わりに1つのセルのみが返されます。私。私はa1:e1を渡してA3に数式を入力しますが、A3:E3では値を返さないが、A3では戻します。 – Michaelb88

+0

関数がセルの式から呼び出されたとき、その関数はユーザー定義関数またはUDFと呼ばれます。このように呼び出されると、シート内のセルを変更することはできません。値を返すだけです。 –

+0

'A3:E3'のような範囲に値を返すには、関数を配列式として入力します:' A3:E3'の範囲を選択し、関数をタイプし、EnterだけでなくCtrl-Shift-Enterを押します。数式バーに表示される式は '{= processNumbers(...)}'のようになります。 –

関連する問題