精华内容
下载资源
问答
  • VBA多工作簿、工作表 多条件匹配-高级筛选
  • 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

    在这里插入图片描述

    展开全文
  • 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示例_高级筛选

    2018-06-27 08:27:36
    excel,vba,高级筛选示例代码及文件 Sub ɸѡ() ' ' ɸѡ Macro ' aa ¼Ç¼µÄºê 2006-3-7 ' ' Range("J7").Select Sheets("Ã÷ϸ±í").Range("A1:G22").AdvancedFilter Action:=xlFilterCopy, ...
  • 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...

    :自动筛选--获取可见行(数据)

    数据自动筛选,按第3列的缺勤进行筛选后,将筛选结果复制到F:H.

    Sub 获取可见数据()
        Dim LastRow As Long
        Dim Rng As Range, Rng1 As Range
        With ActiveSheet
            .UsedRange
            LastRow = .Cells.SpecialCells(xlCellTypeLastCell).Row '返回最后一行行号
            Set Rng = .Range("A1:C" & LastRow) '获取数据区域
            Rng.AutoFilter Field:=3, Criteria1:="缺勤"   '筛选B列,状态为缺勤的数据
            Set Rng1 = Rng.SpecialCells(xlCellTypeVisible) '获取可见行数据(筛选的数据)
            Rng.AutoFilter '关闭自动筛选
            Rng1.Copy .Range("F1") '复制可见数据到单元格F1
        End With
    End Sub

    其中,rng1的数据是否可以一次性装入数组中,如装入arr中。则:代码复制功能可以省略改为数组赋值:

    arr=rng1
    但实质上这样做,只能得到第一个area数据,因此,应循环多个area:

    For Each r In Rng1.Areas

    最终才能实现数组赋值:

    [f1].resize(ubound(arr),ubound(arr,2))=arr

    Sub 获取可见数据2()
        Dim LastRow As Long
        Dim rng As Range, Rng1 As Range
        Dim arr() As Variant
        
        With ActiveSheet
            .UsedRange
            LastRow = .Cells.SpecialCells(xlCellTypeLastCell).Row '返回最后一行行号
            Set rng = .Range("A1:C" & LastRow) '获取数据区域
            rng.AutoFilter Field:=3, Criteria1:="缺勤"   '筛选B列,状态为缺勤的数据
            Set Rng1 = rng.SpecialCells(xlCellTypeVisible) '获取可见行数据(筛选的数据)
            lc = Rng1.Columns.Count
            lr = Rng1.Cells.Count / lc
            ReDim arr(1 To lr, 1 To lc)
            For Each r In Rng1.Areas
                a = r
                
                For i = 1 To UBound(a)
                    m = m + 1
                    For j = 1 To UBound(a, 2)
                        arr(m, j) = a(i, j)
                        Debug.Print arr(m, j)
                    Next
                Next
            Next
            
            rng.AutoFilter '关闭自动筛选
            .[f1].Resize(lr, lc) = arr
        End With
    End Sub
    
    

     

    展开全文
  • VBA多条件筛选

    2019-01-18 17:15:04
    Visual Basic for Applications(VBA)是Visual Basic的一种宏语言,是微软开发出来在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
  • 获取筛选后行号总数 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

    展开全文
  • 原表格用于公司员工的工资表格,工资项目合并在一起并删除一些指定不要的项目,通过vba的宏运行快速表格数据重新关联筛选、计算、合并
  • VBA复制粘贴自动筛选后的内容

    万次阅读 2017-06-28 00:30:01
    VBA复制粘贴自动筛选后的内容: Sub sx() If Dir("D:\VBA\xx.xls") <> "" Then Workbooks.Open Filename:="D:\VBA\xx.xls" Else GoTo ERR End If Range("A1").Select With Selection
  • 利用VBA自动筛选示例

    2011-05-12 21:12:33
    这是一个利用VBA自动筛选的实例 附有数据库及全套代码
  • 如图所示,在网络抓取的数据,需要进行清洗,在清洗的过程中,需要用到筛选筛选之后,我需要选中O10单元格,填充公式(但是因为文档每次都不...返回结果是10 上面的2:3000根据个人需求修改(不能直接写rows()...
  • Sub test() MsgBox (Rows("2:" & Rows.Count).SpecialCells(12).Row)...s MsgBox visrange End Function Sub test() Call visrange(Range("A2:C20")) End Sub 这个是测试的原表格,我做了筛选,如下 运行程序结果如下:
  • D2") '筛选并获取满足条件的数据 rngData.AdvancedFilterAction:=xlFilterCopy, _ CriteriaRange:=rngCriteria, _ CopyToRange:=wksFilter.Range("A1") End Sub 运行代码结果如下图5所示。 图5 高级筛选还可以...
  • excel vba筛选

    万次阅读 2017-02-10 09:45:32
    1、筛选vba 代码为 set rg=range("a1:a100") rg.AutoFilter Field:=1, Criteria1:="内容" rg 为筛选区域, Criteria1为筛选的值,比如在A1列内筛选内容为北京区的 ,则 Criteria1="北京区" 2、高级筛选 ...
  • Excel VBA 多重筛选

    千次阅读 2019-08-13 02:40:29
    Excel VBA 多重筛选 Sub FilterOnValues() 'PURPOSE: Filter on specific values Dim rng As Range Set rng = ActiveSheet.Range("B7:D18") FilterField = WorksheetFunction.Match("Country", rng.Rows(1), 0) ...
  • Excel VBA 筛选

    2012-08-20 08:37:49
    vba的代码来实现excel的筛选功能,在制作excel模版有大量数据的情况下非常有用,有效的提高查询速度
  • vba得到经过自动筛选过的行数

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

    千次阅读 2019-08-26 21:29:13
    国外网站介绍VBA autofilter 很不错 https://trumpexcel.com/vba-autofilter/#Example-Multiple-Criteria-With-Different-Columns 说实话国外的网站对于VBA的资料相对于国内来说内容更丰富更具有实用性。当然是...
  • Excel通过VBA实现筛选多选功能

    千次阅读 2019-01-18 17:19:46
    今天下午一直比较纠结,想形成Excel筛选多选功能,发现通过 数据–数据验证–数据验证功能,只能实现 序列单选功能,如图: 而我想实现多选功能,肿么办?网上搜索,大部分是ExcelHome技术网站上大牛蓝桥玄霜的示例...
  • 字母筛选单词vba脚本

    2019-04-17 16:10:33
    填写任意字母即可匹配出单词库中由这些字母组成的单词。 库中的单词可以按照相同的格式任意添加。 打开excel会有提示框出现,选择使用宏即可。
  • vba关于取消自动筛选:

    千次阅读 2020-05-20 21:08:27
    关于取消自动筛选: If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData 从蓝桥玄霜版主那看到了,先判断是否做了筛先. ================= 取消自动筛选: Sheets("sheet1").AutoFilterMode = False '注意这里...
  • ActiveSheet.AutoFilterMode = False
  • excel高级筛选vba代码

    2015-06-08 11:46:39
    编写的高级筛选代码,可以实现办公自动化,效率比较高。对于其他数据记录,改改参数就可以,轻松搞定。
  • 医疗服务单-到日期查询(VBA高级筛选),多条件查询,源码可见
  • 将后面的表格数据进行筛选,然后统一放置总表中浏览(操作简单明了,不懂的可以留言问我)
  • 随着字典讲解的深入,我们发现字典真的很神奇,在VBA代码中,给人以十分清爽的感觉,在这套数组与字典解决方案中,我会尽可能的把经常用到的实例多多讲解给大家,让大家对于字典的理解更加深入.虽然这块内容利用其它方案都...
  • VBA筛选AutoFilter用法

    万次阅读 多人点赞 2017-06-24 23:42:10
    在面对大量数据时,我们可以使用Excel的筛选功能,滤出我们需要的信息。在本文中,我们先从Excel中的“筛选”命令谈起。  如下图所示的工作表,将活动...上述操作录制的VBA代码如下: Sub Macro1() ' ' Macro1
  • Range.AutoFIlter方法可以进行自动筛选,语法结构如下: Range.AutoFilter(Field,Criteria1Operator,Criteria2,VIsibleDropDown); 参数说明: Field可选,筛按33选的字段的整型偏移量,;例如筛选A列的字段则取值...
  • 今天和大家要说的是VBA数组的应用,上篇文章我们说的是数组的基础知识点,有不明白的小伙伴可以点击链接进行知识点回顾Excel VBA 数组基础知识,初学者不可不学的关键知识,今天主要说说数组的几个操作方法,这个是...
  • 工作中,筛选条件肯定不止一个,有时候要筛选第一列,第二列,而不是某一个固定的列的条件 以上的ABCDEF列都有可能被当成筛选对象 代码如下 Sub chaifenshuju() Dim sht As Worksheet Dim k, i, j As Integer Dim irow ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,791
精华内容 1,116
关键字:

vba对筛选后的结果