[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『連続した数の計算結果を表示させるマクロ』(Sparkling)
どうぞよろしくお願いします。
シート1 A1 に 10 シート2 B1 に シート1!A1+50 という式が入っています。 A1の数を一定の数ずつ増やすと、たとえば10ずつであれば、 答えは、60,70,80,90..... となります。 これをいくつからいくつまでいくつずつ増えるかを指定すると 自動で1つのセルごとに答えが出るマクロを作りたいのですが、助けていただけないでしょうか? 答えを出すシートはシート3に表示させたいです。 何卒どうぞよろしくおねがいします。
マクロで処理せずとも、 シート3のA1に=シート2!B1 といれて、シート3のA1を選択して、ホームタブのフィルグループで連続データの作成。 でてきたダイアログで、範囲を列、増分値を10、停止値を、たとえば100 として実行すると、60から100までの結果が自動記入されます。
必要なら、この操作をマクロ記録してみたらいかが?
(β) 2015/03/04(水) 23:33
(β)様 コメント誠にありがとうございました。 すみません、説明の仕方が間違っていました。 B1には、IRRを求める式が入っているので、シートA1の数が一定の数だけ増えていくときの結果を表示させたいです。
具体的には、 シート A1 10000 のとき シート B1 0.15
シート A1 11000 のとき シート B1 0.18
シート A1 12000 のとき シート B1 0.19
とかこんな感じになります。 わかりずらい説明で申し訳ありませんでした。このパターンでも可能でしょうか? マクロで、なくてもいいのですが、どうぞよろしくおねがいします。 (Sparkling) 2015/03/05(木) 10:05
「IRRを求める式」が、どんな式なのかわからないので、とりあえず、シート1!A1+50 で。
自分なら(手作業でやるなら)、
・シート3のどこかのセルに増分という名前をつけて、そこに好きな数値(10 でも 1000 でも)を入れる。 ・シート3の A1 に シート2のB1にいれたのと「同じような式」をいれる。 ・ただし、同じような だから同じじゃない。 シート1!A1 にあたるところを Sheet1!A$1+(ROW()-1)*増分 シート1!A1+50 なら =(Sheet1!A$1+(ROW()-1)*増分)+50 ・で、このセルを下に好きなだけフィルコピー
どうしても、マクロがいいなら書くけど。
(β) 2015/03/05(木) 10:52
実際の「IRRを求める式」が提示されれば、簡単に解決すると思うんですがねぇ。。
(半平太) 2015/03/05(木) 11:12
半平太さんのコメント通り、ふつうに数式でしょりすればいいと思うけど、とりあえずコードを。 (勘違いあればごめん。コードの中のシート名は、式の中のシート名含めて、実際のものに) Sheet3 に増分と回数という名前のセルをつくり、そこに値を入れてから以下を実行。
Sub test() Dim incre As Double Dim init As Double Dim cnt As Long Dim fm As String Dim wk As String Dim v As Variant Dim i As Long
init = Sheets("Sheet1").Range("A1").Value '初期値 incre = Sheets("Sheet3").Range("増分") '増分 cnt = Sheets("Sheet3").Range("回数") '回数 fm = Mid(Sheets("Sheet2").Range("B1").Formula, 2) '計算式
ReDim v(1 To cnt, 1 To 1)
For i = 1 To cnt wk = fm wk = Replace(wk, "Sheet1!A1", "(" & init + (i - 1) * incre & ")") v(i, 1) = Evaluate(wk) Next
Sheets("Sheet3").Range("A1").Resize(UBound(v, 1)).Value = v
End Sub
(β) 2015/03/05(木) 11:20
皆様、コメント、大変ありがとうございます。 取り急ぎ、お礼のみ申し上げます。後程またコメント書きます。 ありがとうございました。 (Sparkling) 2015/03/05(木) 13:12
(β) 様 お世話になります。 ひとつ教えて下さい。手作業でやるのと、作ってくださったマクロは同じ結果になりますか? 手作業の方はうまくいったのですが、マクロは、#VALUE!が並んでしまいます。 (Sparkling) 2015/03/05(木) 14:39
手元の簡単な数式をベースにしたものでは問題なく、手作業とマクロが同じ結果になります。 Sheet1のA1の値、Sheet2のB1の式、Sheet3の初期値セルの値、増分セルの値をアップしてもらえませんか?
(β) 2015/03/05(木) 15:04
ありがとうございます。入力などの間違いかもしれないので、もう一度やってみます。 (Sparkling) 2015/03/05(木) 15:57
同じ結果になりました。数件あるのでマクロで作業したいと思います。 これから本来のワークシートでやってみます。 もしわからなくなったら、また助けてください。 この度はどうもありがとうございました。またよろしくお願いいたします。
(Sparkling) 2015/03/05(木) 17:50
すみません。やっぱりもう一度教えてください。 上の例でいうB1が、 シート2のL35にあたりまして、(=IRR(L34:AJ34,0.1)という式になっています。 上記で教えていただきました、 「シート1!A1+50 なら =(Sheet1!A$1+(ROW()-1)*増分)+50」 ということですが、 この式の場合だと、どこをどのように直したらいいのでしょうか? (半平太) さんにもコメントいただいたように、一番初めに出した例の式が悪くて申し訳ありません。 どうぞよろしくお願いいたします。 マクロでも自分で作業でもどちらでも構いません。よろしくおねがいします。
(Sparkling) 2015/03/05(木) 19:01
【上の例でいうB1が、 シート2のL35にあたりまして】
あぁ、そうですか・・・いいですけど・・・
【(=IRR(L34:AJ34,0.1)という式になっています】
この式の中で、
「シート1 A1 に 10」 「A1の数を一定の数ずつ増やすと」
といっている A1 はどこですか? 0.1(10%)のところですか?
いずれにしてもマクロは不要ですね。 シート3の A1 に =IRR(シート2!$L$34:$AJ$34,初期値+増分*(ROW()-1)) こうして下にフィルコピーすればいいのでは? (初期値セルや増分セルには実際の値(0.1 等) をいれる)
(β) 2015/03/05(木) 19:39
>(半平太) さんにもコメントいただいたように、一番初めに出した例の式が悪くて申し訳ありません。
いえ、一番始めの式ではなく、実際のIRRの数式が分かれば 前提が単純なので、数式一つで利回りは求まりますよ、と云う趣旨です。 (つまり、わざわざデータを作る必要は無いですよ、と云うことです) (もっとも、実際にやってみたらかなり面倒な式になってしまった。まぁ、やっつけなので・・)
例: J34セル =IRR((50+(ROW(INDIRECT("A1:A"&N34+1))-2)*M34)*(ROW(INDIRECT("A1:A"&N34+1))>1)+K34*N(ROW(INDIRECT("A1:A"&N34+1))=1),0.1)
<結果図> 行 _ J _ ___K___ ____ L ____ __M__ __N__ 33 IRR 投資額 初期回収額 増加 回数 34 6.74% -1000 50 10 15 35 4.06% -900 50 5 15
(半平太) 2015/03/05(木) 20:12
コメント、大変ありがとうございます。取り急ぎお礼申し上げます。 返信が遅くなりまして申し訳ありません。これからやってみます!
(Sparkling) 2015/03/06(金) 11:24
といっている A1 はどこですか? 0.1(10%)のところですか?
@ A1 にあたるところは、0.1じゃないです。 シート1のC5 になるのですが、C5には、シート2のE21 がリンクで張り付いています。 C5は、入力用のシートという感じです。
=IRR(シート2!$L$34:$AJ$34,初期値+増分*(ROW()-1)) この式の初期値のところにC5の値を数字で入力すると フィルコピーすると、ちゃんと数字が表示されるのですが、 最初の列はあっていますが、2列目から計算結果値が違うので、 なにかちょこっとおかしいんだと思います。 どこを直すといいと思われますか?
わかりにくい説明ばかりでほんと何度も申し訳ありません<m(__)m> よろしくおねがいします。
(Sparkling) 2015/03/06(金) 16:32
私は自他ともに認める(?)関数というかエクセル音痴ですので、半平太師匠のリコメンドされる方式 つまり、増分を与えながらいくつか、結果を確認しなくても、条件を与えて一発で利回りが得られるという その線でいかれたらどうでしょう。
一応、その「関数音痴」のβの思惑は、
初期値セル(説明では Sheet1のC5 ないしは Sheet2のE21 ?) に 0.1、増分セルに 0.1 が入っていたとして Sheet3 の A1 から下に(つまり行に。 2列目から・・・といっておられるのがちょっと気になりますが) =IRR(シート2!$L$34:$AJ$34,初期値+増分*(ROW()-1)) を 書いたとしたら A1 は実際には =IRR(シート2!$L$34:$AJ$34,0.1+0.1*(1-1)) つまり =IRR(シート2!$L$34:$AJ$34,0.1) A2 は実際には =IRR(シート2!$L$34:$AJ$34,0.1+0.1*(2-1)) つまり =IRR(シート2!$L$34:$AJ$34,0.2) A3 は実際には =IRR(シート2!$L$34:$AJ$34,0.1+0.1*(3-1)) つまり =IRR(シート2!$L$34:$AJ$34,0.3)
といったようなことになると・・・
まぁ、βがわかっていないのだと思いますので、半平太師匠におまかせして撤退したほうがいいようで。
(β) 2015/03/06(金) 21:35
週末、返信することができなくて申し訳ありませんでした。 取り急ぎ、お礼申し上げます。どうもありがとうございました。 またご連絡いたします。 (Sparkling) 2015/03/10(火) 12:01
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.