2016-08-23 103 views
1

在行值我需要根據條件寫VBA代碼: -if訂單有在列d相同的值,F欄,柱P和列P =單位再總結值列Q;如果柱P =量再總結值列S.VBA薩姆了基於條件

Dim lastrow1 As Long 
Dim startrow As Long 
Dim Cumulative As Variant 
Dim y As Long 

With Wb2.Worksheets.Item(1) 
    lastrow1 = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row 
    Cumulative = 0 
    startrow = 4 'Row where your data starts + 1, so row 3 + 1 in this case 

    For y = startrow To lastrow1 
     If Range("P" & y - 1).Value = "Unit" Then 
      Cumulative = Cumulative + Range("Q" & y - 1).Value 
      If Range("F" & y).Value = Range("F" & y - 1).Value And Range("D" & y).Value = Range("D" & y - 1).Value And Range("P" & y).Value = Range("P" & y - 1).Value Then 
       Range("Q" & y - 1 & .Rows.Count).End(xlUp).Value = Cumulative 
       Cumulative = 0 
      End If 
     ElseIf Range("P" & y - 1).Value = "Amount" Then 
       Cumulative = Cumulative + Range("S" & y - 1).Value 
      If Range("F" & y).Value = Range("F" & y - 1).Value And Range("D" & y).Value = Range("D" & y - 1).Value And Range("P" & y).Value = Range("P" & y - 1).Value Then 
       Range("S" & y - 1 & .Rows.Count).End(xlUp).Value = Cumulative 
       Cumulative = 0 
      End If 
     End If 
    Next y 

End With 

但代碼不工作,我在線路Range("S" & y - 1 & .Rows.Count).End(xlUp).Value = Cumulative得到的範圍內的對象錯誤1004。

哪裏是我的代碼的問題?

+0

什麼是你想達到什麼目的?你在尋找什麼樣的範圍? –

+1

檢查'Range'參數時,它失敗 –

+1

注意,所有這一切都可以用公式來完成,而不需要VBA的。 – trincot

回答

1

這是錯誤的Range("S" & y - 1 & .Rows.Count).End(xlUp).Value = Cumulative

它評估爲類似例如S9:1048576,這將引發錯誤1004

將其更改爲:

Range("S" & y - 1 & ":S" & .Rows.Count).End(xlUp).Value = Cumulative

+0

最後使用排謝謝它的工作,但結果是假的 – shinpencil