我正在尝试使用VBA将一些单元格值复制并粘贴到同一工作簿中的其他工作表。
在订单列表中,工作表格式如下:
(Column A) | (Column B) | (Column C) | (Column D) | (Column E) | (Column F)
Product Code | Product Description | Price | Quantity | Net Amount | Sheet Name
我需要复制订单列表表中的数量并粘贴到相关表格,如F列所示。
例如,产品代码 AAA的数量 10 工作表名称艺术订单列表。
Product Code | Product Description | Price | Quantity | Net Amount | Sheet Name
AAA ... ... 5 ... Art
我需要一个代码将 Art 表中AAA的数量(G列)替换为10而不是5. 产品代码是 Art 表的B栏。
(Column B) | ... | (Column G)
Product Code | Other headers | Quantity
AAA ... 10 ' <---- REPLACE WITH 5
我已更新如下:
Dim j As Long, i As Long
j = 18
With Worksheets("Order List")
If Sheets("Order List").Range("F" & j) <> "" And Sheets("Order List").Range("A" & j) <> "" Then
i = Worksheets(.Range("F" & j)).Columns("B").Find(What:=.Range("A" & j).Value, LookIn:=xlValues, LookAt:=xlWhole).Row
Sheets("Order List").Range("D" & j).Copy Destination:=Worksheets(Worksheets("Order List").Range("F" & j)).Range("G" & i)
j = j + 1
End If
现在没有错误消息,但不能替换Art Sheet中的数量。 目的地错了吗?你能帮我看一下吗?非常感谢
答案 0 :(得分:1)
尝试使用Find
命令,例如:
Dim j As Long, i As Long
j = 18
With Worksheets("Order List")
If .Range("F" & j).Value <> "" And .Range("A" & j).Value <> "" Then
i = Worksheets(.Range("F" & j).Value).Columns("B").Find(What:=.Range("A" & j).Value, LookIn:=xlValues, LookAt:=xlWhole).Row
.Range("D" & j).Copy Destination:=Worksheets(.Range("F" & j).Value).Range("G" & i)
'or, if you just want to copy the value, use
'Worksheets(.Range("F" & j).Value).Range("G" & i).Value = .Range("D" & j).Value
j = j + 1
End If
End With
注意:
Find
属性之前,您需要包含正确的错误检查以查看Nothing
是否成功(即未返回Row
)。 / LI>
醇>
答案 1 :(得分:0)
也许有一个更简单的替代解决方案。您可以使用更加用户友好的工作表查找功能,而不是使用VBA处理麻烦的多页订单数量搜索(并且“将”新的数据放在订单上)。订单列表工作表“获取”从所有其他工作表合并到一个地方的数据,然后是一个简单的单列副本&amp;在时机成熟时粘贴。
和
[
您可以下载我的[简单]演示XLSM from JumpShare here,以通过“put而不是get”演示我的意思。基本上,1个查找公式会对您进行所有搜索,只需要2行代码即可在需要时复制新数据。 {请注意,宏不适用于在线查看器。)
答案 2 :(得分:0)
VBA不是我的强项,所以我将你的代码解构为以下内容,以便我能更好地理解它。
Dim j As Long, i As Long
Dim s As String
Dim ws As Worksheet
j = 18
Set ws = Worksheets("Order List")
s = ws.Range("A" & j).Value
i = Worksheets(ws.Range("F" & j)).Columns("B").Find(What:=s, LookIn:=xlValues, _
LookAt:=xlWhole).Row
If ws.Range("F" & j) <> "" And ws.Range("A" & j) <> "" Then
ws.Range("D" & j).Copy Destination:=Worksheets("F" & j).Range("G" & i)
j = j + 1
End If
跳出来的一件事是最后一行代码:
Destination:=Worksheets("F" & j).Range("G" & i)
这告诉我工作簿中有工作表,名为&#34; Fx&#34; (其中x是数字)。你有意这么说吗?
Destination:=Worksheets(ws.Range("F" & j))