- ベストアンサー
エクセルでの一括計算
エクセルでの一括処理の方法についての質問です。 複数のデータについて同じ処理を繰り返して、それを別のシートに吐き出させたいのですが、どのようにすればいいの分かりません。 具体的には シート1のA1のデータを使って計算します。その結果をシート2のA1に表示したいのですが・・・ マクロやVBAなどは利用経験がないため、詳しく解説いただけると幸いです。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>マクロやVBAなどは利用経験がないため (1)何となく敬遠したい気はわかります。しかしこの部分だけに限って理解すれば良いのでそんなに難しくないと思います。 (2)自家製関数Functionを使います。 Function enzan(a1) x = a1 y = x ^ 2 + x + 1 enzan = y End Function のy=・・・の右辺にA1セルの値Xを使った複雑な演算を 式にして入れてください。三角関数cos,指数関数exp対数 logなどVBで使える数学関数は何を使っても良いです。 (3)さてワークシート上で ALTを押しながらF11キーでVBE画面になります。 ALTキーを押しながらI次ぎにALTキーを押したまで,M で、標準モジュールを挿入する。 その画面に上記をコピーして貼りつける。 Y=・・・の右辺は本番の内容により変えてくださ い。 (4)ワークシートに戻ってSheet2のA1に =enzan(Sheet1!A1) と入れます。Sheet2のA1の式をA2以下に複写します。 (5)やっていることは、いまの質問者の演算式の複写方式と変りませんが、見通しが良くなって、「(A)実は計算式自体が大変複雑な上に、(B)データ自体が10万件ほどあるため、単純に複写するとエクセルデータの容量がバカみたいに大きくなってしまいました」と言う現象に少しでも改善されないかと思いますので、やって見てください。 エクセルは縦には65000行程度しか使えないはずで、 残りはどうされているのかな。相互関連性がないなら、別ブックに分割されては。例えば上例の式だと Sheet1にデータを 2 3 4 0 1 と入れるとSheet2に結果 7 13 21 1 3 が出ました
その他の回答 (4)
- hiyoruki
- ベストアンサー率7% (7/90)
=Sheet1!A1*Sheet2!$D$1*Sheet2!$E$1 ではどうですか? Sheet2!$D$1*Sheet2!$E$1 が計算の部分です。
お礼
御礼が遅くなってすいません。 2度も回答いただき助かりました。 ありがとうございました。
- papayuka
- ベストアンサー率45% (1388/3066)
こんにちは。 > 具体的には もっと具体的でないと解りませんよ。。(^^; 下記はシート1のA1に10を入れ、シート2のA1以降に1~100まで乗算した結果を入れてます。 Sub aa() Dim i As Long Worksheets("Sheet1").Range("A1") = 10 For i = 1 To 100 Worksheets("Sheet2").Range("A" & i) = _ Worksheets("Sheet1").Range("A1") * i Next i End Sub
お礼
御礼が遅くなってすいません。 ありがとうございました。
- comv
- ベストアンサー率52% (322/612)
こんばんは 例えば、A1のデータを使った計算が A1*100 A1の100倍 なら シ-ト2のA1に =Sheet1!A1*100 A2以降も同様の参照なら単純に入力した式を複写 するだけです。
お礼
御礼が遅くなってすいません。 ありがとうございました。
補足
質問がよくないようで、、、(汗 実は計算式自体が大変複雑な上に、データ自体が10万件ほどあるため、単純に複写するとエクセルデータの容量がバカみたいに大きくなってしまいました。 (実際全体の3分の1ほどやった時点で、55MB超えましたw) アドバイスいただいたのに説明不足ですみません。
- hiyoruki
- ベストアンサー率7% (7/90)
=Sheet1!A1 ではダメですか?
補足
そのままコピーじゃなくて、sheet1のA1の数値を代入して計算→計算結果をsheet2のA1に出力→sheet1のA2の数値を代入して計算→計算結果をsheet2のA2に出力→以下同じ操作を繰り返す という感じです。
お礼
御礼が遅くなってすいません。 細かい解説をいただきました。 どうもありがとうございました。