首页 > 解决方案 > 有没有可能添加新行并插入更新的公式的方法?

问题描述

在我的一个小项目上寻找一些帮助。VBA 编码不是我的事,现在才开始学习,比我想要的晚。

背景故事:我从事商业管理工作,研究了很多项目管理财务。我发现添加新公式然后向下拖动更新的公式非常慢。我一直在寻找如何在添加 Concatenate 公式以提供唯一 ID 的基础上添加一个连续的新行。我做了一些研究,发现了一个文件,它能够为每一行添加值为 +1 的行。

目标:

主要目标- 如果有人可以帮助我更新公式(E 列上的连接公式),此时它是直接复制和粘贴,因此它不会根据新行进行更新。有人可以帮我修改代码吗?

次要目标-此外,它可能是一种范围,但是是否已经有代码可以要求某种文本框以提供多个新行并复制适当的公式?

感谢您的帮助!

请看下面的代码:

Sub Button1_Click()

    Dim wsS1 As Worksheet
    Dim lRows As Long
    Dim Iint As Integer
     
    Set wsS1 = Worksheets("Sheet1")
    lRows = wsS1.Range("B65536").End(xlUp).Row
     
    If wsS1.Range("B5").Value = "" Then
        wsS1.Range("B5").Value = 1
        wsS1.Range("G5").Formula = "=IF(AND(D4=""""),"""",IF(AND(D4<>""""),$E4))"
        wsS1.Rows(4).EntireRow.Copy
        wsS1.Rows(5).PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
            False, Transpose:=False
        Selection.Interior.ColorIndex = xlNone
        Selection.Font.Bold = False
        Rows(5).RowHeight = 12.75

    End If
    
    For Iint = 5 To lRows
        If wsS1.Range("B" & Iint + 1).Value = "" Then
            wsS1.Rows(Iint).EntireRow.Copy
            wsS1.Rows(Iint + 1).PasteSpecial xlFormats
            wsS1.Rows(Iint + 1).PasteSpecial xlFormula
            wsS1.Range("G" & Iint + 1).Formula = wsS1.Range("G" & Iint).Formula
            wsS1.Range("C" & Iint + 1).Formula = wsS1.Range("C" & Iint).Formula
            wsS1.Range("D" & Iint + 1).Formula = wsS1.Range("D" & Iint).Formula
            wsS1.Range("E" & Iint + 1).Formula = wsS1.Range("E" & Iint).Formula
            wsS1.Range("B" & Iint + 1).Value = wsS1.Range("B" & Iint).Value + 1
        End If
    Next Iint

End Sub

标签: excelvba

解决方案


推荐阅读