我有一个Excel表格,我每个月都有控制值。此表格还包含一列,用于显示该月份的总金额,因此,如果我1月份的值为5,2月份的值为10,则表示迄今为止的总数为'一月份为5,二月份为15岁。
现在我想在此表格中使用过滤器,因此,如果我取消选择1月份行,那么'总计到目前为止' 2月必须是10岁。
我的问题是使用小计功能时过滤器似乎不起作用,因为当我使用此功能时,并非所有值都出现。此外,在我取消选择其中一行之后,我再也无法选择它了。
这是我的原始表
这是过滤器的样子
应用过滤器后会发生这种情况
这是我用来构建表的代码:
<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
答案 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
也许会有所帮助