プロが教えるわが家の防犯対策術!

エクセルで

n
Σ Rn*α^n を計算したいのですが、
i=0

総和関数ってエクセルの関数にありますか?

もしVBAで作るとしたらどのようにしたら良いですか?

A 回答 (4件)

あるかもしれませんが、使ったことはないです。

で、作ってみましょう。
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関数が利用できます。
    • good
    • 0
この回答へのお礼

恐れ入りました(__)

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

EXCELは奥が深いですねぇ。

お礼日時:2005/02/19 01:19

エクセルで総和関数にあたるのが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))
    • good
    • 0
この回答へのお礼

ありがとうございます。

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

お礼日時:2005/02/22 10:06

#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/
    • good
    • 0
この回答へのお礼

わざわざどうもありがとうございました。

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

お礼日時:2005/02/22 10:04

kamoshika333さん、こんばんは。


>総和関数ってエクセルの関数にありますか?

総和関数って、SUMのことですね?
ありますよ。
まず、関数を入力するセルを選択してから、“挿入”メニューの“関数”をクリックするか、標準アイコン群の中の関数アイコンをクリックすしてください。

http://64.233.167.104/search?q=cache:7g--DCQFg5E …
    • good
    • 0
この回答へのお礼

ありがとうございます。

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

お礼日時:2005/02/19 01:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!