如何根据电子表格 A 中的值删除电子表格 B 中的值?
How to remove values in spreadsheet B based on values in spreadsheet A?
我正在使用 VB 中的 excel 宏来实现业务流程的自动化,我已经完成了除一部分之外的所有工作。我有一份清单 sheet,我想根据 运行 宏更新。它会做的是在订单文件中搜索零件号,将这些零件号与库存 sheet 进行比较,然后根据在订单 [=21] 中找到的值删除库存 sheet 中的库存数量=].这些在两个单独的工作簿中。这是它的外观示例:
Spreadsheet A - Order Sheet:
A B C
Part #: Description: Quantity
123456 Item 1 1
1234567 Item 2 1
12345678 Item 3 1
Spreadsheet B - Inventory Sheet:
A B C
Part #: Description: Quantity
123456 Item 1 580
1234567 Item 2 790
12345678 Item 3 578
因此该程序将根据 Spreadsheet A - C 列和 A 列
中的值减去 Spreadsheet B - C 列中的值
在订单 sheet 中,即使客户订购了多件商品,它也会将每次购买显示为单独的商品,因此该程序一次只需删除一件商品。
我对这种类型的 Excel 自动化相当陌生,因此非常感谢任何输入。我一直在研究 Vlookup,但据我了解,它只查找信息并显示现有值。
按 alt+f11
右键单击左侧的项目并插入一个模块。
在鬃毛代码窗格中键入:
Public Sub UpdateInventory
'place some code like
for n1=0 to 1000
for n2=0 to 100
InventoryItemCode= Sheets("Inventory").range("A1").offset(n1,0).value
OrderCode=Sheets("Orders").range("A1").offset(n2,0).value
If InventoryItemCode=OrderCode then
'etc....
End if
Next n2
NEXT n1
End sub
请参阅 google 进行故障排除
如果想法是每次 运行 宏时从 "Inventory" 中删除 "Orders",那么正确的做法应该是 对于"Orders"中的每一行,在库存中搜索相应的对象并减去数量。
在代码中,就像在文字中一样简单:
For j = 2 To Sheets("Orders").Range("A2").End(xlDown).Row
For k = 2 To Sheets("Inventory").Range("A2").End(xlDown).Row
If Sheets("Orders").Range("A" & j).Value = Sheets("Inventory").Range("A" & k).Value Then '<-- when the object is found
Sheets("Inventory").Range("C" & k).Value = Sheets("Inventory").Range("C" & k).Value - Sheets("Orders").Range("C" & j).Value '<-- subtract order's value
Exit For '<-- you don't need to loop any further after having found the object
End If
Next k
Next j
我正在使用 VB 中的 excel 宏来实现业务流程的自动化,我已经完成了除一部分之外的所有工作。我有一份清单 sheet,我想根据 运行 宏更新。它会做的是在订单文件中搜索零件号,将这些零件号与库存 sheet 进行比较,然后根据在订单 [=21] 中找到的值删除库存 sheet 中的库存数量=].这些在两个单独的工作簿中。这是它的外观示例:
Spreadsheet A - Order Sheet:
A B C
Part #: Description: Quantity
123456 Item 1 1
1234567 Item 2 1
12345678 Item 3 1
Spreadsheet B - Inventory Sheet:
A B C
Part #: Description: Quantity
123456 Item 1 580
1234567 Item 2 790
12345678 Item 3 578
因此该程序将根据 Spreadsheet A - C 列和 A 列
中的值减去 Spreadsheet B - C 列中的值在订单 sheet 中,即使客户订购了多件商品,它也会将每次购买显示为单独的商品,因此该程序一次只需删除一件商品。
我对这种类型的 Excel 自动化相当陌生,因此非常感谢任何输入。我一直在研究 Vlookup,但据我了解,它只查找信息并显示现有值。
按 alt+f11
右键单击左侧的项目并插入一个模块。
在鬃毛代码窗格中键入:
Public Sub UpdateInventory
'place some code like
for n1=0 to 1000
for n2=0 to 100
InventoryItemCode= Sheets("Inventory").range("A1").offset(n1,0).value
OrderCode=Sheets("Orders").range("A1").offset(n2,0).value
If InventoryItemCode=OrderCode then
'etc....
End if
Next n2
NEXT n1
End sub
请参阅 google 进行故障排除
如果想法是每次 运行 宏时从 "Inventory" 中删除 "Orders",那么正确的做法应该是 对于"Orders"中的每一行,在库存中搜索相应的对象并减去数量。
在代码中,就像在文字中一样简单:
For j = 2 To Sheets("Orders").Range("A2").End(xlDown).Row
For k = 2 To Sheets("Inventory").Range("A2").End(xlDown).Row
If Sheets("Orders").Range("A" & j).Value = Sheets("Inventory").Range("A" & k).Value Then '<-- when the object is found
Sheets("Inventory").Range("C" & k).Value = Sheets("Inventory").Range("C" & k).Value - Sheets("Orders").Range("C" & j).Value '<-- subtract order's value
Exit For '<-- you don't need to loop any further after having found the object
End If
Next k
Next j