- ベストアンサー
EXCELユーザー定義関数KANSUの作成法
- EXCELのユーザー定義関数KANSUについて、引数の指定方法について説明します。
- EXCELのユーザー定義関数KANSUは、任意の複数セルのデータをチェックする関数です。
- KANSU関数を利用する際には、引数に範囲データを指定する必要があります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
Rangeオブジェクトを使って解決します。 RangeオブジェクトのCellsコレクションには、指定した領域に含まれるセルが詰まっていますので、その内容をFor Each ~ Nextを使って取得してやればいいです。 サンプル作ってみました。 指定したセルの合計を求めます。 = vbSum(A1:B200) ってな感じで使ってみてください。 Public Function vbSum(rngData As Range) As Variant Dim RNG As Range Dim vntKotae As Variant For Each RNG In rngData.Cells vntKotae = vntKotae + Val(RNG.Value) Next RNG vbSum = vntKotae End Function 蛇足ですが、上記の方法は、例えば =vbSum(A:A) のように指定した場合は、馬鹿正直にA1:A65536 の範囲を調べてくれます。 このような無駄極まりない処置を減らすために、下記のような処置を行ったりします。 Public Function vbSum(rngData As Range) As Variant Dim RNG As Range Dim vntKotae As Variant Dim lngMaxRow As Long '領域の最下行を調べる lngMaxRow = rngData.Worksheet.UsedRange.Rows(0).Row _ + rngData.Worksheet.UsedRange.Rows.Count For Each RNG In rngData.Cells '領域の最下行に達した場合、抜ける If RNG.Row > lngMaxRow Then Exit For End If '合計を計算 vntKotae = vntKotae + Val(RNG.Value) Next RNG vbSum = vntKotae End Function 不明点とかあれば、補足にてご質問ください。GW中であれば、同日中に回答可能だと思います。
お礼
早速の回答ありがとうございました。何分全くの素人で、Rangeを使うのかなと、色々本やHPを物色し試行錯誤し、教えてよGooに頼ることになりました。 よく考えながら、関数に組み込んでいこうと思います。また、つまずいたら援護を お願いするかも知れませんが、この連休中には、1仕事完成するかなと一安心しています。ありがとうございました。