EXCEL宏-仅对空白单元格执行vlookup

EXCEL宏-仅对空白单元格执行vlookup,excel,vba,filter,vlookup,Excel,Vba,Filter,Vlookup,我有一个简单的表,有两列-第一列有数字1到10,第二列应该有数字的拼写版本(即1,2,3,…,10) 我想编写一个宏,在表上执行vlookup,以使用第一列中的值作为vlookup引用自动填充第二列,但仅限于尚未填充的单元格(即仅限于空白单元格) 单击宏启用按钮时执行以下代码: Private Sub Button_Click() Range("B3").AutoFilter Field:=2, Criteria1:="" Range("C3:C12").Value =

我有一个简单的表,有两列-第一列有数字1到10,第二列应该有数字的拼写版本(即1,2,3,…,10)

我想编写一个宏,在表上执行vlookup,以使用第一列中的值作为vlookup引用自动填充第二列,但仅限于尚未填充的单元格(即仅限于空白单元格)

单击宏启用按钮时执行以下代码:

Private Sub Button_Click()

    Range("B3").AutoFilter Field:=2, Criteria1:=""   
    Range("C3:C12").Value = WorksheetFunction.VLookup(Range("B3:B12"),     
    Sheet2.Range("B2:C11"), 2, False)

End Sub
第一行过滤列表,以便只显示空白。 第二行应仅将
vlookup
应用于已过滤的单元格。但是,当我将某些单元格留空并执行宏时,它会错误地执行
vlookup
。例如,如果我删除第4行和第7行的数据(即删除“四”和“七”),并执行
vlookup
,它会正确过滤列表,但不是从
vlookup
表中提取“四”和“七”,而是提取“一”和“一”

有人能帮我吗


谢谢

将为第一个单元格提取值,而不是单个单元格

请尝试这样做,首先获取公式以计算每个单元格的正确值,然后粘贴该单元格的值

dim rgLoop as range

Range("B3").AutoFilter Field:=2, Criteria1:=""   

Range("C3:C12").specialcells(xlcelltypevisible).formular1c1="=VLookup(RC2, Sheet2!B2:C11, 2, False)"

for each rgLoop in Range("C3:C12").specialcells(xlcelltypevisible)
    rgLoop.value=rgLoop.value
next rgLoop

你想用这段代码实现什么?这似乎是一个有点奇怪的用例

不管怎样-我不会为宏而烦恼,我只会添加一列,其中包含以下内容:

=如果([CellWithWordIn],[CellWithWordIn],Vlookup公式)


这将最小化vlookup调用,额外的if函数应该不会成为问题

没错。我已经删除了我的评论。