Vba 基于特定文本及其引用插入行

Vba 基于特定文本及其引用插入行,vba,excel,Vba,Excel,我使用VBA代码根据特定文本及其引用插入下面的行 我正在使用下面的代码来执行此操作 Sub try() Dim c As Range For Each c In Range("A1:A100") If c.Value Like "*COLLECTION*" Then c.Offset(1, 0).EntireRow.Insert End If Next c End Sub 我希望将文本余额放在集合单元格下方,而不是空白行 我想在最后一个集合条目下面插入余额

我使用VBA代码根据特定文本及其引用插入下面的行

我正在使用下面的代码来执行此操作

Sub try()
Dim c As Range
  For Each c In Range("A1:A100")
    If c.Value Like "*COLLECTION*" Then
       c.Offset(1, 0).EntireRow.Insert
    End If
  Next c
End Sub
  • 我希望将文本余额放在集合单元格下方,而不是空白行

  • 我想在最后一个集合条目下面插入余额行,例如,如果连续有两个集合行,那么我想在第二个集合行之后添加余额行。但是使用上面的VBA代码,我将在每个集合行下面获得空行

  • 我的收款行和余额行在A列中


    这通常是您希望从最后一个单元格开始的情况,因为插入一行会弄乱下面的所有计数器

    换句话说,为每个人设计优雅的服装并不是一个好主意。太难以预料了。一个丑陋的,古老的简单的步骤-1是前进的道路。比如:

    Sub Macro1()
        For l = 100 To 1 Step -1
            If Trim(Cells(l, 1)) = "COLLECTION" And Trim(Cells(l + 1, 1)) = "DEMAND" Then
                Rows(CStr(l + 1) & ":" & CStr(l + 1)).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
                Cells(l + 1, 1) = "BALANCE"
            End If
        Next l
    End Sub
    
    刚刚在EXCEL 2013上试用过,似乎可以正常工作。不过,可能还有更优雅的解决方案

    编辑:想法如下: _从最后一行开始(事实上,最后一行无法工作,因此一个优化可以从上一行开始),然后转到第一行
    _如果行testes是“COLLECTION”,下一行是“DEMAND”,那么您需要在两者之间插入一个“BALANCE”行。分两次完成,首先插入一个空行,然后在新创建的行中添加“BALANCE”。

    这通常是您希望从最后一个单元格开始的情况,因为插入一行会弄乱下面的所有计数器

    换句话说,为每个人设计优雅的服装并不是一个好主意。太难以预料了。一个丑陋的,古老的简单的步骤-1是前进的道路。比如:

    Sub Macro1()
        For l = 100 To 1 Step -1
            If Trim(Cells(l, 1)) = "COLLECTION" And Trim(Cells(l + 1, 1)) = "DEMAND" Then
                Rows(CStr(l + 1) & ":" & CStr(l + 1)).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
                Cells(l + 1, 1) = "BALANCE"
            End If
        Next l
    End Sub
    
    刚刚在EXCEL 2013上试用过,似乎可以正常工作。不过,可能还有更优雅的解决方案

    编辑:想法如下: _从最后一行开始(事实上,最后一行无法工作,因此一个优化可以从上一行开始),然后转到第一行
    _如果行testes是“COLLECTION”,下一行是“DEMAND”,那么您需要在两者之间插入一个“BALANCE”行。它分两次完成,首先插入一个空行,然后在新创建的行中添加“BALANCE”。

    我将使用一个循环,从第1行到列
    a
    中最后填充的行。然后有一个布尔标记,当当前单元格中的单元格值类似于
    “*COLLECTION*”
    时为true,但如果不是,则为false。因此,如果当前单元格与
    “*COLLECTION*”
    不同,但标记为true,则当前单元格上方的最后一个单元格与
    “*COLLECTION*”
    相似。然后插入一个带有
    “BALANCE”
    的新行,如果该单元格尚未
    “BALANCE”

    subtry()
    调光范围
    暗淡的光线和长的一样
    lRow=1
    黯淡如水
    Dim bfind为布尔值
    使用ActiveSheet
    lRowLast=.Cells(.Rows.Count,1).End(xlUp).Row
    做
    设置c=.Range(“A”&lRow)
    如果c.值像“*集合*”那么
    bFound=True
    那么埃尔塞夫找到了吗
    bFound=False
    如果c.值“余额”,则
    c、 EntireRow.Insert
    lRowLast=lRowLast+1
    c、 抵销(-1,0)。Value=“余额”
    c、 偏移量(-1,0)。Font.Color=RGB(0,0,0)
    如果结束
    如果结束
    lRow=lRow+1
    
    Loop While lRow我将使用从第1行到列
    a
    中最后一个填充行的循环来执行此操作。然后有一个布尔标记,当当前单元格中的单元格值类似于
    “*COLLECTION*”
    时为true,但如果不是,则为false。因此,如果当前单元格与
    “*COLLECTION*”
    不同,但标记为true,则当前单元格上方的最后一个单元格与
    “*COLLECTION*”
    相似。然后插入一个带有
    “BALANCE”
    的新行,如果该单元格尚未
    “BALANCE”

    subtry()
    调光范围
    暗淡的光线和长的一样
    lRow=1
    黯淡如水
    Dim bfind为布尔值
    使用ActiveSheet
    lRowLast=.Cells(.Rows.Count,1).End(xlUp).Row
    做
    设置c=.Range(“A”&lRow)
    如果c.值像“*集合*”那么
    bFound=True
    那么埃尔塞夫找到了吗
    bFound=False
    如果c.值“余额”,则
    c、 EntireRow.Insert
    lRowLast=lRowLast+1
    c、 抵销(-1,0)。Value=“余额”
    c、 偏移量(-1,0)。Font.Color=RGB(0,0,0)
    如果结束
    如果结束
    lRow=lRow+1
    
    Loop While lRow使图片中的样本数据不正确,因为没有空行。我已经更新了我的代码。我想平衡文本的颜色应该是黑色。2.我在DEMAND行中有值,在COLLECTION行中有值,现在我想要BALANCE=DEMAND-COLLECTION,一个条目有两次COLLECTION,因此根据COLLECTION的发生情况,余额应该出现。你能告诉我宏代码吗。我有D2:S2的需求值D1:S1收集值,余额应该在下一行。请在这个问题上帮助我。对于您的第一个问题,请参阅编辑后的代码。请注意插入行后的附加
    lRowLast=lRowLast+1
    。这是必要的,因为
    lRowLast
    是在插入新行之前计算的。你的其他问题是额外的。所以请问一个新问题。在平衡行中显示您使用的实际代码和预期结果。因此,图片中的示例数据不正确,因为没有空行。我已经更新了我的代码。我想平衡文本的颜色应该是黑色。2.我在DEMAND行中有值,在COLLECTION行中有值,现在我想要BALANCE=DEMAND-COLLECTION,一个条目有两次COLLECTION,因此根据COLLECTION的发生情况,余额应该出现。你能告诉我宏代码吗。我有D2:S2的需求值D1:S1收集值,余额应该在下一行。请在这个问题上帮助我。关于你的第一个问题,请参阅