繁体   English   中英

EXCEL VBA-正在获取#NAME?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM