| 
    
     |  | >セルが空でない場合はその右隣のセルの値を「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」を設定
 することもできます。
 
 
 |  |