我有以下问题。我在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.
答案 0 :(得分:0)
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
答案 1 :(得分:0)
还有一些猜测,不清楚你在问什么,但对上述答案的解释略有不同。
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