【发布时间】:2022-02-24 07:27:19
【问题描述】:
我仍在学习 VBA,想知道是否有办法在过滤范围内运行 VLOOKUP。
比如下面的代码,我过滤数据后,第一行有数据的是A4。
但是,我必须手动指定第一行数据在 A4 中。
我的问题是是否有可能让宏自己检测第一行数据,而不是我必须指定。
我读过关于可能使用 SpecialCells 的文章。
我正在尝试这样做,因为我收到的数据集每天都在变化,所以今天第一个过滤的行是 A4 可能是 A15 或明天的任何内容。
谢谢
Range("A4").Select '/这里必须指定范围
Dim 公式为字符串
formul = "=VLOOKUP(C2,Sheet2!A:B,2,0)"
Range("A4:A" & Cells(Rows.Count, 1).End(xlUp).Row) = [formul] '/这里也指定范围
'''
编辑:带有 SpecialCells 的代码: ''' vba
Range("A1").Select '/have to specify range here
Dim formul As String
formul = "=VLOOKUP(C1,Sheet2!A:B,2,0)"
Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row).SpecialCells(xlCellTypeVisible) = [formul] '/also specify range here
'''
【问题讨论】:
-
我认为您的
SpecialCells预感是正确的。您是否尝试过使用SpecialCells(xlCellTypeVisible)? -
@BigBen 我已经尝试过,但出现运行时错误 1004:对象 'Range' 的方法 'SpecialCells' 失败。我尝试从 A1 启动 VLOOKUP,下一行的数据是 A4(A2 和 A3 已被过滤掉)。我使用我使用的代码对我的原始帖子添加了一个编辑。
标签: excel vba vlookup autofilter