在我的Excel工作表中,我正在应用一个过滤器,然后我计算可见行。
我使用了以下代码,但我得到了错误的计数。当我xlCellTypeVisible
时,它显示“12”记录而不是“14”记录,visibleTotal
变量显示“0”计数。
Dim ws As Worksheet
Dim rng As Range
Dim visibleTotal As Long
'xlwkbOutput.Sheets("Sheet1")
Set rng = xlwkbOutput.Sheets("Sheet1").Range("A1:T" & lastRow&)
xlwkbOutput.Sheets("Sheet1").AutoFilterMode = False
rng.AutoFilter field:=1, Criteria1:="#N/A"
visibleTotal = Application.WorksheetFunction.Sum(rng.SpecialCells(xlCellTypeVisible))
' print to the immediate window
Debug.Print visibleTotal
答案 0 :(得分:1)
也许您可以使用SUBTOTAL
功能。当您有过滤值时,经常使用此功能。您可以将代码调整为:
1 AVERAGE
2 COUNT
3 COUNTA
4 MAX
5 MIN
6 PRODUCT
7 STDEV
8 STDEVP
9 SUM
10 VAR
11 VARP
SUBTOTAL参数列表:
var canvas=new fabric.Canvas('canv');
var iTextSample = new fabric.IText('BOX', {
left: -200,
top: 20,
fontFamily: 'Helvetica',
fill: '#333',
lineHeight: 1.1,
styles: {
0: {
0: { textBackgroundColor: 'rgba(0,0,255,0.3)' , fontSize: 420 },
1: { textBackgroundColor: 'rgba(0,255,0,0.3)', fontSize: 420 },
2: { textBackgroundColor: 'rgba(255,0,0,0.3)', fontSize: 420 }
}
}
});
canvas.add(iTextSample);
有关此功能的更多信息,您可以查看链接。
HTH;)
答案 1 :(得分:1)
你的叙述是关于“计算可见行数”,而你的代码显示SUM()
函数
无论如何这里是你如何获得这两个数字,请记住Autofilter()
将始终过滤标题行,即它被调用的范围的第一行
Option Explicit
Sub main()
Dim visibleTotal As Long, visibleRows As Long
With xlwkbOutput.Sheets("Sheet1") '<-- reference your worksheet
.AutoFilterMode = False
With .Range("A1:T5") '<-- reference its relevant range
.AutoFilter field:=1, Criteria1:="#N/A" '<-- apply filter: first row (headers) will always be selected
visibleRows = Application.WorksheetFunction.Subtotal(103, .Resize(, 1)) - 1 '<-- count visible rows, excluding headers (always filtered)
If visibleRows > 0 Then visibleTotal = Application.WorksheetFunction.Sum(.Offset(1).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible)) '<-- sum all visible cells, excluding headers (always filtered)
' print to the immediate window
Debug.Print visibleTotal
End With
.AutoFilterMode = False
End With
End Sub
答案 2 :(得分:0)
我不知道,你不想使用Count函数吗?很难说,但这种行为对我来说似乎是正确的。当我们没有数据时,很难说。尝试在工作表中对可见单元格应用sum函数,并检查它返回的内容,如果它与宏相同。