- ベストアンサー
VSUMのユーザー定義関数にてMAXとMINを追加するには?
VSUMのユーザー定義関数にてMAXとMINを追加するには? http://okwave.jp/qa/q1578916.html 上記の質問ページに記載されているユーザー定義関数にMAXとMINの 集計を追加をしたいのですが、どのように記述すれば良いのでしょうか? エクセルのVBAを勉強し始めたのですが、利用したいのが今月末の提出物なので、 記述が出来ずに非常に困ってます。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
VSUM の作者です。約5年前で、少し、書き方は変わりましたが、他も直そうとしましたが、ほとんど変わっていません。 使用法は、 'VSUM(集計方法,範囲,ゼロオプション) で、集計方法は、 1 は AVERAGE 2 は COUNT 3 は COUNTa *4 MAX *5 MIN 9 は SUM 4,5 は、Zオプションを入れた場合(Trueまたは 1以上) で、すべて0の場合は、エラーを出します。 =VSUM(5,A1:A20,1) 変更部分だけを入れました。現在、サイトの変更で縮小し、コードが全部入りません。 注意:Function の戻り値は、Variant 型に変わりました。ただし現在の私は、Sumという変数を使いません。 '------------------------------------------- Function VSUM(集計方法 As Integer, 範囲 As Range, Optional ゼロオプション As Boolean) As Variant 'VSUM(集計方法,範囲,ゼロオプション) '非表示になっている行は集計しない Dim c As Variant Dim i As Long Dim dV As Double Dim Sum As Double Dim Z As Boolean Dim flg As Boolean 'ゼロオプションの時に、すべて0の場合にエラー If ゼロオプション = True Then Z = True '' Select Case 集計方法 '省略 'Next 'VSUM = i '------------------------------------------- Case 4 'MAX dV = -10 ^ 15 For Each c In 範囲 If c.EntireRow.Hidden = False Then If Z = True And VarType(c.Value) = vbDouble Then If c.Value > dV And c.Value <> 0 Then dV = c.Value flg = True End If Else If c.Value > dV And VarType(c.Value) = vbDouble Then dV = c.Value End If End If End If Next If flg Or Z = False Then VSUM = dV Else VSUM = CVErr(xlErrNull) End If Case 5 'MIN dV = 10 ^ 15 For Each c In 範囲 If c.EntireRow.Hidden = False Then If Z = True And VarType(c.Value) = vbDouble Then If dV > c.Value And c.Value <> 0 Then dV = c.Value flg = True End If Else If dV > c.Value And VarType(c.Value) = vbDouble Then dV = c.Value End If End If End If Next If flg Or Z = False Then VSUM = dV Else VSUM = CVErr(xlErrNull) End If '------------------------------------------- ''Case 9 '合計 ' 省略 VSUM = dSum End Select End Function
お礼
ご返信ありがとうございます。早速利用させていただきました。 時間がある時にでも、自分なりに頑張って解読と理解をしてみようと思います。 ありがとうございました。