VBA копировать определенные ячейки

У меня есть следующая проблема. У меня есть три столбца в Excel, как это

A               B        C
13/03/2015  GXH15   
16/03/2015  GXH15   
17/03/2015  GXH15   
18/03/2015  GXH15   
19/03/2015  GXH15   
20/03/2015  GXH15   17/03/2015
23/03/2015  GXM15   
24/03/2015  GXM15   

Формула в C =IF(Ob61=b62,"",a61-3). Поэтому я пытаюсь написать код, который принимает все значения в B и копирует их в другой столбец, оставляя также пустые ячейки, которые мне не нужны.

Option Explicit
Sub Roll()

Dim RollDate As Range
Dim i As Long
Dim cell As Range


Set RollDate = Range("B7:B2500")

i = 1
For Each cell In RollDate
    If Not IsEmpty(ActiveCell.Value) Then
    cell.Value.Copy Range("X7")
    cell.Value = i
    i = i + 1
End If
Next
End Sub

Это то, что я написал, но это не работает.

Обновить

Спасибо за ответы, но они все равно не работают так, как я хочу. Я постараюсь сделать вещи более ясными

A               B        C
13/03/2015  GXH15   
16/03/2015  GXH15   
17/03/2015  GXH15   
18/03/2015  GXH15   
19/03/2015  GXH15   
20/03/2015  GXH15   17/03/2015
23/03/2015  GXM15   
24/03/2015  GXM15
20/03/2015  GXH15   xx/03/2015
23/03/2015  GXM15   
24/03/2015  GXM15

Моя цель состоит в том, чтобы иметь тогда в colum X только значения из C

X
17/03/2015
xx/03/2015
.
.
.
etc.

2 ответа

  1. отредактировано после разъяснения OP:

    Sub Roll2()
        With Range("b7:b2500")
            .Offset(, 1).SpecialCells(xlCellTypeFormulas, xlNumbers).Copy '<--| consider cells with number value resulting from a formula
            .Offset(, 22).PasteSpecial SkipBlanks:=True, Paste:=xlPasteValues
        End With
    End Sub
    
  2. Также с некоторыми догадками, как не ясно, что вы спрашиваете, но с немного иной интерпретацией к вышеуказанному ответу.

    Option Explicit
    
    Sub Roll()
    
    Dim RollDate As Range
    Dim i As Long
    Dim cell As Range
    
    Set RollDate = Range("B7:B2500")
    
    i = 1
    For Each cell In RollDate.Offset(, 1).SpecialCells(xlCellTypeFormulas, xlNumbers)
        Range("X" & Rows.Count).End(xlUp)(2).Value = cell.Value
        cell.Value = i
        i = i + 1
    Next
    
    End Sub