- ベストアンサー
Excel マクロの構文
次のマクロを記入したいのですが、うまくいきません 教えてください。 セルの値は5桁の整数です セル"D2"の値 - セル"A1"の値 が -30以下であれば セル"E2"に セル"D2"の値を表示 そうでないときは 空白で表示 この計算を セル"D12" - セル"A11" 結果を セル"E12" セル"D22" - セル"A21" 結果を セル"E22" のように10行とびごとに セル"D102" - セル"A101" 結果を セル"E102" まで10回繰り返し計算したいのですがうまくいきません 何方か、このマクロの記入を教えてください お願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんな感じでしょうか? Sub test() Dim ofs As Integer For ofs = 0 To 100 Step 10 If Range("D2").Offset(ofs) - Range("A1").Offset(ofs) <= -30 Then Range("E2").Offset(ofs) = Range("D2").Offset(ofs) Else Range("E2").Offset(ofs) = "a" End If Next End Sub
その他の回答 (2)
- winarrow07
- ベストアンサー率41% (143/346)
Sub test() Dim i As Integer For i = 0 To 100 Step 10 If Cells(2 + i, 4) - Cells(1 + i, 1) <= -30 Then Cells(2 + i, 5).Value = Cells(2 + i, 4) - Cells(1 + i, 1) Else Cells(2 + i, 5).Value = "" End If Next i End Sub
お礼
winarrow07様 早速ご回答くださいましてありがとうございました。 構文の組立やCellsの使い方など大変勉強になりました 初心者なのでねこれからも質問すると思いますので ご指導くださいますようお願いいたします。 ありがとうございました。
- myRange
- ベストアンサー率71% (339/472)
方法はいくつかありますが、ひとつ。 '------------------------------------------------- Sub Test() Dim R As Long Dim i As Integer For i = 0 To 100 Step 10 R = i + 2 If (Cells(R, "D").Value - Cells(R, "A")) <= -30 Then Cells(R, "E").Value = Cells(R, "D").Value Else Cells(R, "E").Value = "a" End If Next i End Sub '------------------------------------ 変数Rを使わない場合は R = i + 2 を省き Cells(R, のRを i+2 とすることもできます。 要するにコードの書き方は色々あるということです。 が、なるべく可読性の高いものにした方がいいでしょう。 以上です。
お礼
myRange 様 早速ご回答くださいましてありがとうございます。 変数の使い方とか、Cellsの使い方など大変勉強になりました 初心者なので、これからも質問することがあると思いますが ご指導くださいますようお願いいたします。 ありがとうございました。
お礼
hara-hara3 様 早々にご回答いただきありがとうございました。 早速マクロを試してみました。 完璧でした。ありがとうございました。 Offsetプロパテイーを使う発想はありませんでした。 他の回答者はValueプロパティーを使った回答でした。 私もそのように考えていました。 初心者なので、これからも質問すると思いますので よろしくご指導お願いします。 17gawa より