复制单元格并移动到另一个单元格(偏移) - VBA BEGINNER

时间:2017-01-13 14:57:21

标签: excel vba excel-vba

我有一个包含许多空白和条目的列。我想取条目(忽略空白)并将它们向右移动一次,然后向下移动两次以替换内容。我有一种感觉,你会使用偏移功能,但我不知道如何在VBA中写这个。我只使用偏移量作为公式。任何帮助将不胜感激......

2 个答案:

答案 0 :(得分:2)

这是一个班轮:

Range("A:A").SpecialCells(xlCellTypeConstants).Offset(2, 1).FormulaR1C1 = "=R[-2]C[-1]" '<--| change "A:A" to actual column index

或者,如果你的&#34;不是空白&#34;细胞来自细胞中的公式:

Range("A:A").SpecialCells(xlCellTypeFormulas).Offset(2, 1).FormulaR1C1 = "=R[-2]C[-1]"

答案 1 :(得分:1)

首先,您需要创建一个循环,该循环将移动您范围的所有值。有很多方法可以创建循环,但这里有一个例子:

'find last row of range
lastrow = ActiveSheet.UsedRange.Rows.Count

'Loops through the values from 2 to the last row of range
For x=2 to lastrow 

Next x

然后我建议循环遍历范围并使用IF函数检查每个单元格的值:

'Checks for blank value in column A. If not blank  
If Cells(x, 1).Value <> "" then
'Do Something
End IF

现在,为了复制新范围内的所有值,只需将旧单元格和新单元格的值设置为:

'Moves value from column A to column B and two cells down
Cells(x+2, 2).Value = Cells(x, 1).Value

总之,您的代码看起来像这样:

Sub MoveValue ()

lastrow = ActiveSheet.UsedRange.Rows.Count

For x=2 to lastrow 
    If Cells(x, 1).Value <> "" then
      Cells(x+2, 2).Value = Cells(x, 1).Value
    End IF
Next x

End Sub