本节主要讲几个WPS开发文档中未列出的又常用的方法。
这些方法包括:过滤、填充、查找和替换这几个方面,共计11个方法。
过滤类方法:AutoFilter、AdvancedFilter
填充类方法:AutoFill、FillDown、FillUp、FillRight、FillLeft
查找替换类方法:Find、FindNext、FindPrevious、Replace
以下方法内容均来自于微软VBA Excel模型对象文档,小编仅做整理。
名称 | 功能 |
AutoFilter | 通过 AutoFilter 筛选列表。 |
AdvancedFilter | 基于条件区域从列表中筛选或复制数据。 如果初始选定区域为单个单元格,则使用单元格的当前区域。 |
AutoFill | 对指定区域中的单元格执行自动填充。 |
FillDown | 从指定区域的顶部单元格开始向下填充,直至该区域的底部。 区域中首行单元格的内容和格式将复制到区域中其他行内。 |
FillUp | 从指定区域的底部单元格开始向上填充,直至该区域的顶部。 区域中尾行单元格的内容和格式将复制到区域中其他行内。 |
FillRight | 从指定区域的最左边单元格开始向右填充。 区域中最左列单元格的内容和格式将复制到区域中其他列内。 |
FillLeft | 从指定区域的最右边单元格开始向左填充。 区域中最右列单元格的内容和格式将复制到区域中其他列内。 |
Find | 在区域中查找特定信息。如果未发现匹配项,此方法返回 Nothing。 Find 方法不会影响所选内容或活动单元格。 |
FindNext | 继续使用 Find 方法开始的搜索。 查找匹配相同条件的下一个单元格,并返回表示该单元格的 Range 对象。 该操作不影响选定内容和活动单元格。 |
FindPrevious | 继续使用 Find 方法开始的搜索。 查找匹配相同条件的上一个单元格,并返回代表该单元格的 Range 对象。 不会影响所选内容或活动单元格。 |
Replace | 返回 Boolean,它表示指定区域内单元格中的字符。 使用此方法不会更改选中范围或活动单元格。 |
练习
本期练习以数据为例:
班级 | 姓名 | 期中 | 期末 | 平均成绩 |
三(1) | 李浩然 | 250 | 262 | 247.83 |
三(1) | 张浩 | 270 | 273 | 270.5 |
三(1) | 周浩成 | 240 | 250 | 240 |
三(2) | 刘成承 | 253 | 246 | 243.5 |
三(2) | 钟成功 | 241 | 250 | 238.33 |
三(2) | 关辛雨 | 280 | 295 | 291.67 |
三(2) | 吕子成 | 279 | 292 | 282.33 |
三(2) | 钟函 | 220 | 230 | 215.83 |
三(3) | 李莞尔 | 180 | 159 | 169.33 |
三(3) | 谢雨涵 | 285 | 290 | 281.17 |
三(3) | 文成望 | 240 | 250 | 239.5 |
三(3) | 罗宇浩 | 275 | 279 | 270.83 |
三(4) | 陈然尔 | 230 | 245 | 230.67 |
三(4) | 郑陈功 | 265 | 280 | 267.83 |
三(4) | 董浩然 | 290 | 295 | 284.67 |
练习1:熟悉筛选类方法。
- AutoFilter方法:AutoFilter (Field, Criteria1, Operator, Criteria2, VisibleDropDown)
名称 | 选项 | 数据类型 | 说明 |
Field | 可选 | Variant | 相对于作为筛选基准字段(从列表左侧开始,最左侧的字段为第一个字段)的字段的整型偏移量。 |
Criteria1 | 可选 | Variant | 条件(字符串;例如,“101”)。 使用 "=" 查找空白字段,使用 "<>" 查找非空白字段,使用 "><" 选择数据类型中的(否数据)字段。 |
Operator | 可选 | XlAutoFilterOperator | 一个指定筛选器类型的 XlAutoFilterOperator 常量。 |
Criteria2 | 可选 | Variant | 第二个条件(字符串)。 与 Criteria1 和 Operator 一起组合成复合筛选条件。 也用作日期字段的单一条件(按日、月或年筛选)。 后跟一个数组,该数组用于详述和筛选 Array(Level, Date)。 其中,Level 为 0-2(年、月、日),Date 为筛选期内的一个有效日期。 |
VisibleDropDown | 可选 | Variant | 如果为 True,则显示已筛选字段的 AutoFilter 下拉箭头。 如果为 False,则隐藏已筛选字段的 AutoFilter 下拉箭头。 默认情况下为 True。 |
此处要注意:SubField参数是在第一个参数是某种特殊的数据类型,存在有子字段的时候,这个参数才可以使用,否则这个参数可以忽略。大多数情况下,这个参数是没有用的,因为我们的数据大多数情况都是单字段,不是复合字段,用不着它。
const SOURCERANGE = 'A1:E16';
function filterAutoFilter(){
let rngSource = ActiveWorkbook.Worksheets.Item('Sheet3').Range(SOURCERANGE);
//1、班级列只有一个筛选条件,隐藏第1列的下拉箭头。不需要用的参数要使用null,而不是undefined
//*rngSource.AutoFilter(1,'三(1)',null,null,false);
//2、姓名列有多个筛选条件值。
//*rngSource.AutoFilter(2,['*浩*', '*成*'],xlFilterValues);
//3、期中列有多个筛选条件值:分数大于270或者小于等于230。
//*rngSource.AutoFilter(3,'>270',xlOr, '<=230');
//4、期中列有多个筛选条件值:分数大于230或者小于等于270。
//*rngSource.AutoFilter(3,'>230',xlAnd, '<=270');
//5、平均成绩列全部人的:前10名。
//*rngSource.AutoFilter(5,'10',xlTop10Items);
//6、平均成绩列:啥都不选。
rngSource.AutoFilter(5,'><');
}//1、班级列只有一个筛选条件,隐藏第1列的下拉箭头。不需要用的参数要使用null,而不是undefined
//*rngSource.AutoFilter(1,'三(1)',null,null,false);//2、姓名列有多个筛选条件值。
//*rngSource.AutoFilter(2,['*浩*', '*成*'],xlFilterValues);//3、期中列有多个筛选条件值:分数大于270或者小于等于230。
//*rngSource.AutoFilter(3,'>270',xlOr, '<=230'); //4、期中列有多个筛选条件值:分数大于230或者小于等于270。
//*rngSource.AutoFilter(3,'>230',xlAnd, '<=270'); //5、平均成绩列全部人的:前10名。
//*rngSource.AutoFilter(5,'10',xlTop10Items); //6、平均成绩列:啥都不选。
rngSource.AutoFilter(5,'><');- AdvancedFilter方法:AdvancedFilter (Action、 CriteriaRange、 CopyToRange、 Unique)
名称 | 必需/可选 | 数据类型 | 说明 |
Action | 必需 | XlFilterAction | XlFilterAction 的常量之一,用于指定是否就地复制或筛选列表。 |
CriteriaRange | 可选 | Variant | 条件区域。 如果省略该参数,则没有条件限制。 |
CopyToRange | 可选 | Variant | 如果 Action 为 xlFilterCopy,则为复制行的目标区域。 否则,忽略该参数。 |
Unique | 可选 | Variant | 如果为 True,则只筛选唯一记录。 如果为 False,则筛选符合条件的所有记录。 默认值为 False。 |
function filterAdvancedFilter(){
let rngSource = ActiveWorkbook.Worksheets.Item('Sheet3').Range(SOURCERANGE);
let rngCriteria = ActiveWorkbook.Worksheets.Item('Sheet3').Range('H1:I2');
//AdvancedFilter (Action、 CriteriaRange、 CopyToRange、 Unique)
//不复制数据保留不动,不要唯一值;
//当第一个参数为xlFilterInPlace时,第三个参数无效,当第一个参数为xlFilterCopy是,第三个参数需要指定。
rngSource.AdvancedFilter(xlFilterInPlace,rngCriteria);
}以上两个方法,返回值都是一个Range对象,分别对应的是WPS的用户界面中的筛选和高级筛选这两个功能。如下图:
以上代码复制后即可运行。
小编的演示文档会保存起来,免费提供给大家学习,如有需要关注后私信说明要哪一章节的演示文档。
请注意:演示文档与小编的教程同步即是小编的教程到哪一步,演示文档就到哪一章节。
