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

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

以上是关于在包含特定值的单元格旁边插入单元格的主要内容,如果未能解决你的问题,请参考以下文章

根据单元格原始列的行数将特定单元格的内容复制到空列

在Jtable单元格中的复选框旁边插入文本

有条件地显示具有匹配值的单元格的行中的值

Google 表格 - 返回包含特定文本的单元格的列号

如果值> 1,则在下面插入空白单元格并从上面的单元格复制/粘贴值的宏

如何获取特定匹配值的起始单元格和结束单元格地址?