Excel 从另一个工作表中循环Vlookup“范围内的每个单元格”

Excel 从另一个工作表中循环Vlookup“范围内的每个单元格”,excel,vba,vlookup,Excel,Vba,Vlookup,我试图从另一个工作表中为范围内的每个单元格循环Vlookup,但所有查找值都会得到结果,即使它与表数组中的数据不匹配 这是一个示例表和代码 单击IN按钮时,我希望来自table_数组的每个单元格的数量添加到相应lookup_value单元格中的数量 Private Sub cmdIN_Click() Dim rng As Range, cell As Range Set rng = Sheet2.Range("prodDesc") If MsgBox("Are

我试图从另一个工作表中为范围内的每个单元格循环Vlookup,但所有查找值都会得到结果,即使它与表数组中的数据不匹配

这是一个示例表和代码

单击IN按钮时,我希望来自table_数组的每个单元格的数量添加到相应lookup_value单元格中的数量

Private Sub cmdIN_Click()
Dim rng As Range, cell As Range
Set rng = Sheet2.Range("prodDesc")

 If MsgBox("Are you sure you want to update the stock IN quantity?", vbQuestion + vbYesNo, "Fresh Herbs & Spices") = vbNo Then
  Cancel = True
 End If
 
Application.EnableEvents = False
Application.ScreenUpdating = False
Sheet2.Unprotect Password:=""

On Error Resume Next 'on error run code on next line
 For Each cell In rng
  cell.Offset(, 12).Value = [VLookup(prodDesc, descTable, 2, False)] + cell.Offset(, 12).Value
 Next cell
 
Sheet2.Protect Password:="", DrawingObjects:=True, Contents:=True, Scenarios:=True
Cells(Rows.Count, "C").End(xlUp).Offset(3).Select

Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
但是,结果与预期不同,因为lookup_值工作表中的所有单元格都会得到相同的结果,无论是否匹配


顺便说一下,prodDesc和descTable作为范围是动态表。

在做了一些研究和提问之后, 下面是一个工作代码:

Private Sub cmdIN_Click()
Dim cell As Range, qty

If MsgBox("Are you sure you want to update the stock IN quantity?", vbQuestion + vbYesNo, "Fresh Herbs & Spices") = vbYes Then
  Application.EnableEvents = False
  Application.ScreenUpdating = False
  Sheet2.Unprotect Password:=""

  For Each cell In Sheet2.Range("prodDesc")
    qty = Application.VLookup(cell.Value, Range("descTable"), 2, False)
    If Not IsError(qty) Then cell.Offset(, 13).Value = qty + cell.Offset(, 13).Value
  Next cell
 
  Sheet2.Protect Password:="", DrawingObjects:=True, Contents:=True, Scenarios:=True
  Cells(Rows.Count, "C").End(xlUp).Offset(3).Select

  Application.ScreenUpdating = True
  Application.EnableEvents = True
End If
End Sub

什么是prodDesc和descTable?方括号语法是非标准的,我不会在这里使用它…prodDesc和descTable是动态表,它们在我代码中的其他Vlookup、Index Match和Vlookup Match函数上完美地工作。prodDesc是一个单元格吗?我不知道你的单元格变量在哪里输入到vlookup.prodDesc是一列中的多个单元格我把它做成了一个动态表,因为我通常向这列添加数据,descTable也是动态表,但有两列,抱歉,newby,这里请耐心等待我基本上你需要对单元格的值做些什么-我猜每个循环迭代都会不同,所以你不会每次都得到相同的结果。