【问题标题】:Add Rows from the Same Range, no matter when the range location从同一范围添加行,无论范围位置何时
【发布时间】:2021-02-09 15:41:55
【问题描述】:

我有 3 张桌子用于房地产项目。每个表都是房地产属性的简单总和,例如对于公寓,1 个物业有 100 个单位,第 2 个物业有 200 个单位,总和为 300 个单位。下一个表也是一个简单的求和,但在第一个表中对相同的房地产属性有不同的输入,例如1个物业(同上)有50个一房单位和50个二房单位; 2楼有100个一房单位和100个二房单位等。

我面临的挑战是我想在每张桌子上添加另一个房地产。我的宏是一个简单的“EntireRow.Insert”函数,但我总是需要新属性直接高于所有属性的总和。当我进行插入时,它会将我的参考单元格向下移动。如何始终从相同的求和范围插入新行,即使当我插入更多属性时该求和范围向下移动?

代码如下。第一次运行宏后,我的B10:E10 将切换到B11:E11。如果我需要再做一次,它不会成功,因为在运行第一个宏之后有一个新的B10:E10Worksheets("Transaction").Range("B10:E10").EntireRow.Insert

【问题讨论】:

  • 我建议在总和和数据之间留一个空白行,包括总和中的空白行并在空白行周围插入新行。
  • 谢谢,我喜欢这个主意。我如何使空白行始终具有特定的参考范围?当我插入一行时,该范围会向下移动到新的引用。
  • 例如,如果您的数据在第 2 到第 10 行,则将总计放在第 12 行,在第 11 行留一个空白行。必须将第 2 行到第 11 行添加到总计行中。无论何时,您插入一个新的行上方的空白行,空白行将移动到第 12 行,总计将模式到第 13 行,总计公式现在将对第 2 行和第 12 行求和。

标签: excel vba insert absolute


【解决方案1】:

在最后一行插入行

  • 假设最后一行将包含总计,以下每次都会在其上方插入一行。

  • 请注意,仅当工作表被过滤时,这可能会失败。

  • 总计行中的初始公式可能类似于:

    =SUM(B$9:OFFSET(B10;-1;0))
    

    如果单元格B9 包含标题(标题)。

守则

Option Explicit

Sub insertRowAboveLast(FirstCellRange As Range)
    If Not FirstCellRange Is Nothing Then
        Dim cel As Range
        With FirstCellRange.Cells(1)
            Set cel = .Resize(.Worksheet.Rows.Count - .Row + 1) _
                .Find("*", , xlFormulas, , , xlPrevious)
            If Not cel Is Nothing Then
                cel.EntireRow.Insert
            End If
        End With
    End If
End Sub

Sub TESTinsertRowAboveLast()
    insertRowAboveLast ThisWorkbook.Worksheets("Sheet1").Range("B10")
End Sub

【讨论】:

    猜你喜欢
    • 2015-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多