VBA筛选后的操作,需要选择第一个可见单元格

 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种类型的单元格:错误值+逻辑值+数字+文本

  1. Sub 定位常量()
  2. Range("a:a").SpecialCells(xlCellTypeConstants, 23).Select
  3. End Sub

如只要定位常量错误值及逻辑值(即16+4=20),则采用如下代码:

  1. Sub test1()
  2. Range("a:a").SpecialCells(xlCellTypeConstants, 20).Select
VBA是一种编程语言,可以在Excel软件中实现各种自动化操作。在VBA中,我们可以编写代码来筛选数据,并将筛选后的结果复制到一个新的工作表中。 首先,我们需要确定数据所在的工作表和范围。可以使用以下代码来引用某个工作表中的数据范围: ``` Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("Sheet1") '将“Sheet1”替换为实际的工作表名称 Dim rng As Range Set rng = ws.Range("A1:D10") '将“A1:D10”替换为实际的数据范围 ``` 接下来,我们可以使用筛选功能来筛选数据。假设我们想筛选出所有满足某个条件的行,可以使用以下代码: ``` Dim filterCriteria As String filterCriteria = "某个条件" '将“某个条件”替换为实际的筛选条件 rng.AutoFilter Field:=1, Criteria1:=filterCriteria ``` `Field:=1`表示筛选条件应用于数据范围中的第一列。 然后,我们可以将筛选后的数据复制到一个新的工作表中。为了创建一个新的工作表,并将筛选结果粘贴到该工作表中,可以使用以下代码: ``` Dim newWs As Worksheet Set newWs = ThisWorkbook.Sheets.Add '创建一个新的工作表 rng.SpecialCells(xlCellTypeVisible).Copy Destination:=newWs.Range("A1") '将筛选结果复制到新的工作表的A1单元格 ``` 最后,我们可以将新的工作表重命名,以便更好地描述筛选结果。可以使用以下代码来重命名工作表: ``` newWs.Name = "筛选结果" '将“筛选结果”替换为实际的工作表名称 ``` 综上所述,以上代码展示了如何在VBA筛选数据并将筛选结果复制到一个新的工作表中。根据实际需求,你可以根据上述示例进行调整和扩展。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值