- ベストアンサー
ユーザー定義関数の作成
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を教えてください。
- ichiro3
- お礼率42% (6/14)
- Visual Basic
- 回答数1
- ありがとう数2
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
Public Function 伸び率r(P0 As Double, Pt As Double, t As Integer) As Double 伸び率r = (Pt / P0) ^ (1 / t) - 1 End Function Public Function 逆数和(n As Integer) As Double Dim i Dim sum As Double sum = 0# For i = 1 To n sum = sum + 1 / i Next 逆数和 = sum End Function
関連するQ&A
- AccessVBAでユーザー定義関数使用
エクセルVBAで、以下のユーザー定義関数(選択したセルaを全て3乗した和を求める)を使用していますが、アクセスVBAで同様の関数を使用するにはどうしたらよいでしょうか? ★アクセスVBVで実行したいプログラム 実行すると"データテーブル"の"Aフィールド"を全て3乗した和をmsgboxで表示 ★エクセルで使用していたユーザー定義関数 ’-------------------------------------- Function y(a As Range) As Variant Dim r As Range Dim result As Variant For Each r In a result = result + r.Value ^ 3 Next y = result End Function ’-------------------------------------- ぞうぞよろしくお願い致します。
- ベストアンサー
- Visual Basic
- VBAの中でユーザー定義関数を使うときに
VBAの中でユーザー定義関数を引数に変数を持たせて使いたいのですが、変数をうまく認識してくれません。 VBAの中でユーザー定義関数を使うにはどうしたらいいのでしょうか? よろしくお願いします。
- ベストアンサー
- Visual Basic
- ユーザー定義関数が入力されたセルを調べたい
Excel でユーザー定義関数を作成し、アドインにして仕事で使っています。 これらの関数を使用したブックを外部に配布する時にユーザー定義関数を値に変換してから配布したいのですが、ユーザー定義関数とワークシート関数の区別の方法が判りません(外部にアドインは配布しません)。 Dim r As Range Dim f As String For Each r In Activesheet.UsedRange If r.HasFormula Then f = r.Formula Do ' f がユーザー定義関数の一覧の中に見つかれば、セル r の色を変えてループ脱出 Loop End If Next という方法を試みましたが、UsedRange の大きさやユーザー定義関数の数が多いことも影響して結構な時間が掛かってしまいます。 ユーザー定義関数とワークシート関数を区別する方法があれば、Do~Loop を回さなくて済むので、時間短縮できるのではないかと考えています。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- 複素数関数のユーザー定義方法等をお教えください
カテゴリーにVBAがありませんでしたので VBに投稿させていただきます。 EXCEL2000VBAで複素数関数や三角関数等を用いて 加速度波形処理の勉強をしています。 過去のQ&Aで VBAアドインの複素数関数を用いた場合の 計算時間の長さを短縮する方法としまして (1)ユーザー定義で複素数関数計算を作成する。 (2)モジュールに直接書込む。 との記述がありました。(質問番号:81639) 上記(1)(2)につきまして詳しくお教えください。 自作のVBAにどのようにして上記(1)(2)を 作成又は書込みすれば良いのかがわかりません。 複素数関数計算のFUNCTION?等も お教えいただけましたら幸いです。 宜しくお願いします。
- ベストアンサー
- Visual Basic
- Excel2003 ユーザー定義関数
お世話になります。 ユーザー定義関数について教えて下さい。バージョンはExcel2003です。 B268セルの数式をコピーしてB259~B281までその数式を貼り付けるような使い方をしたいのですが、ユーザー関数は関数の中身を変更しても再計算しないとのことで再計算されません。 セルひとつひとつに貼り付けを行っていくと再計算されましたが、さらに広範囲に一気にユーザー関数を使用した数式を貼り付ける使い方で、再計算させる方法はありますでしょうか。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- 書式ごとコピーするユーザー定義関数をつくりたい
VBA初心者です。 ExcelにてVBAを使用し、書式ごとコピーができるユーザー定義関数の作成を考えております。 理想としては例えば、A1に =GetTxt(INDIRECT("G"&B1)) と入力すれば、B1の値に応じてG列の任意の行のセルを引数として指定でき、 指定先のセルを書式ごとA1にコピーできるGetTxt()関数を定義したいのですが、 具体的にどのようにFunctionプロージャを記述すればいいでしょうか? (コピー元のセルをB1に入力する値に応じて随時自動で変えたいと考えております) 単純に値を返すだけのVBAコードならわかるのですが、 ワークシート上で関数として使用でき、かつ書式なども指定する方法がわかりません。 もしワークシート上での関数としての実行が困難であれば代替案でも構いませんので、 宜しければ何卒ご教示お願い申し上げます。
- ベストアンサー
- Excel(エクセル)
- エクセルのユーザー定義関数で(VBA)
エクセルのVBAで、セルに「=SheetName」と書き込めば、その関数を書き込んだセルが属するシート名をセルに代入さるようなユーザー定義関数を作りたいと考えています。 で、標準モジュールに Public Function SheetName(test) SheetName = ????? End Function と、書き込んでふと止まりました。 ユーザー定義関数を書き込んだシートの名前ってどうやって取得すればいいのでしょうか?VBでいうSenderみたいなのってあるんでしょうか? どなたか?詳しい方教えて頂けないでしょうか? 宜しくお願いいたします。
- ベストアンサー
- オフィス系ソフト
お礼
ありがとうございました。 助かりました。