插入或删除行时更新公式

时间:2018-07-19 01:10:28

标签: excel vba excel-formula

我有一个用于衡量成本的电子表格。所有数据都存储在一个表中。我想从表中添加或删除行。

A,B和C列的数据验证列表存储在另一个选项卡上。 D和E列是单位数和工人数。 F,G和H是总行。 F是不含税的单位成本。都在表中,但是单元格M中有一个公式供单元格F中的公式引用。

表中的第一行是第7行,单元格M公式是

=IF(OR(ISBLANK(A7),ISBLANK(B7),ISBLANK(C7)),0,VLOOKUP(CONCATENATE(A7," ",B7," ",C7),Service_Price_List,2,FALSE))

我无法编码,但是找到了一些添加和删除行的代码。

表格中的公式已填满,因此它将公式更新为F,G和H列中的正确动态公式。当我添加一行但执行后第一次添加一行时,表格中的单元格会正确更新另一个操作是,添加了M列中的单元格,但引用错误。

您可能位于第8、12或13行等(任意行),但是它将把此公式放在单元格中

=IF(OR(ISBLANK(A7),ISBLANK(B7),ISBLANK(C7)),0,VLOOKUP(CONCATENATE(A7," ",B7," ",C7),Service_Price_List,2,FALSE)) 

是列表中第一个单元格的公式。如果随后我尝试添加另一行(单击添加行按钮两次),则该单元格将为空白。

随着插入和删除按钮的工作,我想我需要一种从M7复制公式的方法,该方法将是列表的顶部。还是最好通过VBA动态插入公式?

这是我的按钮添加一行的代码:

Private Sub CommandButton3_Click()
Dim ws As Worksheet
Set ws = ActiveSheet
Dim tbl As ListObject
Set tbl = ws.ListObjects("table3")
'add a row at the end of the table
tbl.ListRows.Add
End Sub

这是我的按钮删除行的代码:

Private Sub CommandButton4_Click()
Dim oLst As ListObject
Application.ScreenUpdating = False
ActiveSheet.Unprotect Password:=""

If ActiveSheet.ListObjects.Count > 1 Then
    For Each oLst In ActiveSheet.ListObjects
        With oLst
            If .Name = "Table3" Then
                If oLst.ListRows.Count > 1 Then
                number_of_columns = .ListColumns.Count
            oLst.ListRows(oLst.ListRows.Count).Delete
        End If
      End If
    End With
    Next
'ActiveSheet.Protect Password:=""
End If
End Sub

0 个答案:

没有答案