出題内容
#VBA100本ノック 6本目
画像のようにA1から始まる表があります。
D列にB列×C列の計算式を入れてください。
ただし商品コードに"-"の枝番が付いている場合は計算式を入れずそのままにしてください。
例.D2にはA2×B2の計算式を入れる。D4:D5には計算式を入れない。
自分の回答
Dim LastRow As Long
Dim i As LongLastRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To LastRow
If Cells(i, 1) Like "*-*" Then
Else
Cells(i, 4) = Cells(i, 2) * Cells(i, 3)
End If
Next i
Cells(i, 4) = Cells(i, 2) * Cells(i, 3) とすると計算式ではなく計算結果が入力されてしまう。
解説
範囲内に同一数式を入力したい場合は、相対参照で一括入力した方が良い。
R1C1参照を使用する。
Dim i As Long
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
If Not Cells(i, 1).Value Like "*-*" Then
Cells(i, 4).FormulaR1C1 = "=RC[-2]*RC[-1]"
End If
Next
Cells(i, 4).FormulaR1C1 = "=RC[-2]*RC[-1]" とすることで、相対参照の計算式をセルに入力できる。
R1C1参照を使うと、基準セルからの位置で計算式を入れることができる。
R:Row(行)
下方向へ正の数で増えていく。
C:Column(列)
右方向へ正の数で増えていく。
R | Rの後に何も記述しなければ同一行 |
C | Cの後に何も記述しなければ同一行 |
R1 | 数値の絶対行数 |
C1 | 数値の絶対列数 |
R[1] | [数値]分行位置をずらした行 |
C[1] | [数値]分列位置をずらした列 |