我搜索了许多来源以尝试解决我的问题,但是我没有成功。我是VBA的初学者,所以我的代码看起来非常混乱。为了提出问题,我会尽量将信息保存在表格中
我有两张纸,'数据'和'原始数字' 数据包含标题为“Property”和“Phone Number”的列,但只有“Property”中包含数据 原始数字包含相同的列,但它缺少一些“属性”值,因为它只包含与这些属性关联的特定数量的电话号码。
数据表:
财产。 。 。 。数
1 Ada St
2 Ada St
3 Ada St
4 Ada St
5 Ada St
6 Ada St
RAW NUMBERS SHEET:
财产。 。 。 。数
1 Ada St. 。 。 。 12345678个
2 Ada St. 。 。 。 12356322个
5 Ada St. 。 。 。 12551122个
6 Ada St. 。 。 。 12212112个
我有一个代码可以自动将数字导入数据表,但是一旦达到3 Ada St,它就会返回一个错误(400),因为原始数字上没有3个Ada St。我包含了一个错误处理程序,但它只能在再次返回错误之前工作一次
到目前为止,这是我的代码:
Sub Button_Click()
Worksheets("Data").Range("B4").Select 'B4 is the Number column in the data sheet
Do While ActiveCell.Offset(0, -1) <> ""
On Error GoTo ErrorHandler
ActiveCell.Value = Application.WorksheetFunction.IfError(WorksheetFunction.VLookup(ActiveCell.Offset(0, -1), ThisWorkbook.Worksheets("Raw Numbers").Range("Numbers"), 2, False), "")
ErrorHandler:
ActiveCell.Offset(1, 0).Select
Loop
End Sub
我用这种方式编写代码是因为我最初使用的是函数而不是代码,但是这太混乱了。 IfError函数在那里,因为如果地址没有附加数字,我希望单元格为空。我尝试将其转换为错误处理程序的一部分,但它最终只是给了我一个错误。
有人请帮帮我!!如果您需要更多信息,我很乐意提供。我会不停地看这个帖子!
答案 0 :(得分:1)
功能不应该太乱。 IFERROR
和VLOOKUP
的组合应该有效。
公式看起来像这样:
=IFERROR(VLOOKUP(A2,RawData!A:B,2,FALSE),"")
在VBA中,我会编写类似这样的代码:
Option Explicit
Sub test()
Dim Result
On Error Resume Next
Result = Application.WorksheetFunction.VLookup([A3], [RawData!A:B], 2, False)
If Err.Number = 1004 Then ' data not found, or some other formula error
Result = ""
Else
MsgBox Err.Number & "-" & Err.Description
Exit Sub
End If
[B3] = Result
End Sub
答案 1 :(得分:1)
在代码中使用公式并在之后粘贴值。
ActiveCell.FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-1],Numbers,2,FALSE),"""")"
ActiveCell.Value = ActiveCell.Value
<强>未测试... 强>