想要使用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