Excel VBA比较单元格与列
问题描述:
我试图比较D列单元格对彼此。如果单元(d2,d3)具有相同的数据,则它将进入下一个单元(D4)并比较单元D3和D4。如果它是假的,那么它应该在它们之间添加一行,并将数据放在新行中的较低单元格中。Excel VBA比较单元格与列
IE
ljsdahgfoshfv
ljsdahgfoshfv
ljsdahgfoshfv
lldkjafsf;ksn
dslkfndjlnvfs
dslkfndjlnvfs
dslkfndjlnvfs
将转化为
ljsdahgfoshfv
ljsdahgfoshfv
ljsdahgfoshfv
lldkjafsf;ksn
lldkjafsf;ksn
dslkfndjlnvfs
dslkfndjlnvfs
dslkfndjlnvfs
dslkfndjlnvfs
dslkfndjlnvfs
示例表:
答
此代码似乎做你的描述,但根据我的理解,你应该结果中最后一项的行数少一个。无论如何,通过逐步完成代码,您应该能够根据需要进行修改以获得所需的结果。如果没有,请提问。 .select
声明仅用于在您逐步执行代码时遵循逻辑,并且在您了解代码的工作方式后应该将其删除。
Option Explicit
Sub compareD()
Dim r As Range
Set r = ActiveSheet.Range("D1")
While r <> ""
If r = r.Offset(1, 0) Then
r.Select
Set r = r.Offset(1, 0)
Else
Rows(r.Row + 1).Insert
r.Select
r.Offset(1, 0) = r.Offset(2, 0)
Set r = r.Offset(2, 0)
End If
Wend
End Sub
答
Sub insertRows()
ActiveSheet.Range("D1").Select
Do Until Not IsEmpty(ActiveCell)
Set curCell = ActiveCell
Set nextCell = ActiveCell.Offset(1, 0)
If nextCell.Value <> curCell.Value Then
ActiveCell.Offset(1, 0).EntireRow.Insert
ActiveCell.Offset(3, 0).Select
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
End Sub
希望这有助于你。
+0
您应该注意:[Excel VBA简介第5部分 - 选择单元格(范围,单元格,活动单元格,结束,偏移)](https://www.youtube.com/watch?v=c8reU-H1PKQ&index=5&list= PLNIs-AWhQzckr8Dgmgb3akx_gFMnpxTN5&t = 3124s)。 – 2017-08-12 06:41:18
完美谢谢你! – scandune
很高兴听到。如果您将其标记为已回答,则会有帮助。 –
有没有办法将数据添加到列b? – scandune