精华内容
下载资源
问答
  • VBA获取筛选后记录数量

    千次阅读 2020-01-28 14:36:59
    这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、...

    Excel的筛选是一个常用功能,即使是入门不久的小白也会使用。但是在VBA处理数据时,如果工作表中的数据表使用了筛选,那么使用VBA如何知道到底有多少行处于显示状态呢?

    如下图数据表中有12行数据(不包括标题行),经过筛选后,在状态条左侧可以轻松地知道:有4条记录符合筛选规则。
    在这里插入图片描述
    下面看看如何使用代码获取筛选后的记录数量。

    Sub RowCntAfterFilter1()
        Dim rng As Range
        Dim c As Range
        Dim n As Integer
        Set rng = [a1].CurrentRegion 
        For Each c In rng.SpecialCells(xlCellTypeVisible).Areas
            n = n + c.Rows.Count
        Next c
        MsgBox "筛选后数据行数为:" & n - 1
    End Sub
    

    【代码解析】
    第5行代码使用CurrentRegion获取当前数据区域,并赋值给对象变量rng。
    第6行到第8行代码使用For...Next循环遍历当前数据区域,其中SpecialCells(xlCellTypeVisible)获取可见数据区域,也就是符合筛选添加的数据行。
    第6行代码中的Areas也可以使用Rows代替,对于连续的可见行属于同一个Area,因此使用Areas可以减少循环次数,提升代码效率。
    第7行代码进行累加计数统计行数。
    第9行代码输出结果如下图所示,注意由于数据标题行也包含在CurrentRegion中,因此显示结果时需要使用n - 1

    在这里插入图片描述

    展开全文
  • 获取筛选后行号总数 Sub get_total_filer_count() Dim rngCell As Range Dim lngRowCnt As Long For Each rngCell In [a1].CurrentRegion.SpecialCells(xlCellTypeVisible).Areas lngRowCnt = lngRowCnt + rngCell....

    获取筛选后行号总数

    Sub get_total_filer_count()
      Dim rngCell As Range
      Dim lngRowCnt As Long
      For Each rngCell In [a1].CurrentRegion.SpecialCells(xlCellTypeVisible).Areas
          lngRowCnt = lngRowCnt + rngCell.Rows.Count
      Next rngCell
      MsgBox "filtered row count is " & lngRowCnt - 1
      Set rngCell = Nothing
    End Sub
    

    参考
    https://jingyan.baidu.com/article/8065f87f48fa84233124982c.html

    获取筛选后行号

    Sub test()
        MsgBox (Rows("3:" & Rows.Count).SpecialCells(12).Row)
    End Sub
    

    在这里插入图片描述
    在这里插入图片描述
    参考
    https://blog.csdn.net/STR_Liang/article/details/106236246

    区域求和

    Sub mynz()
    
    Dim rng, rngs As Range
    
    Dim d
    
    Set rngs = Range("G9:H10")
    
    For Each rng In rngs
    
    If rng > 0 Then d = d + rng
    Next
    
    MsgBox rngs.Address(0, 0) & "range sum" & d
    
    End Sub
    

    获取筛选后数据行号

    Sub find_filter_row_number()
    Dim cell As Range
    Dim i As Integer
    
    i = Range("a65535").End(xlUp).Row
    
    For Each cell In Range("a3:a" & i)
    If Rows(cell.Row).Hidden = False Then MsgBox cell.Row
    Next cell
    End Sub
    

    参考
    https://baijiahao.baidu.com/s?id=1655338803344359358&wfr=spider&for=pc

    http://club.excelhome.net/thread-346219-1-1.html

    展开全文
  • UsedRange.AutoFilter.Range.SpecialCells(12) 只能获得标题行 UsedRange.Offset(1, 0).SpecialCells(12) 添加Offset跳过空行,可以正确获取筛选区域
     UsedRange.AutoFilter.Range.SpecialCells(12)

    只能获得标题行

    UsedRange.Offset(1, 0).SpecialCells(12)

    添加Offset跳过空行,可以正确获取筛选区域

    展开全文
  • VBA复制筛选后的内容

    千次阅读 2021-04-05 19:33:15
    注意此代码背景是筛选A列值为“lala”的数据,拷贝A至AA列所有数据 Function CopySelectValue(SheetsName1 As String,) Dim MaxRow, MinRow As Integer Sheets(SheetsName1).Activate Range("A1").Select ...

    注意此代码背景是筛选A列值为“lala”的数据,拷贝A至AA列所有数据

    Function CopySelectValue(SheetsName1 As String,)
        Dim MaxRow, MinRow As Integer
        Sheets(SheetsName1).Activate
        Range("A1").Select
        Selection.AutoFilter
        ActiveSheet.Range("$A$1:$AA$" & i).AutoFilter Field:=1, Criteria1:=“lala”   '进行筛选
        Range("A1").Select
        Selection.Offset(1, 0).Select
        MinRow = Selection.Row   '获取筛选后最上方单元格横坐标
        MaxRow = [a1000].End(xlUp).Row   ’1000可以根据需求改大;此举目的是为了获取筛选后数据最后一行行坐标
        If MinRow > MaxRow Then
            Range("A1").Select   '即没有筛选到任何内容,随便进行一个无关操作
        Else:   ' 小于等于都可以
            Range("A" & MinRow & ":AA" & MaxRow).Select
            Selection.Copy
        End If
    End Function
    
    展开全文
  • vba得到经过自动筛选过的行数

    千次阅读 2017-08-10 13:55:04
    利用excel的“录制宏”的功能,通过vba得到经过自动筛选过的行数
  • excel vba筛选

    万次阅读 2017-02-10 09:45:32
    excel 中有两个筛选 1、筛选,vba 代码为 ...rg 为筛选区域, Criteria1为筛选的值,比如在A1列内筛选内容为北京区的 ,则 Criteria1="北京区" 2、高级筛选  Rg.AdvancedFilter Action:=xlFilte
  • xlCellTypeBlanks 4 空单元格 xlCellTypeComments -4144 含有注释的单元格 xlCellTypeConstants 2 含有常量的单元格 xlCellTypeFormulas -4123 含有公式的单元格 xlCellTypeLastCell 11 已用区域中的最后一个单元格 ...
  • VBA 筛选结果存入数组

    千次阅读 2020-11-20 20:15:25
    数据自动筛选,按第3列的缺勤进行筛选后,将筛选结果复制到F:H. Sub 获取可见数据() Dim LastRow As Long Dim Rng As Range, Rng1 As Range With ActiveSheet .UsedRange LastRow = .Cells.SpecialCells...
  • 或者从工作表的一个单元格区域复制到同一工作表中另外的单元格区域,或者从工作表的一个单元格区域复制到另一工作表中的单元格区域,甚至从工作表的一个单元格区域复制到不同工作簿中的工作表单元格区域。...
  • VBA-自动筛选符合条件的数据

    千次阅读 2020-03-09 20:20:11
    2.我们可以看到符合条件---即入住日期刚好满7天的数据信息被筛选出来 3.代码如下 Option Explicit Dim w0 As Workbook Dim book0 As Worksheet Dim book1 As Worksheet Dim r0 As Range Dim r1 As Range Sub 自动...
  • 1、EXCEL-开发工具中Visual Basic 2、Sheet1上右键插入模块 ...5、四个函数的,第一个参数是格式参照的单元格,第二个参数是求和或计数的区域。  例:=SumByFontColor(J45,M35:P41)
  • VBA筛选AutoFilter用法

    万次阅读 多人点赞 2017-06-24 23:42:10
    在面对大量数据时,我们可以使用Excel的筛选功能,滤出我们需要的信息。在本文中,我们先从Excel中的“筛选”命令谈起。  如下图所示的工作表,将活动...上述操作录制的VBA代码如下: Sub Macro1() ' ' Macro1
  • VBA代码实例---高级筛选

    万次阅读 2017-04-10 21:06:33
    首先介绍Excel工作簿的内容进行说明:一个工作簿两个工作表,学生/高级筛选,七个字段;... '判断高级筛选条件区域有多少行 Dim x As Integer x = Sheets("高级筛选").Range("A1").CurrentRegion.Rows.
  • 如上图,想在数据透视表中只显示红色区域的内容,手动勾选就比较繁琐。 实现思路: 先复制红色的内容。 鼠标停留在数据透视表【型号】列的任意数据上(通过该单元格可以获取数据透视表和字段) 由于数据透视表...
  • 第五篇数组和引用 01 设置动态计算区域OFFSET函数 02 设置间接引用区域INDIRECT函数 03 什么是数组、数组运算和数组公式 04 函数劳模SUMPRODUCT 05 一对多查询组合函数 06 动态信息CELL函数 07 筛选状态下的数据...
  • VBA是啥?VBA有啥用?我该不该学习VBA?学习VBA之前我该具备哪些知识?学习VBA何时才是个头呀?这是使用Office软件(当然主要以Excel为主)不同程度的同学会问到的不同的问题。至今仍然记得,大学在一家公司实习阶段,...
  • Sub 数据整理() Dim iAreaCount As Integer Dim i As Integer Dim sTemp, sTemp2 As String Dim iTemp As Long Dim bFind As Boolean Dim ValueName() As String Dim ValueValue() As Do...
  • 函数作用:统计经筛选后符合条件的记录条数...........87 '73.函数作用:复制单元格列高与栏宽.....................87 '74.函数作用:取消隐藏工作表(包括vba Project工程保护的)88 '75.函数作用:删除单元格自定义...
  • VBA数组

    千次阅读 2019-05-03 01:49:57
    VBA数组详解
  • 前面两篇博客,我们介绍了VBA和使用VBA获取当前工作表和另一个工作簿的工作表中的数据。这篇我们来说说如何使用VBA模糊查找当前工作表中有用的数据。我们有时会遇到这样的情况。我们手头有很多很多老的excel文件,...
  • Excel筛选后数据行数

    千次阅读 2018-07-29 12:21:03
    但是VBA中没有提供直接访问这个消息的途径,难道需要逐行去判断B列的数据进行统计!?这简直就是掰着手指头数数呀,肯定有其他解决方法。 听说使用Range(...).SpecialCells(xlCellTypeVisible)可以定位可见...
  • 如图所示,本例希望能够从员工列表中随机抽取5名员工的记录,该如何用VBA实现? 员工编号 姓名 部门 员工编号 姓名 部门 0006 程建华 管理部 0314 张宏 销售部 0009 ...
  • 在Excel中使用VBA筛选数据

    万次阅读 2004-11-27 15:34:00
    你又喝了一口咖啡,自言自语道,比起手工筛选,毕竟很快了。 但不就不到 1 万条纪录吗, Excel 的 VLOOKUP 等内置函数一眨眼也就计算好了啊。 4.1.   通过数组 数组要比 Range 函数快一些,你把程序改了...
  • Database=" & ph & f & "].[" & SheetName & "] where f1 is not null" '获取第1列:f1 或 [第一列的列名] 'sql = "select f1,f3 from [" & SheetName & "] where f1 is not null" '获取第1列:f1 或 [第一列的列名]...
  • 想用vba选中一列中第一个有值的单元格将其填色,现在不知如何选中,求助</p>
  • 好用的几种情况--只能试往下往右尽量大的...end() 会查出 非空区域 / 空区域的边界 Sub test121() '某列 Debug.Print "C列的上下限" '查一列的上限比较少 Debug.Print Range("c1").End(xlEnd).Row '这样不行,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 646
精华内容 258
关键字:

vba获取筛选后区域