如何在带有过滤器的Excel表中使用小计函数

时间:2015-08-04 19:29:33

标签: excel vba excel-vba excel-formula

我有一个Excel表格,我每个月都有控制值。此表格还包含一列,用于显示该月份的总金额,因此,如果我1月份的值为5,2月份的值为10,则表示迄今为止的总数为'一月份为5,二月份为15岁。

现在我想在此表格中使用过滤器,因此,如果我取消选择1月份行,那么'总计到目前为止' 2月必须是10岁。

我的问题是使用小计功能时过滤器似乎不起作用,因为当我使用此功能时,并非所有值都出现。此外,在我取消选择其中一行之后,我再也无法选择它了。

这是我的原始表

This is my original table

这是过滤器的样子

How the filter looks like

应用过滤器后会发生这种情况

What happens after a filter

这是我用来构建表的代码:

<link rel="stylesheet" media="mediatype and|not|only (media feature)" href="mystylesheet.css">

这是我在上一段代码中调用的函数:

'Activate Sheet3
Worksheets("Completed Proposals").Activate

'Insert a new column for calculated values
Insert_Column

'Set the table address, name, and style
rng3 = "A2:E" & Sheet3.range("C2").End(xlDown).Row
Set tbl3 = ActiveSheet.ListObjects.Add(xlSrcRange, range(rng3), , xlYes)
tbl3.name = "MainTable3"
tbl3.TableStyle = "TableStyleMedium15"

'Change Sheet3 rows' height
Rows("3:" + CStr(Sheet3.range("A2").End(xlDown).Row)).RowHeight = 15

1 个答案:

答案 0 :(得分:0)

表的生成方式存在问题 - 它不包括最后一行(即使在第一个过滤器中,也缺少最后一个值)。我在范围中添加了一个额外的行,它按预期工作:

Option Explicit

Private Sub makeTable()
    Dim tbl As ListObject, tblRng As Range

    InsertColumn   'calculated values

    With Sheet3

        Set tblRng = .Range("A2:E" & .Range("C2").End(xlDown).Row + 1)

        Set tbl = .ListObjects.Add(xlSrcRange, tblRng, , xlYes, , "TableStyleMedium15")

        With tbl
            .Name = "MainTable3"
            .Range.Rows(3).RowHeight = 15
        End With
    End With
End Sub


Private Sub InsertColumn()
    Dim cellRange As String, cel As Variant

    With Sheet3

        .Range("E2").Value = "Total To Date" 'description

        cellRange = "E3:E" & .Range("C2").End(xlDown).Row

        For Each cel In .Range(cellRange).Cells
            cel.Value = "=Subtotal(109,D3:D" & cel.Row & ")"
        Next
    End With
End Sub

也许会有所帮助