2017-10-20 36 views
0

我试图用代码来计算增值税在同一条直线E(同一行净额)但增值税的答案远高于净额的20%。与总金额相同的问题。我认为这两个数字可能会拿出一些其他数字,而不仅仅是净额。下面是我的代码的一部分,请给我一些建议吗?非常感谢尝试在E中的同一行净额计算增值税,但得到的答复是不正确的

Option Explicit 

Sub copy_info() 
Dim i As Long, j As Long, lastRow As Long 
Dim sh As Worksheet 

With Sheets("Order List") 
.Range("A22:F50").Clear 
.Range("A21") = "PART CODE" 
.Range("B21") = "DESCRIPTION" 
.Range("C21") = "PRICE" 
.Range("D21") = "QUANTITY" 
.Range("E21") = "NET AMOUNT" 
.Range("F21") = "SHEET NAME" 
.Range("A21:F21").HorizontalAlignment = xlCenter 
.Range("A21:F21").VerticalAlignment = xlCenter 
.Range("A21:F21").Font.Bold = True 
End With 

j = 22 

For Each sh In ActiveWorkbook.Sheets 
    If sh.Name <> "Order List" And sh.Name <> "INDEX" And sh.Name <> "SELECTOR" Then 
     lastRow = sh.Cells(sh.Rows.Count, "B").End(xlUp).Row 
     For i = 28 To lastRow 
      If sh.Range("G" & i) > 0 And sh.Range("G" & i) <> "QUANTITY" Then 
       sh.Range("b" & i).Copy Destination:=Worksheets("Order List").Range("A" & j) 
       sh.Range("e" & i & ":g" & i).Copy Destination:=Worksheets("Order List").Range("B" & j) 
       Sheets("Order List").Range("E" & j) = Sheets("Order List").Range("C" & j) * Sheets("Order List").Range("D" & j) 
       Sheets("Order List").Range("F" & j) = sh.Name 
       Sheets("Order List").Range("B" & j + 1) = "" 
       Sheets("Order List").Range("B" & j + 2) = "VAT" 
       Sheets("Order List").Range("E" & j + 1) = "" 
       Sheets("Order List").Range("E" & j + 2) = Application.WorksheetFunction.Sum(Columns("E:E")) * 0.2 
       Sheets("Order List").Range("B" & j + 3) = "TOTAL" 
       Sheets("Order List").Range("E" & j + 3) = Application.WorksheetFunction.Sum(Columns("E:E")) 


       j = j + 1 
      End If 
     Next i 
    End If 
Next sh 
+0

在你列的求和E你没有定义你是summi的表单NG。 –

+0

我定义之后,仍然显示错误的答案。 –

+0

你正在总结'E列'。这是你真正想要的吗? – jsotola

回答

0

您不应该使用整列的总和。 代替为增值税:

Application.WorksheetFunction.Sum(Columns("E:E")) * 0.2 

用途:

Application.WorksheetFunction.Sum(Range("E22", "E" & j)) * 0.2 

,而不是和总:

Application.WorksheetFunction.Sum(Columns("E:E")) 

用途:

Application.WorksheetFunction.Sum(Range("E22", "E" & j + 2)) 
+0

我认为这**可能是OP后面的内容,但只有在通过说'Sheets(“Order List”)来限定'Range'对象时才能工作。如果没有这种资格,它将在任何活动表格上加总值,可能或不可能是“订单列表”。 – YowE3K

+0

你是对的。我需要在其上添加图纸名称。非常感谢 –

相关问题