2013-05-28 49 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

谢谢,我现在的代码实际上是完全一样的,我只是将这些列的值粘贴到另一个表格中的另一列(因为我对参考不太熟悉:)谢谢你的帮助 –