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

问题描述:

我正在使用VB中的excel宏自动化业务流程,除了一部分外,我已经完成了所有工作。我有一个库存表,我想在运行宏时更新。它会做的是搜索零件编号的订单文件,将这些零件编号与库存表进行比较,然后根据订单中找到的值删除库存表内的库存量。这些是在两个单独的工作簿中。这里是它的外观的一个示例:如何根据电子表格A中的值删除电子表格B中的值?

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 

所以这个方案将在电子表格乙减去值 - C栏基于在电子表格A中的值 - 柱C和A列

在订单片甚至如果客户订购多件商品,则将每件商品显示为一个单独的商品,因此该程序只需一次性删除一件商品。

我对这种类型的Excel自动化很新颖,所以任何输入都将不胜感激。我一直在研究Vlookup,但从我的理解来看,它只查找信息并显示现有值。

+0

不得不到目前为止已经试过什么码? – 2015-02-09 22:07:19

+0

我目前还没有尝试过这部分的任何代码,因为我不确定从哪里开始。我一直在研究不同的功能,但我正在寻找一些见解。 @D_Zab – 2015-02-09 22:26:06

如果这个想法是从“库存”每次运行宏时删除了“订单”,右对于“订单”中的每一行,应该用这个词来搜索相应的对象,并减去数量

在代码中,它是那么容易,因为在话:

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 
+0

谢谢你的回应。我很抱歉,我还没有回到它。看看这些代码,看起来这些项目在哪些订单中并不重要。并感谢您对我的措辞进行修正。这确实更有意义 – 2015-02-10 04:22:36

+0

@ReaganKirby你是对的,它没有关系的顺序。 – 2015-02-10 17:21:15

+0

谢谢你的帮助。这个解决方案正在为我工​​作。 – 2015-02-11 17:49:49

按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 

看到谷歌的故障排除