Excel:在第1页和第2页中找到匹配项,并将其复制到第3页

Excel:在第1页和第2页中找到匹配项,并将其复制到第3页,excel,vba,Excel,Vba,我需要一个功能,该功能将执行以下操作,以跟踪Excel 2007中的“现有”库存: 我有3张表:“库存”、“手头”和“销售”,列名称相同: A1=样式#B1=小型C1=中型D1=大型E1=X-大型 我在“库存”和“手头”中有相同数量的行,但在“销售”中总是不同的 我希望有一个函数来实现这一点: 当我在第一行中添加新行时,将一行从“库存”复制并粘贴到“手头” 在A1=样式#列的“现有”和“销售”表中查找匹配值 扣除“销售”和“现有”匹配行的B:E单元格 任何帮助都将不胜感激 If Sheets(“

我需要一个功能,该功能将执行以下操作,以跟踪Excel 2007中的“现有”库存:

我有3张表:“库存”、“手头”和“销售”,列名称相同: A1=样式#B1=小型C1=中型D1=大型E1=X-大型 我在“库存”和“手头”中有相同数量的行,但在“销售”中总是不同的

我希望有一个函数来实现这一点:

  • 当我在第一行中添加新行时,将一行从“库存”复制并粘贴到“手头”
  • 在A1=样式#列的“现有”和“销售”表中查找匹配值
  • 扣除“销售”和“现有”匹配行的B:E单元格
  • 任何帮助都将不胜感激

    If Sheets(“Inventory”).Cells(Rows.Count,“A”).End(xlup).Row Sheets(“手头”).Cells(Rows.Count,“A”).End(xlup).Row Then
    
    If Sheets("Inventory").Cells(Rows.Count,"A").End(xlup).Row <> Sheets("On Hand").Cells(Rows.Count,"A").End(xlup).Row Then 
         For k = 1 to Sheets("Inventory").Cells(Rows.Count,"A").End(xlup).Row
             Sheets("On Hand").Range("A" & k & ":E" & k)=Sheets("Inventory").Range("A" & k & ":E" & k)
         Next k
    End If
    
    For i=1 to Sheets("Sales").Cells(Rows.Count,"A").End(xlup).Row
     For j=1 to Sheets("On Hand").Cells(Rows.Count,"A").End(xlup).Row
         If Sheets("Sales").Cells(i, "A") = Sheets("On Hand").Cells(j,"A") Then
             If Sheets("Sales").Cells(i, "B")<>"" then Sheets("On Hand").Cells(j,"B") = Sheets("On Hand").Cells(j,"B") - 1
             If Sheets("Sales").Cells(i, "C")<>"" then Sheets("On Hand").Cells(j,"C") = Sheets("On Hand").Cells(j,"C") - 1
             If Sheets("Sales").Cells(i, "D")<>"" then Sheets("On Hand").Cells(j,"D") = Sheets("On Hand").Cells(j,"D") - 1
             If Sheets("Sales").Cells(i, "E")<>"" then Sheets("On Hand").Cells(j,"E") = Sheets("On Hand").Cells(j,"E") - 1
         End If
     Next j
    Next I
    
    对于k=1的表(“库存”)。单元格(行数,“A”)。结束(xlup)。行 板材(“现有”)。范围(“A”&k&“:E”&k)=板材(“库存”)。范围(“A”&k&“:E”&k) 下一个k 如果结束 对于i=1的表(“销售”)。单元格(行数,“A”)。结束(xlup)。行 对于j=1至板材(“现有”)。单元格(行数,“A”)。结束(xlup)。行 如果板材(“销售”).单元格(i,“A”)=板材(“现有”).单元格(j,“A”),则 如果是板材(“销售”)。单元格(i,“B”)”,则板材(“现有”)。单元格(j,“B”)=板材(“现有”)。单元格(j,“B”)-1 如果是板材(“销售”)。单元格(i,“C”)”,则板材(“现有”)。单元格(j,“C”)=板材(“现有”)。单元格(j,“C”)-1 如果是表(“销售”)。单元格(i,“D”)”,则表(“现有”)。单元格(j,“D”)=表(“现有”)。单元格(j,“D”)-1 如果是板材(“销售”)。单元格(即“E”)”,则板材(“现有”)。单元格(j,“E”)=板材(“现有”)。单元格(j,“E”)-1 如果结束 下一个j 接下来我

    如果此帖子有帮助,请标记为“向上”按钮。

    您可以从1开始。。在您的“库存”表中


    函数不能这样做。一个子程序可以#2可以使用一个或多个
    匹配
    Vlookup
    和/或
    索引
    功能轻松完成#1和#3没有多大意义,除非你能详细说明。请记住,这是一个协作网站,除非您愿意发布您迄今为止尝试过的代码,并对您的问题进行更彻底的解释,否则不要期望得到很多帮助。澄清工作表功能无法做到这一点。一个常规的非工作表函数可以像子函数一样完成它。@TimWilliams-touché。:)@大卫·泽蒙斯-我知道你的意思;-)谢谢你抽出时间来。我试图将代码添加到工作表中,但每次都出现如下编译错误:编译错误:无效的外部过程xlUp
    Private Sub Worksheet_Change(ByVal Target As Range)
      Sheets("OnHand").Cells(Target.Row, Target.Column) = Target.Value
    End Sub