VBA细胞search给我运行时间13
我在search单元格值时遇到了一个问题。 我想在活动工作表范围内search“United Kingdom”的值,并使用VLOOKUP函数返回给定的值。
Sub UpdateGDP() Dim rng As Range, cell_search As Range, del As Range, GDP As Range Set GDP = Worksheets("GDP").Range("A5:C250") Set rng = Intersect(Range("B:B"), Activesheet.UsedRange) For Each cell_search In rng If (cell_search.Value) = "United Kingdom" Then If del Is Nothing Then Set del = cell_search Else: Set del = Union(del, cell_search) End If End If Next cell_search On Error Resume Next del.Formula = "=VLOOKUP(United Kingdom,GDP,4,FALSE)" End Sub
它给我以下错误,我根本无法得到它的工作:
运行时错误13 – types不匹配
Sub UpdateGDP() Dim rng As Range, cell_search As Range, del As Range, GDP As Range Set GDP = Worksheets("GDP").Range("A5:C250", rng.Addres(external:=True)) Set rng = Intersect(Range("B:B"), ActiveSheeet.UsedRange) For Each cell_search In rng.Cells If (cell_search.Value) = "United Kingdom" Then If del Is Nothing Then Set del = cell_search Else: Set del = Union(del, cell_search) End If End If Next cell_search del.Formula = "=VLOOKUP(""United Kingdom"",GDP,4,FALSE)" End Sub
运行时错误91
不需要del
范围,直接应用公式:
Sub UpdateGDP() Dim rng As Range, cell_search As Range, GDP As Range Set GDP = ThisWorkbook.Worksheets("GDP").Range("A5:C250") With ThisWorkbook.Worksheets("Sheet1") 'relevant sheet name Set rng = Intersect(.Range("B:B"), .UsedRange) End With For Each cell_search In rng If cell_search.Value = "United Kingdom" Then cell_search.Formula = "=VLOOKUP(""United Kingdom"",GDP!" & GDP.Address & ",3,0)" End If Next cell_search End Sub
注意:
- 当您的
table array
只有三列时,您的VLOOKUP没有正确应用,它的col_index_num
参数值为4
。 我改变了这个3
– 你将需要检查! - 最好避免
On Error Resume Next
。 你需要find错误并处理,而不是隐藏它。 - 你最初
Set rng
地方你没有完全定义你的范围。 这可能会引发错误。
开始使用Option Explicit; 你在ActiveSheeet.UsedRange
有一个错字。
在构build表示公式的string时,不能像这样使用GDP,除非GDP是具有工作簿范围的命名范围。 我已经为你添加了这个代码。
在写公式之前,你应该确保del至less有一个单元格。
Option Explicit Sub UpdateGDP() Dim rng As Range, cell_search As Range, del As Range, GDP As Range Set GDP = Worksheets("GDP").Range("A5:C250") Worksheets("GDP").Range("A5:C250").Name = "GDP" Set rng = Intersect(Range("B:B"), ActiveSheet.UsedRange) For Each cell_search In rng.Cells If (cell_search.Value) = "United Kingdom" Then If del Is Nothing Then Set del = cell_search Else Set del = Union(del, cell_search) End If End If Next cell_search If Not del Is Nothing Then _ del.Formula = "=VLOOKUP(""United Kingdom"", GDP, 3, FALSE)" End Sub