如何根据电子表格A中的值删除电子表格B中的值?

时间:2015-02-09 21:43:12

标签: windows excel vba automation

我正在使用VB中的excel宏自动化业务流程,除了一部分外,我已经完成了所有这些工作。我有一个库存表,我想在运行宏时更新。它的作用是搜索订单文件中的零件号,将这些零件号与库存表进行比较,然后根据订单表中的值清除库存表中的库存数量。这些是在两个单独的工作簿中。以下是它的外观示例:

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

因此,该程序将根据电子表格A - C列和A列中的值减去电子表格B - C列中的值

在订单中,即使客户订购了多个商品,它也会将每个商品显示为单独的商品,因此该程序只需要一次删除一个商品。

我对这种类型的Excel自动化比较陌生,所以任何输入都会非常感激。我一直在研究Vlookup,但根据我的理解,它只查找信息并显示现有值。

2 个答案:

答案 0 :(得分:1)

按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进行问题排查

答案 1 :(得分:1)

如果想要在每次运行宏时从“库存”中删除“订单”,那么对于“订单”中的每一行,正确的事情应该是,搜索相应的对象进入库存并减去数量

在代码中,它就像单词一样简单:

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
相关问题