VBA经典应用69例:基于文本条件的一般筛选及条件OR筛选 |
您所在的位置:网站首页 › excel中筛选出符合特定条件的文本 › VBA经典应用69例:基于文本条件的一般筛选及条件OR筛选 |
《VBA经典应用69例》(版权10178981),是我推出的第九套教程,教程是专门针对初级、中级学员在学习VBA过程中可能遇到的案例展开,这套教程案例众多,紧贴“实战”,并做“战术总结”,以便大家能很好的应用。教程的目的是要求大家在实际工作中要利用好VBA。本套教程共三册六十九个专题,今日内容:VBA经典应用69例:基于文本条件的一般筛选及条件OR筛选 【分享成果,随喜正能量】感恩入怀,一种平和的情愫在血液中缓缓流淌,云卷云舒,去留无意,花开花落,不再黯然神伤。如此境界,仿似置身于云水禅心之境,一念清幽,何惧风雨,细细品味时光的静好,不言山高水远,只念风过留香。。 应用4 VBA中的自动筛选(Autofilter)大家好,我们这个专题讲解VBA中的自动筛选(Autofilter),一般情况下,我们学习VBA之前都比较熟悉了Excel的利用,为了进一步提高效率,才学习VBA,把VBA宏派上用场。在Excel工作表中,我们可以轻松地根据标准功能,使用"数据"菜单内的"筛选"功能,完成多种多样的筛选以处理各式各样的信息。我们这讲的内容是利用VBA完成自动筛选。 对于应用而言,从小数据集合中过滤掉必要的信息可以使用"筛选"功能。但是,如果你希望根据多个标准和条件过滤大量数据,利用VBA自动过滤器功能可以更轻松。它可以为你节省大量的时间和精力。例如,假设你希望筛选下拉列表中的某些信息(基于多个标准),然后将结果复制/粘贴到其他工作表中。如果手动完成,这似乎是一项非常耗时的任务。在这种情况下,VBA可以帮助你自动化完成这个过程。 2 基于文本条件的一般筛选数据我们看下面的工作表: 让我们来研究一下上图中给出的数据集。假设我们希望根据"性别"列筛选上述数据集。要实现此筛选,并得到“性别=男”的数据,我们将以以下方式编写代码: Sub mynzA() '清空数据 Sheets("SHEET1").Select Cells.ClearContents With Sheets("Sheet2").Range("A1") '筛选需要的数据 .AutoFilter Field:=3, Criteria1:="男", VisibleDropDown:=False '将筛选后的数据复制到指定位置 .SpecialCells(xlCellTypeVisible).Copy Sheets("SHEET1").Range("A1") '去掉筛选 .AutoFilter End With End Sub 代码截图: 代码的解读: ① With Sheets("Sheet2").Range("A1") .AutoFilter Field:=3, Criteria1:="男", VisibleDropDown:=False 以上代码是以相对于“A1”开始,从左侧字段开始的第三个字段设为筛选字段。查找的是此字段的值为“男”的数据 ② '将筛选后的数据复制到指定位置 .SpecialCells(xlCellTypeVisible).Copy Sheets("SHEET1").Range("A1") 以上代码将筛选后的数据复制到Sheets("SHEET1").Range("A1")。其中 Range.SpecialCells方法返回一个Range对象, 该对象代表与指定类型和值匹配的所有单元格。 语法:expression.SpecialCells (Type, Value) 其中expression 一个表示 Range 对象的变量。 参数: a Type 必需 XlCellType 要包含的单元格。 b Value 可选 Variant 如果Type为xlCellTypeConstants或xlCellTypeFormulas, 则此参数用于确定要在结果中包含哪些类型的单元格。将这些值相加可返回多种类型的单元格。默认情况下,将选择所有常量或公式,无论类型如何。 XlCellType 枚举值: 1) xlCellTypeAllFormatConditions -4172 任意格式的单元格。 2) xlCellTypeAllValidation -4174 含有验证条件的单元格。 3) xlCellTypeBlanks 4 空单元格。 4) xlCellTypeComments -4144 含有注释的单元格。 5) xlCellTypeConstants 2 含有常量的单元格。 6) xlCellTypeFormulas -4123 含有公式的单元格。 7) xlCellTypeLastCell 11 所用区域中的最后一个单元格。 8) xlCellTypeSameFormatConditions -4173 格式相同的单元格。 9) xlCellTypeSameValidation -4175 验证条件相同的单元格。 10)xlCellTypeVisible 12 所有可见单元格。 SpecialCells(xlCellTypeVisible).Copy 是指可以复制所有可见的单元格
③ '去掉筛选 .AutoFilter 在原数据中去除筛选格式。 最后我们看代码的运行结果: 仍是上表中的数据: 我们要取得年龄为12和8的数据,利用VBA该如何得到呢? 看我给出的代码: Sub mynzB() '清空数据 Sheets("SHEET1").Select Cells.ClearContents With Sheets("Sheet2").Range("A1") '筛选需要的数据 .AutoFilter Field:=2, Criteria1:=12, Operator:=xlOr, Criteria2:=8, VisibleDropDown:=False '将筛选后的数据复制到指定位置 .SpecialCells(xlCellTypeVisible).Copy Sheets("SHEET1").Range("A1") '去掉筛选 .AutoFilter End With End Sub 代码截图: 代码解读: ① '筛选需要的数据 .AutoFilter Field:=2, Criteria1:=12, Operator:=xlOr, Criteria2:=8, VisibleDropDown:=False 以上代码是取得Criteria1 Or Criteria2的值。 代码的运行效果: 本讲内容参考程序文件:应用003.xlsm 我20多年的VBA实践经验,全部浓缩在下面的各个教程中: |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |