VBA 添加 Vlookup + Vlookup w/ 活动单元格

VBA Adding Vlookup + Vlookup w/ active cell

提问人:Eric Ahn 提问时间:11/9/2023 最后编辑:braXEric Ahn 更新时间:11/10/2023 访问量:52

问:

我再次来到这里,看看是否有人愿意回答我遇到的这个问题。 我提前感谢大家。

enter image description here

从上图来看,我们有 SHEET 1 和 SHEET 2,它们代表了 2 个不同的工作表,出于本解释的目的,我在同一张工作表中制作了这些工作表,但实际上,它将在 2 张 spearate 工作表中。

所以基本上我需要一个VBA代码,当我按下那个红色按钮时,代码从单元格C100中获取11,添加到单元格I11中(请注意,I11在不同的工作表中),然后删除单元格C11和E11中的所有内容。

由于只有一个按钮将用于几行,所以我在某处读到,您可以使用一种称为“活动单元格”的东西来避免为每行创建一个按钮。

所以这是我简单地添加这 2 个的代码,但我不知道如何将其放入 VBA 中以使用“activesheet”运行。

=IF(NOT(ISBLANK(G11)),VLOOKUP(A11,G11:I20,3,0))+ VLOOKUP(A11,A11:E20,3,0)

因此,如果按钮正常工作,结果如下:

enter image description here

如果有人能向我解释如何将 activesheet 与那里的 vlookup 代码合并在一起,我将不胜感激,关于我以前使用过的擦除单元格,以便我可以查找它。

再次提前致谢。

Excel VBA vlookup

评论

0赞 freeflow 11/9/2023
所以不是代码编写服务。请发布您尝试过的代码,并清楚地描述您遇到的具体问题。请确保指出导致错误的代码行。请确保从代码中删除所有 on 错误语句,以便获得清晰正确的错误消息。
0赞 Eric Ahn 11/9/2023
啊,我忘了写我有的vlookup代码,请更新它
0赞 FaneDuru 11/9/2023
简单来说,您是否要在第一张“A:A”列中选择一个单元格并运行代码,它必须在第二张纸的“A:A”中找到具有相同“ITEM ID”的相应行。然后将 I:I 列(找到的行)的现有值与活动单元格行(在第一张纸上)的 C:C 值相加。之后,删除活动单元格行上 C:E 中的值。这种理解是正确的吗?
0赞 Eric Ahn 11/9/2023
没错,是的
0赞 FaneDuru 11/9/2023
然后,尝试我发布的代码并发送一些反馈。

答:

2赞 FaneDuru 11/9/2023 #1

请尝试使用下一个代码。您可以从已有的按钮调用它,也可以将其复制相应的代码:

Sub updateQuantity()
  Dim rng As Range, ws2 As Worksheet, rngItem As Range
  
  Set rng = ActiveCell
  If rng.cells.count > 1 Then MsgBox "You need to select only ONE CELL...": Exit Sub
  If rng.column <> 1 Then MsgBox "The active cell must be in A:A column...": Exit Sub
  
  Set ws2 = rng.Parent.Next ' Set the second worksheet
                            ' in this code it is the next sheet after the one keeping active cell
                            
  Set rngItem = ws2.Range("A:A").Find(What:=rng.value, LookAt:=xlWhole) 'find the Item in the second sheet
  If Not rngItem Is Nothing Then 'if the item has been found:
     'add the existing value in I:I (found range row) with the one from C:C column (activecell row)
     ws2.cells(rngItem.Row, "I").value = ws2.cells(rngItem.Row, "I").value + rng.Offset(, 2).value
     rng.Offset(, 2).Resize(, 3).ClearContents 'clear content of C:E columns of the active cell row
  Else
     MsgBox "No any match for item """ & rng.value & """ has been found in """ & _
           ws2.name & """ sheet..."
  End If
End Sub

如果您拥有的按钮是类型,请写入其事件。如果它是一个按钮,请将上面的宏同化到它上面。ActiveXupdateQuantityClickForm

如果有些事情不够清楚,请不要犹豫,要求澄清......

评论

0赞 Eric Ahn 11/9/2023
首先感谢您的回复!我已经调整了您的代码以适合我的真实 excel 文件(只是切换了坐标),并且在“清除内容”(ws2.cells(rngItem.Row, “I”)......) 之前的行上收到运行时错误 13,我会继续尝试调整它并尽快回复您。
0赞 FaneDuru 11/9/2023
@Eric Ahn,恐怕你“改编”的方式不是最合适的。“切换坐标”是什么意思?你在说什么坐标?您不需要更改您在问题中提到的范围吗?您是否适应使用真实的(第二张)表?除了错误号,请问它的描述是什么?Set ws2 = rng.Parent.Next
0赞 Eric Ahn 11/9/2023
抱歉,我使用的术语可能不清楚,我更改了范围和单元格编号(例如:将“I”更改为“E”)并使用“Set ws2 = Sheets(”Material_Index“)”,Material_Index是工作表的名称。
0赞 FaneDuru 11/9/2023
@Eric Ahn 那么,你是否理解正确调整它们的含义和属性?除此之外,为什么您要求特定范围,现在又想将代码用于其他用途?我无法理解这种提问方式,没有冒犯......你们安装了AnyDesk吗?如果是这样并且没有机密内容,我可以连接到您的计算机以查看您的环境中发生的情况吗?OffsetResize
1赞 Eric Ahn 11/9/2023
你是对的,它在原始形式下工作得很好,它会帮助我适应我的餐桌,非常感谢!