[英]EXCEL VBA -Getting #NAME?
我正在尝试从另一个Excel文件获取用户ID。 在主excel文件上,只有一列带有用户名。 我在下面写了,但是它返回了#Name? 而不是ID。
Dim i As Integer
Dim LastRow As Integer
Dim LastColumn As Integer
Dim Client_id As Variant
Dim user_id As String
Dim Contract_id As Variant
Sub TestAdd()
LastRow = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
'Next
For i = 2 To LastRow
user_id = "=VLOOKUP(Range(Cells(i, 3)),[RefUser.xlsx]Sheet1!$A:$B,2,FALSE)"
Range(Cells(i, 2), Cells(LastRow, 2)).Value = user_id
Next
End Sub
下列公式无效:
user_id = "=VLOOKUP(Range(Cells(i, 3)),[RefUser.xlsx]Sheet1!$A:$B,2,FALSE)"
这样的事情会起作用:
user_id = "=VLOOKUP(C" & i & ",[RefUser.xlsx]Sheet1!$A:$B,2,FALSE)"
然后使用.Formula
而不是.Value
您可以将所有这些设置为一次。 尝试这个:
Dim i As Integer
Dim LastRow As Integer
Sub TestAdd()
With Worksheets("Sheet1")
.Range("B2", .Cells(.Rows.Count, 1).End(xlUp).Offset(0,1)).Formula = _
"=VLOOKUP(C2,[RefUser.xlsx]Sheet1!$A:$B,2,FALSE)"
End With
End Sub
要使用VLookup
您需要为函数提供一些值。 签名看起来像VLOOKUP(lookup_value,table_array,col_index_num,range_lookup) 。
lookup_value
是您期望找到的值。 table_array
是最左边一列中具有lookup_value
的单元格范围。 col_index_num
是包含要在找到匹配项时返回的信息的列号。 range_lookup
是您要查找的匹配项。 0
可以用作False的简写。 假设您的lookup_value
位于单元格C2
,该单元格与当我从2开始的Cells(i,3)
相对应,并且您的table_array
位于Range("M1:N10")
。 您可以使用公式=VLOOKUP(C2,$M$1:$N$10,2,0)
。 通过省略$
并保留C2
作为相对参考,您可以将其应用于要计算值的范围。 这比循环遍历并将相同公式分别应用于每个单元格要有效得多。
Sub AddLookupFormula()
Dim lastRow As Long
lastRow = Worksheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Row
Dim formulaRange As Range
Set formulaRange = ActiveSheet.Range(ActiveSheet.Cells(2, "B"), ActiveSheet.Cells(lastRow, "B"))
Dim firstLookupCell As String
firstLookupCell = formulaRange.Cells(1, 1).Offset(ColumnOffset:=1).Address(False, False)
Dim completedFormula As String
completedFormula = "=VLOOKUP(" & firstLookupCell & ",$M$1:$N$10,2,0)"
formulaRange.Formula = completedFormula
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.