Excel 匹配不同图纸VBA上某个范围的值

Excel 匹配不同图纸VBA上某个范围的值,excel,vba,Excel,Vba,我有两张桌子,每张桌子放在不同的床单上。第一个表格是要填写的表格。它包含4列,第一列包含代码ie:“10007”、“10009”,第二列包含产品类型ie:“H10”、“H12”等,每种类型的产品使用一种面粉,第三列包含此类产品的需求,最后一列包含消费量,这是我试图获得的 第二个表显示了需求列中的哪些值可以求和以获得每个产品的消耗量。 例如: 表1: Week 1 CODE Flour Consumption Product Demand

我有两张桌子,每张桌子放在不同的床单上。第一个表格是要填写的表格。它包含4列,第一列包含代码ie:“10007”、“10009”,第二列包含产品类型ie:“H10”、“H12”等,每种类型的产品使用一种面粉,第三列包含此类产品的需求,最后一列包含消费量,这是我试图获得的

第二个表显示了需求列中的哪些值可以求和以获得每个产品的消耗量。 例如:

表1:

Week 1   CODE     Flour      Consumption       Product     Demand

          1007      GF                            H102       152
          1008      Regular                       H104        450
                                                 H105        256
表2

  Product    Code     Flour
   H102       1007     GF
   H104       1007     GF
   H105       1008     Regular 
例如,如果我从表1中寻找1007的消耗量,那么如果第二个表中的产品匹配,我必须求和需求量。基本上,在第二张表上,你会发现一个指南,它告诉你产品x是由代码x和面粉x组成的,所以当你进入第一周时,你会根据它与指南的匹配程度来计算消费量。因此,由于H102和H104具有相同的代码,第一次消耗应为152+450,第二次消耗应仅为256

我使用range来查看代码是否会尝试匹配表1到表2中的值

    Dim i As Integer

   For i = 14 To 76


If Cells(i, 23).Value = Worksheets("Products").Cells(15, 8).Value And Cells(i, 29).Value = Worksheets("Products").Range("B15:B36").Value And Cells(i + 1, 29).Value <> Worksheets("Products").Range("B15:B36").Value And Cells(i + 2, 29).Value <> Worksheets("Products").Range("B15:B36").Value Then

Cells(i, 25).Value = Cells(i, 28).Value

ElseIf Cells(i, 23).Value = Worksheets("Products").Cells(15, 8).Value And Cells(i, 29).Value = Worksheets("Products").Range("B15:B36") And Cells(i + 1, 29).Value = Worksheets("Products").Range("B15:B36") And Cells(i + 2, 29).Value <> Worksheets("Products").Range("B15:B36") Then

Cells(i, 25).Value = Cells(i, 28).Value + Cells(i + 1, 28).Value

ElseIf Cells(i, 23).Value = Worksheets("Products").Cells(15, 8).Value And Cells(i, 29).Value = Worksheets("Products").Range("B15:B36") And Cells(i + 1, 29).Value = Worksheets("Products").Range("B15:B36") And Cells(i + 2, 29).Value = Worksheets("Products").Range("B15:B36") Then

Cells(i, 25).Value = Cells(i, 28).Value + Cells(i + 1, 28).Value + Cells(i + 2, 28).Value

  End If
 Next i

其中(I,23)是表1(1007)中的代码,(I,29)是表1(H102)中的产品类型,(I,25)是消耗量,(I,28)是需求量。这仅适用于其他产品不共享相同代码的情况,因此不需要求和。

您是否曾经遇到过表1中的值不连续的情况?也就是说,表1中有4行,而第1项和第4项在表2中有记录,因此需要将表1中第1行和第4行的需求合并起来?是的,可能会发生这种情况。然而,它应该只为一组3行添加,因为这是由班次完成的,并且每个班次最多只能生产3个产品。但是可能会发生这样的情况:1和3在表2中有相同的记录,而第2行在表2中有不同的记录。您是否曾经遇到过表1中的值不能按连续顺序排列的情况?也就是说,表1中有4行,而第1项和第4项在表2中有记录,因此需要将表1中第1行和第4行的需求合并起来?是的,可能会发生这种情况。然而,它应该只为一组3行添加,因为这是由班次完成的,并且每个班次最多只能生产3个产品。但是可能会发生这样的情况:1和3在表2中有相同的记录,而第2行在表2中有不同的记录。
 For i = 14 To 76
If Cells(i, 23).Value = Application.WorksheetFunction.VLookup( _
Cells(i, 29).Value, Worksheets("Products").Range("B15:H36"), 7, False) Then
    Cells(i, 25).Value = Cells(i,28).Value
End If
Next i