在包含特定值的单元格旁边插入单元格
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在包含特定值的单元格旁边插入单元格相关的知识,希望对你有一定的参考价值。
我想获得一些我正在尝试创建的工作表的帮助。
我的问题
我想制作一个宏,它在具有特定值的单元格旁边插入一个单元格。我的表看起来有点像这样:
Invoice 14-12-2017 USD 400,00
Discount USD 125,65
Creditmemo 14-12-2017 USD 205,60
Invoice 16-12-2017 USD 906,75
Invoice 19-12,2017 USD 855,00
Discount USD 105,80
问题是我想在包含单词“Discount”的单元格右侧插入一个单元格,因为只要出现折扣单元格,数据就不会在右列中对齐。
到目前为止我有什么
Cells.Find(What:="Discount", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Offset(0, 1).Insert Shift:=xlShiftToRight
目标
我希望For Each字符串允许我使用到目前为止我发现的内容,并重用它直到它到达我的数据的底部。当它到达底部时,它应该停止查找过程,并继续在宏的这个函数下面可能有的任何东西。我有可能让VBA按照我的要求去做吗?请告诉我。
答案
如果你想循环遍历单元格并向右插入,那么:
Sub Button1_Click()
Dim LstRw As Long
Dim Rng As Range, c As Range
LstRw = Cells(Rows.Count, "A").End(xlUp).Row
Set Rng = Range("A1:A" & LstRw)
For Each c In Rng.Cells
If LCase(c) = "discount" Then
c.Offset(, 1).Insert Shift:=xlToRight
End If
Next c
End Sub
如果要在有空白单元格时插入,则可以使用特殊单元格。
Sub InsertOnBlank()
Columns("B:B").SpecialCells(xlCellTypeBlanks).Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
End Sub
另一答案
如果您的数据在Sheet1中,那么以下内容应该符合您的预期:
Sub foo()
LastRow = Sheets("Sheet1").Cells(Sheets("Sheet1").Rows.Count, "A").End(xlUp).Row
For i = 2 To LastRow
If Sheets("Sheet1").Cells(i, 1).Value = "Discount" Then Sheets("Sheet1").Cells(i, 2).Insert Shift:=xlToRight
Next i
End Sub
以上是关于在包含特定值的单元格旁边插入单元格的主要内容,如果未能解决你的问题,请参考以下文章