• ベストアンサー

総和

エクセルで n Σ Rn*α^n を計算したいのですが、 i=0 総和関数ってエクセルの関数にありますか? もしVBAで作るとしたらどのようにしたら良いですか?

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

  • ベストアンサー
  • matsu_jun
  • ベストアンサー率55% (146/265)
回答No.2

あるかもしれませんが、使ったことはないです。で、作ってみましょう。 Rnがどういう規則性か分からないので、iの初期値(kamoshika333さんの例では0)とMAX値(同じくn)とαの三つを入力すれば答えの出てくる関数SIGMA(StartVal,EndVal,ALPHA)を作成します。VBAの標準モジュールに、以下を貼り付けてください。 Function SIGMA(StartVal As Integer, EndVal As Integer, ALPHA As Double) SIGMA = 0 For i# = StartVal To EndVal SIGMA = SIGMA + ALPHA ^ i Next i End Function さて、シートに戻って、任意のセルに =SIGMA(0,10,2)と入力してみてください。2047が出てきましたね。当然セル参照もできますよ。 =SIGMA(A1,A2,A3)と入力して、A1、A2、A3に任意の数を入れて試してみてください。 Rnも数式で表すことができるのなら、上の SIGMA = SIGMA + ALPHA ^ i の部分に追記してください。 成功しましたか?で、ここからが重要です。せっかく作ったこの数式をどのブックでも利用できるようにしましょう。 出来上がったファイルを保存します。その際、ファイルの種類を「Microsoft Excelアドイン (*.xla)」にします。ファイル名はなんでも結構です(後で分かりやすい名前にしておいた方がいいですが)。保存先が「AddIns」になっていたら変えないでください。 さて、Excelの「ツール(T)-アドイン(I)」でアドインダイアログを開き、参照ボタンをクリックしてください。先ほど保存したファイルが登場するはずです。これを選択すると、任意のブックで自作したSIGMA関数が利用できます。

kamoshika333
質問者

お礼

恐れ入りました(__) 望んでいた以上のことを教えて頂き感謝感激です。モジュールの内容は小生にはさっぱり分かりませんが、結果はバッチリです! ありがとうございます。 EXCELは奥が深いですねぇ。

その他の回答 (3)

  • macchan1
  • ベストアンサー率38% (52/136)
回答No.4

エクセルで総和関数にあたるのがSUMPRODUCT関数です。 例えばΣ関数でnが10、Rnが1、アルファが2なら以下の式になります。 =SUMPRODUCT(2^{0,1,2,3,4,5,6,7,8,9,10}) この0から10までの部分の配列を数式を利用して記載すると以下のような式になります(項目数だけセル範囲を選択します)。 =SUMPRODUCT(2^(ROW(B1:B11)-1))

kamoshika333
質問者

お礼

ありがとうございます。 新たに知った関数です。使い方がいまいちよく判りませんが、少し勉強いたします。

  • matsu_jun
  • ベストアンサー率55% (146/265)
回答No.3

#2のmatsu_junです。 おせっかいにも、解説いたしましょうとも!! Function SIGMA(StartVal As Integer, EndVal As Integer, ALPHA As Double) SIGMAという関数を定義するよと宣言しています。 SIGMAには、3つの数をカンマで区切って入力してくださいねと書いてあります。 3つの数にはその後の処理の都合上、StartVal、EndVal、ALPHAと名前をつけました。 StartVal(iの初期値)、EndVal(iのMAX値)は整数(Integer)ですよ。ALPHAは整数とは限りませんよ(Double) と解説しています SIGMA = 0 あらかじめなにも計算していない状況では、SIGMAは0ですよ。当然ですよ。 For i# = StartVal To EndVal 2行下の「Next i」との間で挟まれた部分を繰り返し行いなさいという命令です。何回繰り返すのかというのが、i# = StartVal To EndVal という部分で分かります。例えばStartVal=0、EndVal=5であれば6回繰り返すということです。その際重要なのが、下の計算式のiには、繰り返した回数によって入力する値が変わるということです。一回目の計算ではi=0、二回目の計算ではi=1、以降i=2、i=3、i=4、i=5と入れていくのです。 SIGMA = SIGMA + ALPHA ^ i 一回目の処理について考えてみましょう。上で書いたとおり、今のところSIGMAは0です。これにALPHAのi乗、今はiはStartVal(上の行で説明した例であれば0)なので、ALPHAの0乗すなわち1を足したものを新しいSIGMAの値にするぞということです。つまりこの命令を処理することで、SIGMAの値は0から1に変化しました。 二回目はどうなるか。一回目の計算によって、SIGMA=1となっています。この時のiは上で説明したとおり1ですね。よって、元のSIGMA(=1)に、ALPHAの1乗すなわちALPHAを加えた値 1+ALPHA が新しいSIGMAになるということです。これを6回繰り返せば以下の結果になることは想像つきますでしょうか? SIGMA = 1 + ALPHA^1 + ALPHA^2 + ALPHA^3 + ALPHA^4 + ALPHA^5 Next i ここまでが繰り返し処理をする部分だよと言っています。日本語に訳してみると、「次のi」つまりiを1加算して上の計算をしようね。と、実はここで書かれています。 End Function これで処理は終わりです。と書いてあります。 面白いですよ。マクロって。私もまだまだマクロは勉強しなければと思っています。強者はExcelでパックマンなど昔のゲームセンターのゲームを再現しているくらいですから。

参考URL:
http://www.geocities.jp/nchikada/pac/
kamoshika333
質問者

お礼

わざわざどうもありがとうございました。 EXCELで関数をユーザー登録できるなんて、とっても便利ですね。とても良いことを教わりました。 これからもどんどん活用していきたいと思います。

  • lovelace
  • ベストアンサー率27% (22/81)
回答No.1

kamoshika333さん、こんばんは。 >総和関数ってエクセルの関数にありますか? 総和関数って、SUMのことですね? ありますよ。 まず、関数を入力するセルを選択してから、“挿入”メニューの“関数”をクリックするか、標準アイコン群の中の関数アイコンをクリックすしてください。 http://64.233.167.104/search?q=cache:7g--DCQFg5EJ:mailsrv.nara-edu.ac.jp/~asait/windows/excel/excel.htm+Excel+%E7%B7%8F%E5%92%8C%E9%96%A2%E6%95%B0&hl=ja&lr=lang_ja

kamoshika333
質問者

お礼

ありがとうございます。 SUMは分かります。SUMの引数に変数を持った場合の総和の方法が知りたいです。

関連するQ&A