EXCEL MACRO – 仅在空白单元上执行vlookup

我有一个简单的2列表 – 第一列有数字1到10,第二列应该有拼写出来的数字版本(即一,二,三,…,十)。

我想编写一个macros在表上执行一个查找,以自动填充第二列使用第一列的值作为查找引用,但只对尚未填充的单元格(即只在空白细胞)。

我有下面的代码,当我点击macros启用button时执行:

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应用于被过滤的单元格。 但是,当我留下一些单元格空白,并执行macros,它不正确地执行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 

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

无论如何 – 我不打扰一个macros,我只是添加一个像这样的列:

= if([CellWithWordIn] <>“”,[CellWithWordIn],Vlookup Formula)

这将最大限度地减less查询调用,额外的function应该不成问题。