dポイントプレゼントキャンペーン実施中!

 初めまして、よろしくお願いします。

データーで
   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で解る方、よろしくお願いします。

A 回答 (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

参考まで
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/12/27 11:58

>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でやらなくても関数で出来るのではないか。
    • good
    • 1
この回答へのお礼

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

お礼日時:2009/12/27 19:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!