次のコードは、B列の数値が3より大きいときは、B列と同じ行の、
A列のセルの値を、シート一番下から上へ進んでみつけたセルを起点としたF列のセル内へ、B列のセルの値をG列セル内へ代入するマクロである。
次の選択肢の中から空欄に入るものとして適切なものを1つ答えなさい。
Sub Exam1()
Dim i As Long, LastRow As Long
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To LastRow
If Cells(i, 2) > 3 Then
With 【 空欄① 】
.Offset(1) = Cells(i, 1)
.Offset(1, 1)= Cells(i, 2)
End With
End If
Next i
End Sub

1.Cells(Rows.Count, 6).End(xlDown)
2.Cells(Rows.Count, 6).End(xlUp).Row
3.Cells(Rows.Count, 6).End(xlDown).Row
4.Cells(Rows.Count, 6).End(xlUp)
正解
4
解説
【7章 ステートメント】
【Withステートメント】
Endモード引数に指定した定数による方向は以下の図の通りです。
End(xlUp)でシートの下から上方向に進みセルの位置を見つけます。

【コード解説】
次のコードは、B列の数値が3より大きいときは、B列と同じ行の、
A列のセルの値を、シート一番下から上へ進んでみつけたセルを起点としたF列のセル内へ、B列のセルの値をG列セル内へ代入するマクロである。
次の選択肢の中から空欄に入るものとして適切なものを1つ答えなさい。
Sub Exam1()
Dim i As Long, LastRow As Long
‘変数の宣言をする。
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
’変数LastRowにRows.Countでシート行の数を数えて、
’行の一番下から上へ向かって値があるセルのセル行番号(数)をRowプロパティで取得する。
For i = 2 To LastRow
‘①開始値から終了値まで繰り返し処理を行う。
If Cells(i, 2) > 3 Then
‘条件分岐 B列指定のセルの値が3より大きい時は以下の処理を行う。
With Cells(Rows.Count, 6).End(xlUp)
’With Cells(Rows.Count, 6).End(xlUp)を省略する。
’Cells(Rows.Count, 6).End(xlUp) 6列目 F列の行数を数えて、下から上に向かって進みつきあたるセルを指定する。
.Offset(1) = Cells(i, 1)
’見つかったセルをOffsetプロパティで1行下へ位置をずらして、A列のセルの値を代入する。
’.Offset(1) は.Offset(1, 0) の省略表現です。
.Offset(1, 1) = Cells(i, 2)
’6列目の見つかったセルをOffsetプロパティで1行下1列右へ位置をずらして、B列のセルの値を代入する。
End With
’省略を終了する
End If
’①へ終了値まで繰り返し戻る。
Next i
’①へ終了値まで繰り返し戻る。
End Sub

1.Cells(Rows.Count, 6).End(xlDown)
誤り。
Cells(Rows.Count, 6) はF列の最終行のセルを指しますが、
そこから End(xlDown) としても、通常はそれ自身(最終行)を返すか、
データがない場合はエラーになるなど、F列の最終データセルを取得する目的には合致しません。
2.Cells(Rows.Count, 6).End(xlUp).Row
誤り。
End(xlUp).Row はF列の最終データ行の行番号を返します。
With ステートメントは行番号ではなく、セル(Rangeオブジェクト)を指定する必要があります。
3.Cells(Rows.Count, 6).End(xlDown).Row
誤り。
行番号を返してしまう点と、End(xlDown) の使い方、上から下へ進むが問題の文脈に合わない点の両方が間違いです。
4.Cells(Rows.Count, 6).End(xlUp)
正しい。
Cells(Rows.Count, 6) はワークシートのF列の最下行のセルを参照します。
そこから .End(xlUp) とすることで、F列の最終データセル(シートの一番下からデータがあるところまで上に進んで見つかるセル)のRangeオブジェクトを取得できます。
With ステートメント内では、この取得したセルを起点として .Offset を用いることで、相対的な位置にあるセル、
この場合、F列の最終データセルの1行下と、その隣のG列の1行下のセル)を指定して値を代入できます。