我需要一些excel VBA功能的帮助。
我的数据看起来像这样
ColA ColB
a123 a123
a124 a124
a127 a126
a128 a127
.... ....
我想比较ColA和ColB的内容,如果内容不同,我想在A列中插入一个空白单元格。结果如下:
ColA ColB
a123 a123
a124 a124
a126
a127 a127
.... ....
有关如何在Excel中执行此操作的任何建议。
提前致谢
已更新
我尝试使用以下代码插入单元格并且它工作正常,我现在意识到当我运行它时我需要更多功能。
first_col.Cells(row, 1).Select
Selection.Insert Shift:=xlDown
如果删除了“a”的ColA中的值小于ColB中删除了“a”的值,我想在ColA中插入单元格,我还需要在ColC中插入一个单元格(包含其他数据)。如果ColB具有更大的值,我想仅在ColB中插入单元格。我想我知道在If语句中要做什么,但我不知道如何构建IF。这就是我的想法
Set other_col = Range("C1:C100")
//if substring of ColA > substring of ColB
first_col.Cells(row, 1).Select
Selection.Insert Shift:=xlDown
other_col.Cells(row, 1).Select
Selection.Insert Shift:=xlDown
//else
second_col.Cells(row, 1).Select
Selection.Insert Shift:=xlDown
答案 0 :(得分:3)
您的比较声明可能如下所示:
Sub Expand()
Dim first_col As Range, cell As Range
Dim row As Integer
Set first_col = Range("A2:A100")
For Each cell In first_col
If Right(cell.Value, 3) < Right(cell.Offset(0, 1).Value, 3) Then
' Shift in here
End If
Next cell
End Sub
“右”功能查看第二个参数指定的右侧字符数。
另一个注意事项是像这样的代码部分使用.select方法:
first_col.Cells(row, 1).Select
Selection.Insert Shift:=xlDown
可以这样截断:
first_col.cells(row, 1).insert shift:=xlDown
“选择”和“选择”是宏录制器中的剩余部分,通常不用于VBA代码。
答案 1 :(得分:1)
我不知道插入行的确切VBA代码,但您可以通过录制宏来找到它。这是代码的其余部分(循环遍历列并进行比较):
Sub Expand()
Dim first_col as Range
Dim second_col as Range
Dim row as Integer
Set first_col = Range("A2:A100")
Set second_col = Range("B2:B100")
For row = 1 To second_col.Rows.Count
If first_col.Cells(Row, 1).Value <> second_col.Cells(Row, 1).Value Then
'// code to insert the row'
End If
Next row
End Sub
答案 2 :(得分:0)
我通过选择一些单元格并插入来记录宏 我尝试创建自己的子,它的工作
Range("c16:e16").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
编辑备注 此代码导致unmerg合并单元格