|
>セルが空でない場合はその右隣のセルの値を「1」にする
>という結果が得られません。
それであれば、
>Do Until IsEmpty(Range("b2").Offset(i - 1, 0)) = False
では、セルが空でない場合があるとそれ以降Do〜Loopは行いません。
Do Until IsEmpty(Range("b2").Offset(i - 1, 0)) = True
とするとできるのですが、同じようにセルが空である場合になると、それ以降Do〜
Loopは実行しませんので、B2から下方向に途中で空のセルがあったりすると、期待
しない結果が得られる場合があります。
もし、すべての行をチェックするならば、Do〜LoopではなくFor〜Nextを使った以
下のような方法の方がいいかもしれません。
Dim RowNo As Long
'2行目からExcelの最大行(65536行)までチェック
For RowNo = 2 To 65536
With Cells(RowNo, 2)
'r行のB列が空でない場合
If Not IsEmpty(.Value) Then
'1列右隣の列の値を1にする
.Offset(0, 1).Value = 1
End If
End If
Next
あと、オートフィルタで「空白以外のセル」を抽出して、隣のセルに「1」を設定
することもできます。
|
|