【发布时间】:2019-08-17 08:13:00
【问题描述】:
我希望根据名称值返回部门值。名称列表是从第三方供应商导入的,每次都会随机排序,因此我无法将部门值设置为指定单元格。我有一个数据范围(dim rng),其中有一个名称和 A 列以及 B 列中的一个部门。我希望与该名称关联的部门在新工作表上以相同的方式返回。我已附加我的代码,但出现应用程序定义或对象定义错误,我不知道为什么。
Sub find()
Dim namerng As Range
Dim rng As Range
Dim depti As Integer
Dim dept As String
Set namerng = Range("A1:A250") 'range of names
Set rng = Sheet1.Range("A1:B250") 'range of names in col A and dept in col B
For depti = 3 To 250
dept = "=IfError(Vlookup(namerng,rng,2,FALSE), "")"
Range("B" & depti) = dept
Next
End Sub
【问题讨论】:
-
你在哪一行得到错误?
-
另外,如果您将 VBA 引用添加到 Excel 的字符串方程中,您需要添加变量,例如
"=IfError(Vlookup(" & "namerng & "," & rng & ",2,FALSE), """")"(请注意额外的引号将它们添加到字符串中。如果您做了Debug.Print "=IfError(Vlookup(namerng,rng,2,FALSE), "")",输出将是=IfError(Vlookup(namerng,rng,2,FALSE), ")) -
我在 Range("B" & depti) = dept 行上遇到错误
-
添加 debug.print 使程序运行,但部门 B 列中没有值
-
我相信如果您使用
dept = "=IfError(Vlookup(" & namerng.Address & "," & rng.Address & ",2,FALSE), """")",它应该会运行并插入方程式。但是,我不相信这个等式是你想要的。现在,存在循环引用(一切都发生在同一张纸上),VLOOKUP 只接受第一个参数的一个值,而不是多个单元格的范围。