VBA筛选后的操作,需要选择第一个可见单元格
如图所示,在网络抓取的数据,需要进行清洗,在清洗的过程中,需要用到筛选,筛选之后,我需要选中O10单元格,填充公式(但是因为文档每次都不一样,筛选内容的变化,下次可能就不在O10单元格了,所以需要用到宏代码)j = Rows("2:3000").SpecialCells(12).RowMsgBox (j)返回结果是10上面的2:3000根据个人需求修改(不能直接写rows()...
2020-5-26更新:可以不限定3000,使用通用代码:Rows.Count,这样在office07之后的版本,以及07之前的版本,不管有多少行,都可以正常使用~
Sub test()
MsgBox (Rows("2:" & Rows.Count).SpecialCells(12).Row)
End Sub
如图所示,在网络抓取的数据,需要进行清洗,在清洗的过程中,需要用到筛选,
筛选之后,我需要选中O10单元格,填充公式(但是因为文档每次都不一样,筛选内容的变化,下次可能就不在O10单元格了,所以需要用到宏代码)
j = Rows("2:3000").SpecialCells(12).Row
MsgBox (j)
返回结果是10
上面的2:3000根据个人需求修改(不能直接写rows(),这样的话,因为第一行有标题,所以返回的就是1)
如此,就可以返回我第一个筛选之后,第一个可见单元格的行号。这样就可以用cells进行定位写入公式了~
如下为拓展文档:
vba SpecialCells(Type,Value) 参数说明
Range.SpecialCells 方法可以返回一个 Range 对象,该对象代表与指定类型和值匹配的所有单元格。 其语法如下: 表达式.SpecialCells(Type,Value) 其Type参数的可选XlCellType常量及对应值如下表:
XlCellType 常量 | 值 | 说明 |
xlCellTypeAllFormatConditions | -4172 | 任意格式单元格 |
xlCellTypeAllValidation | -4174 | 含有验证条件的单元格 |
xlCellTypeBlanks | 4 | 空单元格 |
xlCellTypeComments | -4144 | 含有注释的单元格 |
xlCellTypeConstants | 2 | 含有常量的单元格 |
xlCellTypeFormulas | -4123 | 含有公式的单元格 |
xlCellTypeLastCell | 11 | 已用区域中的最后一个单元格 |
xlCellTypeSameFormatConditions | -4173 | 含有相同格式的单元格 |
xlCellTypeSameValidation | -4175 | 含有相同验证条件的单元格 |
xlCellTypeVisible | 12 | 所有可见单元格 |
当Type参数为 xlCellTypeConstants 或 xlCellTypeFormulas时,Value参数有4种XlSpecialCellsValue 常量可选,见下表:
XlSpecialCellsValue 常量 | 值 | 说明 |
xlErrors | 16 | 错误值 |
xlLogical | 4 | 逻辑值 |
xlNumbers | 1 | 数字 |
xlTextValues | 2 | 文本 |
如下SpecialCells(xlCellTypeConstants,23)语句中的23=16+4+1+2,即表示定位的常量包含4种类型的单元格:错误值+逻辑值+数字+文本
- Sub 定位常量()
- Range("a:a").SpecialCells(xlCellTypeConstants, 23).Select
- End Sub
如只要定位常量错误值及逻辑值(即16+4=20),则采用如下代码:
- Sub test1()
- Range("a:a").SpecialCells(xlCellTypeConstants, 20).Select
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)