とっておきの手土産を教えて

下記のマクロコードをもう少し簡素化できる方法があれば教えてください。
指定シート名「Table 2」で指定セルに指定計算式をコピーできます。
現状のマクロ
Sub 水平距離()
Sheets("Table 2").Select
Range("$Z$4").Formula = "=IFERROR(ROUNDDOWN(($O$4+$P$4),3),"""")"
Range("$Z$5").Formula = "=IFERROR(ROUNDDOWN(($O$5+$P$5),3),"""")"
Range("$Z$6").Formula = "=IFERROR(ROUNDDOWN(($O$6+$P$6),3),"""")"
Range("$Z$7").Formula = "=IFERROR(ROUNDDOWN(($O$7+$P$7),3),"""")"

Range("$Z$10").Formula = "=IFERROR(ROUNDDOWN(($O$10+$P$10),3),"""")"
Range("$Z$11").Formula = "=IFERROR(ROUNDDOWN(($O$11+$P$11),3),"""")"
Range("$Z$12").Formula = "=IFERROR(ROUNDDOWN(($O$12+$P$12),3),"""")"
Range("$Z$13").Formula = "=IFERROR(ROUNDDOWN(($O$13+$P$13),3),"""")"

Range("$Z$16").Formula = "=IFERROR(ROUNDDOWN(($O$16+$P$16),3),"""")"
Range("$Z$17").Formula = "=IFERROR(ROUNDDOWN(($O$17+$P$17),3),"""")"
Range("$Z$18").Formula = "=IFERROR(ROUNDDOWN(($O$18+$P$18),3),"""")"
Range("$Z$19").Formula = "=IFERROR(ROUNDDOWN(($O$19+$P$19),3),"""")"

Range("$Z$22").Formula = "=IFERROR(ROUNDDOWN(($O$22+$P$22),3),"""")"
Range("$Z$23").Formula = "=IFERROR(ROUNDDOWN(($O$23+$P$23),3),"""")"
Range("$Z$24").Formula = "=IFERROR(ROUNDDOWN(($O$24+$P$24),3),"""")"
Range("$Z$25").Formula = "=IFERROR(ROUNDDOWN(($O$25+$P$25),3),"""")"
文字数の関係上途中省略
Range("$Z$118").Formula = "=IFERROR(ROUNDDOWN(($O$118$+P$118),3),"""")"
Range("$Z$119").Formula = "=IFERROR(ROUNDDOWN(($O$119+$P$119),3),"""")"
Range("$Z$120").Formula = "=IFERROR(ROUNDDOWN(($O$120+$P$120),3),"""")"
Range("$Z$121").Formula = "=IFERROR(ROUNDDOWN(($O$121+$P$121),3),"""")"

End Sub
以上となります。よろしくお願いいたします。

A 回答 (4件)

以下のようにしてください。



Sub 水平距離()
Dim i As Long
Dim str1 As String
Dim str2 As String
Sheets("Table 2").Select
For i = 4 To 121
str1 = "$Z$" & i
str2 = "=IFERROR(ROUNDDOWN(($O$" & i & "+$P$" & i & "),3),"""")"
Range(str1).Formula = str2
Next
End Sub
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
上手くできました。

お礼日時:2024/09/09 09:19

No2です。

行が飛んでいるのですね。
No2は無視してください。
失礼しました。
    • good
    • 0

No.2 です。

すみません、ちょっと違いました。
Range("$Z$" & GYO).Formula = "=IFERROR(ROUNDDOWN(($O$" & GYO & "+$P$" & GYO & "),3),"""")"
で、たぶんOK。(未検証)
    • good
    • 0
この回答へのお礼

修正連絡、ありがとうございました。
上手くできました。

お礼日時:2024/09/09 09:21

行番号だけ違うんですよね。

でしたらループで行番号を変えて行けばいいです。
For i = 4 to 118 Step 6
For j = 0 to 3
GYO = i + j
Range("$Z$" & GYO).Formula = "=IFERROR(ROUNDDOWN(($O$"" & GYO+$P$"" & GYO),3),"""")"
Next j
Next i
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
早速試してみます。

お礼日時:2024/09/09 09:18

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A