Vba 在包含特定值的单元格旁边插入单元格

Vba 在包含特定值的单元格旁边插入单元格,vba,excel,for-loop,find,Vba,Excel,For Loop,Find,我想得到一些关于我正在尝试创建的工作表的帮助 我的问题 我想制作一个宏,它将一个单元格插入到一个具有特定值的单元格旁边。我的工作表看起来有点像这样: 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       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  
问题是,我想在包含单词“折扣”的单元格的右侧插入一个单元格,因为每当出现折扣单元格时,数据在右侧列中不对齐

到目前为止我拥有的

    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
目标


我希望每个字符串的都允许我使用到目前为止发现的内容,并重复使用它,直到它到达数据的底部。当它到达底部时,它应该停止查找过程,并继续宏的此函数下面的所有操作。我能让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

如果您的数据在表1中,则以下内容应符合您的预期:

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
这就是你需要的。我也投票结束这个问题,因为这不是一个关于不起作用的代码的问题,而是一个要求提供代码的问题,而不显示任何试图生成所需代码的尝试。