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 

注意:

  1. 当您的table array只有三列时,您的VLOOKUP没有正确应用,它的col_index_num参数值为4 。 我改变了这个3 – 你将需要检查!
  2. 最好避免On Error Resume Next 。 你需要find错误并处理,而不是隐藏它。
  3. 你最初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