将公式的值分配给单元格

时间:2013-05-28 02:18:16

标签: function vba excel-2007 formula

我有一个包含许多产品的数据图表。

我想过滤每种类型的产品,计算该类型的总数量以及该类型中的产品数量。最后将该函数的放入工作表2中的一列。

这是代码。数量列是列U.它得到错误1004:参数不是可选的,它突出显示Set .... = FunctionR1C1 = .... part

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 个答案:

答案 0 :(得分: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表示法直接放在这个子程序中。