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