当单元格的值不同时,我编写了一个宏以在单元格之间插入一行。我的数据中有9列,数据从第2行开始。我希望宏检查第3列(也称为“C”列)下的所有值,当它通过时,如果值发生变化(即,2、2、2、3、3),它将在更改的值之间插入一行(即2、2、2、插入行、3、3)。问题是,我的宏读的是第5(E)栏,而不是3(C)。怎么了,我搞不懂!我之所以知道这一点,是因为我放置了一个msgbox来吐出单元格的值,它匹配第5列中的所有内容,而不是第3列。
Sub Dividers()
Dim DividerRange As Range, lastrow As Long, k As Integer, counter As Integer
lastrow = Range("C2").End(xlDown).Row
Set DividerRange = Range(Cells(2, 3), Cells(lastrow, 3))
counter = 0
For k = 2 To DividerRange.Count
MsgBox DividerRange(k + counter, 3).Value
If DividerRange(k + counter, 3).Value = DividerRange(k + counter - 1, 3).Value Then
DividerRange(k + counter, 3).EntireRow.Insert
counter = counter + 1
Else
End If
Next k
End Sub发布于 2014-07-15 20:07:31
DividerRange(k + counter, 3).Value是一个相对的引用。DividerRange是从C2开始的范围,所以当您请求(i,j)第th单元格时,即从E列中得到一些信息,其中jth列为:(C = 1,D= 2,E= 3)
发布于 2014-07-15 20:18:24
您可以简化它很多,没有必要的范围,范围计数,或计数器:
Sub Dividers()
Dim lastrow As Long, k As Integer
lastrow = Range("C2").End(xlDown).Row
For k = 2 To lastrow
If Cells(k, 3).Value <> Cells(k - 1, 3).Value Then
Cells(k, 3).EntireRow.Insert
'Now skip a row so we don't compare against the new empty row
k = k + 1
End If
Next k
End Subhttps://stackoverflow.com/questions/24767139
复制相似问题