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应该不成问题。