2013-05-28 145 views
0

我有許多產品的數據圖表。將公式的值賦給單元格

我想篩選每種類型的產品,計算該類型的總數量以及該類型內的產品數量。最後將該函數的放入第2頁的一列中。

這是代碼。的數量列列U.它得到錯誤1004:參數不可選,它凸顯了集... = = FunctionR1C1部分....

Function T_Quantity() 
    ActiveSheet.Range("U").Select 
    Total = FunctionR1C1 = "=subtotal(9,C[0])" 
End Function 

Function T_Count(ref_column) 
    ActiveSheet.Range("U").Select 
    Total = FunctionR1C1 = "=subtotal(2,C[0])" 
End Function 

Sub Total_Count() 
Dim my_array() As String 
Dim iLoop As Integer 
Dim iCount As Integer 

iCount = 1 
ReDim my_array(3) 

my_array(0) = "=M1747B" 
my_array(1) = "=M1747C" 
my_array(2) = "=M1766B" 

For iLoop = LBound(my_array) To UBound(my_array) 

    ActiveSheet.Range("A:BB").Select 

    Selection.AutoFilter Field:=15, Criteria1:=my_array 
    Application.CutCopyMode = False 

    'Calculate the quantity and no of lot, put in colum A,B in sheet 2' 
    Set Worksheets("Sheet2").Cells(iCount, 1) = T_Quantity() 
    Set Worksheets("Sheet2").Cells(iCount, 2) = T_Count() 
    Application.CutCopyMode = False 

    iCount = iCount + 1 

Next iLoop 

End Sub 
+1

你沒有傳遞任何參數給函數;你的函數沒有返回任何值,因此,當你可以/應該使用'Sub'時,你正在使用一個函數。此外,'Total = FunctionR1C1 =「= subtotal(9,C [0])」'是無意義的,它是一個布爾表達式(最好),它將只返回一個'True'或'False'。 –

+0

是的,我是一個begginer,所以我的知識有點有限:「>但是我認爲當你需要返回一個值,那麼你需要使用一個子函數insted另外一件事,我不知道分配公式也可以,你可以爲我改寫函數,我只是想把函數的「值」賦值給一個變量或者傳遞給一個單元格THANKs –

+1

是和否你應該使用函數* calculate *和如果你只是簡單地操縱工作表對象 - 你正在做的事情 - 這可能是你現有的子程序的一部分,或者它可能是另一個子程序,我會試着給你一個建議。 –

回答

0

讓我們先從這個,看看是否讓你任何接近你想要的結果:

Sub Total_Count() 
Dim my_array() As String 
Dim iLoop As Integer 
Dim iCount As Integer 

iCount = 1 

ReDim my_array(3) 
my_array(0) = "=M1747B" 
my_array(1) = "=M1747C" 
my_array(2) = "=M1766B" 

For iLoop = LBound(my_array) To UBound(my_array) 
    ActiveSheet.Range("A:BB").Select 
    Selection.AutoFilter Field:=15, Criteria1:=my_array 
    Application.CutCopyMode = False 

    'Calculate the quantity and no of lot, put in colum A,B in sheet 2' 
    Worksheets("Sheet2").Cells(iCount, 1).FormulaR1C1 = "=subtotal(9,C[0])" 
    Worksheets("Sheet2").Cells(iCount, 2).FormulaR1C1 = "=subtotal(2,C[0])" 
    Application.CutCopyMode = False 
    iCount = iCount + 1 

Next iLoop 

End Sub 

我改變什麼:

  • 與工作表單元格對象時消除Set關鍵字。 Set用於分配對象變量。由於您調用的函數似乎只是設置單元的FormulaR1C1屬性,因此我將.FormulaR1C1屬性添加到這些行,然後,而不是使用Function,我直接將函數的R1C1表示法直接放入此子例程中。
+0

謝謝,我現在的代碼實際上是完全一樣的,我只是將這些列的值粘貼到另一個表格中的另一列(因爲我對參考不太熟悉:)謝謝你的幫助 –