0

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

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

这是代码。数量列是 U 列。它得到错误 1004:参数不是可选的,它突出显示 Set .... = 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
4

1 回答 1

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 表示法放在该子例程中。
于 2013-05-28T03:31:56.717 回答