• ベストアンサー

VBAで計算結果を羅列する

関数を組むのはできるようになったのですが、 VBAでつまづいています。 例えば、次のような作業を行いたいのです。 1.250÷A=セルA1 2.Aを1から10まで入れ替えていく 3.それぞれの回答(セルA1に出るもの)を  別のシートに順番に貼り付けていく というものです。 そして、並べた計算結果を並べ替えなどして、 結果の研究をしようと考えています。 ご存知のかたおりましたらよろしくお願いします。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

一部で発想が横道に行ってます。 (1)>Aを1-10まで順次入替えてゆく Sub test01() For A = 1 To 10 '(処理) Next A End Sub で出来ます (2)>250÷A=セルA1 B=260/Aで結果がBと言う変数に入ります。 問題は「=セルA1」です。エクセルVBAだからといって、演算結果は一旦、セルA1に入れなければならないことはないです。変数に入れれば良いし、下記のようにBという変数も顔を出さないように出来ます(します)。 >それぞれの回答(セルA1に出るもの)を 250÷Aは瞬間的に順次変わって行くので、A1に出す意味がありません。何か特別なことを考えてますか。 >別のシートに順番に貼り付けていく 別の->別のシートの指定のし方は下記。 貼り付けていく->貼りつけてと言う発想はやめて代入をするという発想を(初学の場合)お勧めします。 別の(行に)->書きこむ行をずらすテクニックは下記。 Sub test02() j = 1 For A = 1 To 10 Worksheets("sheet2").Cells(j, "A") = 250 / A j = j + 1 Next A End Sub 「250」と言うデータの同類が複数セルに入っており、それらを1つずつ対象にするときは少し変わります。

hayashi23
質問者

お礼

早速のお答えありがとうございました! とても参考になりました。 補足なのですが、 >250÷Aは瞬間的に順次変わって行くので、A1に出す>意味がありません。何か特別なことを考えてますか。 の部分ですが、質問ではわかりやすくするために 単純な式で書きましたが、実際に行おうとしている 作業はAを入れ替えるとそれを参照して計算している 複数行のセルが再計算されます。 今までは、その複数行のセルをAを入れ替えては、 結果を別のシートに張り付けて・・・の繰り返し でした。 このような場合はどうしたら良いのかよろしかったら 教えてください。

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

とりあえず、シートが10枚あるとして こんな感じになるかと思います。 Public Sub test() Dim A, S S = 1 For A = 1 To 10 Sheets(S).Range("A1").Value = 250 / A S = S + 1 Next End Sub

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

#1のお礼欄について >作業はAを入れ替えるとそれを参照して計算している 複数行のセルが再計算されます。 (1)VBAのコードの中で、計算までやってしまう手もあります。 基本的にはシートを中間結果の置き場所にするので無く、 変数を中間結果の一時的データ保持にします。 (2)それでやり難ければ、いつもA1にセットするので無く、A2、A3、・・などに結果をVBAでセットし、ワークシートの関数で計算をさせて、次の段階でVBAで最終結果をSheet2の複数セルに代入すれば(移せば)良い。

関連するQ&A