- ベストアンサー
エクセル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で解る方、よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
質問が理解できなかったのですが 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 参考まで
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
>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でやらなくても関数で出来るのではないか。
お礼
解答ありがとうございます。確かに関数式でできますが、VBAでのやり方を知りたく、質問致しました。
お礼
解答ありがとうございます。ご指摘の通り、確かに質問の仕方に問題があったようで申し訳ありません。参考解答して頂いたように A1=(D1-D11)/D11 : A10=(D10-D20)/D20 で値の貼り付けです。 解答頂きました参考解答は、大変役に立ちました。ありがとうございます。