我一直在临时使用Columns(2).Copy Destination:=Columns(1)
将所有包含“x”一列的单元格偏移到左侧,但它似乎非常耗费内存并且不太可靠,因为我无法选择仅偏移“x”值。
有没有什么方法可以让只有满足这种关系的细胞才能被抵消,并以更有效的方式?
答案 0 :(得分:2)
与下面的答案类似,但是For-Each循环和整个范围:
Sub MoveOver()
Dim rng As Range
Dim c As Range
Set rng = ThisWorkbook.Worksheets("Sheet1").Range("B:B")
For Each c In rng
If c.Value = "x" Then c.Offset(0, -1) = c.Value
Next c
End Sub
答案 1 :(得分:1)
For i = 1 To 100
If ActiveSheet.Cells(i, 2).Value = "x" Then
ActiveSheet.Cells(i, 1).Value = ActiveSheet.Cells(i, 2).Value
End If
Next
只需为您拥有的行数设置100即可。我甚至不确定这会比你拥有的更快。除非我在这里错过你的目标。
如果你想浏览表格中的所有单元格
For Each rcell In ActiveSheet.Cells
If recll.Column >= 1 And rcell.Value = "x" Then
ActiveSheet.Cells(rcell.Row, rcell.Column - 1).Value = ActiveSheet.Cells(rcell.Row, rcell.Column).Value
End If
Next
但是这个可能需要很长时间。理想情况下,如果您知道正在使用的最后一行和列,则应使用嵌套循环。这样,您只需迭代您认为包含数据的单元格。