vba 筛选后计算行数

作者&投稿:段褚 (若有异议请与网页底部的电邮联系)
EXCEL中自动筛选后的行数怎样显示?~

筛选后,选中被筛选的那一列,下方信息栏会有“计数”显示,就能看出是多少行。也可以直接把筛选的数据复制出来查看,具体如下:
1、第一步,下图中的表格数据是经过筛选后的数据,复制这些数据,如下图所示,然后进入下一步。




2、其次,完成上述步骤后,需要按CTRL + G调出“定位”对话框,如下图所示,然后进入下一步。




3、接着,完成上述步骤后,在对话框中单击“定位条件”按钮,如下图所示,然后进入下一步。



4、然后,完成上述步骤后,单击“可见的单元格”选项,然后单击确定,如下图所示,然后进入下一步。



5、最后,完成上述步骤后,按“CTRL + C”进行复制。 然后,单击另一个空单元格,按“CTRL + V”,然后粘贴数据,如下图所示。这样,就可以直观地看到行数了。



根据zrqihg的提示,编制了下面的函数,总行数是数组的元素个数-2(因为0我没使用,1是标题行)
函数返回的是一个数组,从元素2开始是各行的行号。
获得筛选结果的行号Sub 函数调用() Dim 行号 As Variant 行号 = GetRowNum("A") '所得行号是一个数组,其中行号(0)未使用,如查筛选的第一行是标题的话,行号(1)是标题所在行,所以你的结果是从行号(2)开始的。End SubFunction GetRowNum(Col As String) As Variant Dim i As Long Dim rng As Range Dim rng2 As Range Dim RowS() i = 1 '将筛指定列的可见数据赋给rng,12是可见,2是常量,23是16+4+1+2 Set rng = Range(Col & ":" & Col).SpecialCells(12).SpecialCells(2, 23) ReDim RowS(0 To rng.Count) For Each rng2 In rng RowS(i) = rng2.Row i = i + 1 Next GetRowNum = RowSEnd Function

当筛选结果为空时,出现了Range("a65536").End(xlUp).Row=3,小于了你的首行值4,所以你再使用Range("a4:a" & Range("a65536").End(xlUp).Row)也就是Range("a4:a3")就出错了。
如果修改的话你最好在使用这个range时先判断Range("a65536").End(xlUp).Row是否大于等于首行值4,只有大于等于才能用,如果小于4就说明筛选结果为空。
修改代码如下:
Dim i As Integer
i = Range("a65536").End(xlUp).Row
If i < 4 Then
MsgBox "已筛选出来的记录行数一共0行"
Else
For Each cel In Range("a4:a" & i).SpecialCells(xlCellTypeVisible)
MsgBox "已筛选出来的记录行数:" & cel.Row
Next
MsgBox "已筛选出来的记录行数一共" & Range("a4:a" & i).SpecialCells(xlCellTypeVisible).Count & "行"
End If


赣榆县17870348793: excel 如何查看筛选之后数据有几行 -
杨师元胡: 1. 筛选后,选中被筛选的那一列,下方信息栏会有“计数”显示,就能看出是多少行. 需要注意的是,标题行也会被统计在内. 2. VBA获取筛选之后数据有几行的方法(含标题行): Sheet1.UsedRange.Columns(1).SpecialCells(xlCellTypeVisible).Cells.Count

赣榆县17870348793: VBA编写程序,实现筛选计数功能 -
杨师元胡:Option ExplicitSub 计数() Application.ScreenUpdating = False Dim i%, arr, d As Object, d1 As Object arr = [A1].CurrentRegion Set d = CreateObject("Scripting.Dictionary") Set d1 = CreateObject("Scripting.Dictionary") For i = ...

赣榆县17870348793: 在VBA里如何获取当前工作表里数据的行数和列数 -
杨师元胡: iRows=activesheet.usedrange.rows.count iColumns=activesheet.usedrange.Columns.count'如果表格前面的几行或几列可能是空的,需要获得最下面的行数和最右面的列数: with activesheet.usedrangeiEndRow=.rows.count+.row-1iEndColumn=.Columns.count+.column-1 end with

赣榆县17870348793: 求一在excel中使用VBA对数据进行筛选后,进行计算的小程序 -
杨师元胡: excel自动筛选可以对多列多条件进行筛选,但是前提是不同列的条件间是“且”的关系(即同时满足).如果不同列间条件为“或”关系,则可以用excel 高级筛选来完成.1.自动筛选:选中整个数据列表(有些人就直接鼠标点在数据表第一行,其实这是不严谨的,如果表格内有空行,就会只对空行上数据进行筛选)--数据--筛选--自动筛选--OK.2.高级筛选:首先要在EXCEL某区域内进行条件设置(一般在数据表格上面空出几行来),把要设置筛选条件的数据表列字段列在那里,然后在下方设置条件,“且”关系在同一行.“或”关系在不同行,然后点击--数据--筛选--高级筛选……,进行设置就OK了.

赣榆县17870348793: 各位高手,请教一下 用vba 如何统计一个单元格内的字的行数 当然这个单元格的格式是“自动换行” -
杨师元胡: 可以这样来完成:Rows("1:1").SelectMsgBox Selection.RowHeight 以上两行代码,是获得excel第1行的行高. 你可以先获取某一个不带有换行的标准行高,然后将要测试的某行的行高除以标准行高,得到的商就是行数了.

赣榆县17870348793: 请问我要写一段excel下的vba,功能是查找包含某一字段的单元格,并返回其行数,应该怎么写呢? -
杨师元胡: .find (what:="许嵩",lookat:=xlpart) 好象是这样吧 给一个在用的具体例子吧! Dim F As Boolean Set Rng = .Rows("1:1").Find(what:="责任部门", lookat:=xlWhole) '将上面没在有全部再出来一次 If Not Rng Is Nothing Then k = Rng....

赣榆县17870348793: Excel中如何用VBA判断行数? -
杨师元胡: VBA中可以用CurrentRegion.Rows.Count属性获得连续的数据区域的行数'选择A2单元格周围连续有数据的区域,并将其行数值赋予HROW HROW=Sheets("sheet1").[A2].CurrentRegion.Rows.Count

赣榆县17870348793: VBA如何计算一列中相同值的行的行数 -
杨师元胡: 不知道你是不是要统计每个表中的相同值多少,如果是计算这个表中列相同值的个数直接用SQL语句:count(select(```))哪怕是多表连合查询也行!如果只是要找到某个表中一个值在另一个表中的位置就麻烦点,要从第一个表中找到这个值,然后用循环找到这到这个值在目标表中的行数!

赣榆县17870348793: 利用vba语言将excel的信息进行筛选,筛选出符合要求的行和列并进行整理统计.希望您在百忙之中予以解答. -
杨师元胡: 筛选后求和的公式是 =subtotal(9,b2:b99)对ab列进行筛选,筛选a列的“a”,并求和的代码如下: sub xxx() activesheet.range("$a$1:$b$999").autofilter field:=1, criteria1:="a" dim xrng as range set xrng = range("b2:b999") msgbox worksheetfunction.subtotal(9, xrng) end sub

赣榆县17870348793: Word VBA 如何获取当前选择区总行数? -
杨师元胡: Sub Macro2() Dim r, p, r0, p0, rr, pp p= Selection.Information(wdActiveEndPageNumber) '当前页码 r= Selection.Information(wdFirstCharacterLineNumber) '当前行'数行数 p0 = p rr = r Do Selection.MoveDown Unit:=wdLine, Count:=1 pp = Selection...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网