• ベストアンサー

VSUMのユーザー定義関数にてMAXとMINを追加するには?

VSUMのユーザー定義関数にてMAXとMINを追加するには? http://okwave.jp/qa/q1578916.html 上記の質問ページに記載されているユーザー定義関数にMAXとMINの 集計を追加をしたいのですが、どのように記述すれば良いのでしょうか? エクセルのVBAを勉強し始めたのですが、利用したいのが今月末の提出物なので、 記述が出来ずに非常に困ってます。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.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

kuro_si81nu
質問者

お礼

ご返信ありがとうございます。早速利用させていただきました。 時間がある時にでも、自分なりに頑張って解読と理解をしてみようと思います。 ありがとうございました。

関連するQ&A

専門家に質問してみよう