最有效的方法是取消包含“x”

我一直在使用Columns(2).Copy Destination:=Columns(1)临时抵消所有包含“x”一列左侧的单元格,但它似乎是非常消耗内存,不是很可靠,因为我可以' tselect仅抵消“x”值。

有什么办法可以让我们只用这个接触点的单元格来弥补,而且效率更高?

你可能会想尝试这样的事情

 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 

但是这可能需要很长时间。 理想情况下,如果您知道所使用的最后一行和列,则应该使用嵌套循环。 这样你只能迭代你认为包含数据的单元。

类似于下面的答案,但是使用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