• ベストアンサー

エクセルVBAで列のまとめ計算

 初めまして、よろしくお願いします。 データーで    A      B     C     D      E ・・・ 1                    7      2 2                    7      0 3                    #DIV/0!  4                    3      6 5                    8      3 6                    3      4 ・     ・      ・      ・      ・ ・     ・      ・      ・      ・ 100                   4      5 という表がありますA1からA10までには(D列の1 TO 10値-(D列の11 TO 20))/(D列の11 TO 20)を表示させたいと思います。For i =1 to 10 、For a =11 to 20 を使用するやり方だとは思いますがうまくいきません。たまに3行のようなエラーの行があります。関数式ではなく、VBAで解る方、よろしくお願いします。

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

  • ベストアンサー
  • hige_082
  • ベストアンサー率50% (379/747)
回答No.1

質問が理解できなかったのですが A1=(D1-D11)/D11 なのか A1=(SUM(D1:D10)-SUM(D11:D20))/SUM(D11:D20) なのか? 数式の入力なのか値のみの入力なのか? A1=(D1-D11)/D11   : A10=(D10-D20)/D20 で値の貼り付けとすると for~nextも必要ないかと Sub test0() Range("a1:a10").Value = Evaluate("=(d1:d10-d11:d20)/d11:d20") End Sub for~nextを使用するなら Sub test1() Dim i On Error Resume Next For i = 1 To 10 Cells(i, 1).Value = (Cells(i, 4).Value - Cells(i + 10, 4).Value) / Cells(i + 10, 4).Value Next i End Sub 参考まで

kei__2000
質問者

お礼

 解答ありがとうございます。ご指摘の通り、確かに質問の仕方に問題があったようで申し訳ありません。参考解答して頂いたように A1=(D1-D11)/D11   : A10=(D10-D20)/D20 で値の貼り付けです。  解答頂きました参考解答は、大変役に立ちました。ありがとうございます。

その他の回答 (1)

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

>For i =1 to 10 、For a =11 to 20 を使用するやり方だとは・・ iとaは2つ使わないほうが良い。 iとi+10 を使う場合と思う。 質問を変に下手なコードをのせて推測させず、したいことを式や実数字の計算例で書いたほうが、読者や質問には良い。 Sub test01() For i = 1 To 10 d1 = Cells(i, "D") d2 = Cells(i + 10, "D") If IsError(d1) Or IsError(d2) Then Cells(i, "A") = "" Else Cells(i, "A") = (d1 - d2) / d2 End If Next i End Sub のようなことになるのかな。 こんなのVBAでやらなくても関数で出来るのではないか。

kei__2000
質問者

お礼

解答ありがとうございます。確かに関数式でできますが、VBAでのやり方を知りたく、質問致しました。

関連するQ&A