• ベストアンサー

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

  • MAX,MIN関数で空白の値を返したいのですが?

    MAX,MIN関数で空白の値を返したいのですが、中々上手く行きません。 何方か、ご教授頂けないでしょうか、宜しくお願い致します。 ※本題 MAX,MIN関数などの場合、真の0値が返されるので0が表示されると思います。 A1:AV10が未入力の場合:=MAX(A1:AV10) =0 又、AVERAGE関数の場合は、対象となるセルが未入力の場合(#DIV/0!)エラー表示されるので、下記載の様に空白の値を返す事が出来ます。 「=IF(ISERROR(AVERAGE(AN3:AV3))=TRUE,"",AVERAGE(AN3:AV3))」 そこで質問なのですが! MAX,MIN関数で値が入力されて無いとエラーを返す方法は有りますか? AVERAGEと同様に空白の値を返したいと思ってます。 ただ、差分で0が返ってくる場合が有り、オプションでゼロ値の非表示等は使えません。

  • ユーザー定義関数 アドイン

    ユーザー定義関数をアドインにどうやって保存するのでしょか? また、ユーザー定義関数以外のVBAをアドインに保存できますか?

  • 複素数関数のユーザー定義方法等をお教えください

    カテゴリーにVBAがありませんでしたので VBに投稿させていただきます。 EXCEL2000VBAで複素数関数や三角関数等を用いて 加速度波形処理の勉強をしています。 過去のQ&Aで VBAアドインの複素数関数を用いた場合の 計算時間の長さを短縮する方法としまして (1)ユーザー定義で複素数関数計算を作成する。 (2)モジュールに直接書込む。 との記述がありました。(質問番号:81639) 上記(1)(2)につきまして詳しくお教えください。 自作のVBAにどのようにして上記(1)(2)を 作成又は書込みすれば良いのかがわかりません。 複素数関数計算のFUNCTION?等も お教えいただけましたら幸いです。 宜しくお願いします。

  • VBAの中でユーザー定義関数を使うときに

    VBAの中でユーザー定義関数を引数に変数を持たせて使いたいのですが、変数をうまく認識してくれません。 VBAの中でユーザー定義関数を使うにはどうしたらいいのでしょうか? よろしくお願いします。

  • VBA ユーザ定義関数の使い方です

    VBA ユーザ定義関数の使い方です Sub test() cells(1,1)=UpperSutegana(cells(1,1)) End sub http://www.relief.jp/itnote/archives/002223.phpのソースをコピー としましたがうまくいきません。なぜでしょうか?

  • ユーザー定義関数を作りVBAで記述

    aaaと言う、ユーザー定義関数を作りVBAで記述して使う場合はどのように記述すればよいでしょうか。 通常のワークシート関数であれば、 Cells(1, 1) = Application.Sum(Range("G1:G100")) などとなりますが、 Cells(1, 1) = Application.aaa(Range("G1:G100")) とするとエラーになります。 初歩的な質問だとは思いますが、よろしくお願いします。

  • 自作関数とユーザー定義関数は同じ意味?

    エクセルやVBAの用語として出てくる 「自作関数」「ユーザー定義関数」は同じ意味ですか?

  • ユーザー定義関数の作成

    1) 基準年の値をP0,t年後の値をPtとした場合の年あたりの伸び率rは、               1/t      r = (Pt/P0)  - 1  で計算されます。 これを計算するユーザー定義関数のVBAを教えてください。 2) 1からnまでの逆数の和  1+1/2+1/3+・・・+1/n=Σ1/i を計算するユーザー定義関数のVBAを教えてください。

  • Excelでインターネットを利用して運賃計算するマクロをユーザー定義関数化できないでしょうか?

    先に http://oshiete1.goo.ne.jp/kotaeru.php3?q=1641060 で、Excel VBAでインターネットを利用して運賃計算する方法をお教えいただいたのですが、この処理をユーザー定義関数化することはできないでしょうか? 試行錯誤したのですがなかなかうまくいきません・・ ユーザー定義関数化するポイント、不可能であれば不可能である部分だけでもお教えいただけたら助かります。 どうぞよろしくお願いいたします。

  • エクセルのユーザー定義関数で(VBA)

    エクセルのVBAで、セルに「=SheetName」と書き込めば、その関数を書き込んだセルが属するシート名をセルに代入さるようなユーザー定義関数を作りたいと考えています。 で、標準モジュールに Public Function SheetName(test) SheetName = ????? End Function と、書き込んでふと止まりました。 ユーザー定義関数を書き込んだシートの名前ってどうやって取得すればいいのでしょうか?VBでいうSenderみたいなのってあるんでしょうか? どなたか?詳しい方教えて頂けないでしょうか? 宜しくお願いいたします。

このQ&Aのポイント
  • パソコンパーツを交換した後にネットワークアダプターが導入できず、インストールが進まない状況になりました。ドライバーのインストールや設定を試みましたがうまくいかず、解決策が分かりません。
  • 交換前と交換後のパーツリストを示しながら、ネットワークアダプターがないことが原因でネットワークに接続できないことが分かりました。しかし、ドライバーのインストールがうまく進まず、問題の解決には至っていません。
  • インストール画面での表示がOSとズレている、インストールウィザードが進まないなど、さまざまな問題が発生しています。また、起動は速いですがシャットダウンに時間がかかるという現象も確認されています。サポートに相談しましたが、具体的な解決策は分かりません。
回答を見る

専門家に質問してみよう