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

このQ&Aのポイント
  • EXCEL2000VBAで複素数関数や三角関数等を用いて加速度波形処理の勉強をしています。VBAアドインの複素数関数を用いた場合の計算時間の長さを短縮する方法として、ユーザー定義で複素数関数計算を作成するかモジュールに直接書き込む方法があります。
  • ユーザー定義で複素数関数計算を作成する場合は、自作のVBAに関数を作成し、その関数内で複素数の計算を行います。複素数の演算子として、実部と虚部を分けて計算する方法が一般的です。
  • モジュールに直接書き込む場合は、関数の書き方と同様に複素数の計算を行いますが、関数内でのみ使用できるため、再利用性は低くなります。どちらの方法を選ぶかは、処理速度と再利用性のバランスを考慮して決定する必要があります。
回答を見る
  • ベストアンサー

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

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

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

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

#1です >作成したものを自作VBAで利用する方法と う~ん、意味が分かりかねます。VBAのベテランから聞かれる事では無いので、何か誤解されていると思います。参考URLをお試し下さい。 >質問での(2)の方法 アドインの関数は元々ワークシート関数として作られているのを、ワークシートを介さず、直接VBAのプログラム中で使用するという意味かもしれませんが、元の質問の回答者ではありませんので、実際のところは分かりません。「セル」は非常に複雑なオブジェクトらしく、アクセスするのに時間がかかります。下記リンクもご覧下さい。 http://www.geocities.jp/tomtomf/denki/AC4/ac4.htm

tigone13
質問者

お礼

mitarashi様 度々のご教示ありがとうございました。 お教えいただいたURLで勉強させていただきます。

その他の回答 (1)

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

数学は複素数あたりから落ちこぼれている自分ですが、臆面もなく回答させていただきます。 構造体で複素数を定義してやって、これを引数に、演算する関数を自作するということだと思います。 こちらに参考になるコードがありそうです。 http://sci.tea-nifty.com/blog/2009/04/excel-vbafft-5e.html 他にも、「vb 複素数」で検索すると色々とhitします。

tigone13
質問者

補足

mitarashi様 早々のご教示ありがとうございました。 私はVBAの経験は長いのですが 実務に必要な最低限の事だけを自己流で勉強しただけで 基本的な事はほとんど習得できていません。 質問での(1)の複素数関数計算の作成につきましては お教えいただきましたURLで勉強しようと思いますが 作成したものを自作VBAで利用する方法と 質問での(2)の方法をお教えいただけませんでしょうか。 お手数をおかけしますが宜しくお願いします。

関連するQ&A

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

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

  • VBAで書いたExcelユーザー定義関数が上手く動きません

    WinXPSP2 Office2003 を使用しています。 プログラムは、本やネットで調べただけの素人です。 具体的には、大量のascファイルにファイル自身の情報をヘッダとして書き込む作業をします。 そのために、ファイルの情報などを返すユーザー定義関数を作り、それを用いた一連の書き込み作業をマクロにして保存し、アドイン化してしまおうと考えました。 作業をマクロにしてアドイン化することはできるようになりましたが、肝心のユーザー定義関数を作るVBAが良くわかりません。 たとえば以下のように、ファイルの作成日時を返すユーザー定義関数を書いて標準モジュールに張ってみたのですが、上手く動きませんでした(具体的には”#VALUE!”になる)。 Function CreationDate() CreationDate = ActiveWorkbook.BuiltinDocumentProperties("Creation Date").Value End Function 次の、ファイルの名前を返すユーザー定義関数は上手く動きました。 Function FileName() As String FileName = Application.ActiveWorkbook.Name End Function なぜ後者が動いて前者が動かないのか、よく理解できません。 どのように変えればよいのか、教えていただけないでしょうか? よろしくお願いします。

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

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

  • 三角関数と複素数について

    三角関数 sin(Θ),cos(Θ) ですが、そのΘに複素数とすることは可能でしょうか。定義されているでしょうか。また高校数学でおなじみのsin(A+B), cos(A+B)についてsin(A+iB), cos(A+iB)などの展開も可能なのでしょうか。 三角関数は直角三角形の斜辺に対する底面等の長さの比と定義されてきたので実数のみのように思いますが、級数展開して多項式にすると、複素数を代入することは可能のようにも見えます。三角関数の定義と複素数の関係はどうなっているのでしょうか。よろしくお願いします。

  • VBAでの複素数関数

    複素数の関数を使い計算処理を行っているのですが、VBAの複素数関数処理がかなり遅い(計算処理を行う個所が非常に多く、何度もループし、VBA関数を呼び出しています。)ので、スピードを上げる方法をどなたかご存知であれば、教えていただきたいのです。 よろしくお願い致します。

  • 自分で定義した関数をすぐに使いたい

    自分で定義した関数を最初から実装されているabs()やsqrt()のように何もせず(呼び出さずに)使用することはできないのでしょうか。 現在,"C://Perl/function/~.pl"といったようにfunctionという名前のフォルダに自分で作成した関数を保存しています。そしてその関数を使うときには, require("C://Perl/function/var.pl") &パッケージ名::サブルーチン名(引数); などとして使用していますが,呼び出す関数が1つ2つなら良いですが統計学に関する関数がないためほとんど自分で定義したものをつかっています。そうすると使用したい関数が多くなるほど,呼び出す手間が多くなってしまうのですが何か良い手段はないものでしょうか(モジュールを作成してもそれほど手間が省けるようにも思えないのですが、、、)。

    • ベストアンサー
    • Perl
  • ユーザー定義関数が入力されたセルを調べたい

    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でユーザー定義関数作りにチャレンジしてます。

    DATEDIF関数をなんとかユーザー定義関数に組み込んでみようと思い、VBAをはじめてみました。 標準モジュールでFunctionを使って書くところまでは何とかたどり着いたのですが、 DATEDIF自体の計算についてどうやって場合わけしていったらいいのか悩み始めてしまいました。 DATEDIF(開始日,終了日,単位)とした場合、 単位="D"もしくは"d"ならば、(開始日-終了日)/ 1 と、適当ではありながらも考えてみました。 そこからが問題で、月数、年数を数えるときに日付の違う月数をどうやって数えるのか、とか、うるう年の計算をどうしたらよいのかとか。。。 単にシリアル値を取り出して割るだけじゃだめですよね? 検索でユーザー定義関数についても、DATEDIF関数自体に関してもしてみたのですが、どうしても理解に苦しんでいます。 直接の答えでなくてもいいので、関連サイトや関連書籍でいいものがあったら教えてください。 本当は本は人に言われて買うものではないと思っているのですが、自分の踏み込んだことのない分野なのでちょっと手のつけようがなくて困っています。。。 どうかお願いします。

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

    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に常駐させたい

    VBAの標準モジュールで作成したユーザー定義関数を、*.bas形式でエクスポートしています。 エクセルを立ち上げるたびに、インポートしなければならず、非常に手間です。 また、*.basファイルを職場の仲間にも広めたいと思っているのですが、毎度インポートすることになると、面倒になります。 そこで、誰のEXCEL本体にも常駐させ、SUM関数のようにいつでも使用できる状態にするにはどうすればいいでしょうか?

専門家に質問してみよう