想要使用for循环来find相同的值并在它们之间创build一个单元格

我想比较两个连续的单元格,如果它们的值是相同的,那么我想在它们之间创build一个空单元格。 也就是说,如果A1==B1 ,那么我想让程序右键单击并通过将B1的值向右移动来在B1插入一个单元格。 我想为每一行都做这个。 不幸的是,我在VBA方面的知识还很有限,并且在播放录制macros和在线观看时,我做了以下工作

 ' dim is dimension ' allows us to declare variable names and their type Dim i As Integer, j As Integer With ActiveSheet.UsedRange '.Row.Count (.Columns.Count) gives the index of rows (columns) used. If we don't use ., it will give us the end... For i = 1 To .Rows.Count For j = 1 To .Columns.Count If ActiveSheet.Cells(i, j).Value = ActiveSheet.Cells(i, j + 1).Value And Not IsEmpty(ActiveSheet.Cells(i, j).Value) Then ActiveSheet.Cells(i, j + 1).Select , Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove End If Next j Next i End With 

但是,Excel返回一个编译错误。

结束如果没有块如果

我想我的错误在于

 Then ActiveSheet.Cells(i, j + 1).Select , Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 

你有两种使用方法If

 If condition Then doSomething 

要么

 If condition Then doSomething doSomeThingElse End If 

此外,如果您想要在一行中组合多个命令,请使用冒号来分隔它们。 逗号用于分隔参数。 在你的情况下,我会build议把命令分开行以保持代码可读。


接下来是你不应该使用。select。 在你的情况下,你可以更换

 ActiveSheet.Cells(i, j + 1).Select Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 

 ActiveSheet.Cells(i, j + 1).Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove