【问题标题】:how can I use two variables inside a sumproduct formula in vba?如何在 vba 的 sumproduct 公式中使用两个变量?
【发布时间】:2021-02-16 20:34:48
【问题描述】:

我在一张纸上有两个表格和三个变量,如下所示

  1. LastSize 为我的第一个表的最后一列的编号
  2. LastMat 表示我的第二个表的最后一列的编号
  3. LastProduct 表示我的第一张和第二张表的最后一行的编号(两者相等)

我想在 VBA 的 sumproduct 函数中使用它们,但我不知道如何编写。

为了帮助您解决我的问题:

  • to_char 是一个将列数转换为单词的函数(如:to_char(3) 为 D)
  • 我是我的循环的计数器
"=sumnproduct("LastSize"5:"LastSize""LastProduct" , "to_char(I)"5:"to_char(I)""LastProduct")

【问题讨论】:

    标签: vba variables syntax formula sumproduct


    【解决方案1】:

    VBA 没有SUMPRODUCT 函数。因此,您必须使用 VBA 的 WorksheetFunction 方法以该名称调用 Excel 的函数。这是语法。

    Dim MyResult As Double
    MyResult = WorksheetFunction.Sumproduct([Arg1],[Arg2],[Arg3],[etc])
    

    Excel 要求每个参数都是一个范围,例如 =SUMPRODUCT(A2:A1,C2:C15,F2:F15, [etc]) 您可以使用 VBA 提供的任何方式创建这些范围。这些方法中的任何一种都可以。

    Dim Rng1 As Range
    Dim Rng2 As Range
    Dim Rng3 As Range
    Set Rng1 = Range("A2:A15")
    Set Rng2 = Range(Cells(2, 3), Cells(15, 3))
    Set Rng3 = Range(Cells(2, "F"), Cells(15, "F))
    
    MyResult = WorksheetFunction.Sumproduct(Rng1, Rng2, Rng3)
    

    当然,指定范围的任何或所有参数都可以是变量。

    Dim A As String, B As String
    A = Cells(1, 1).Value         ' the cell holds a cell or range address or column ID
    B = Cells(1, 2). Value
    Set Rng1 = Range(A)
    Set Rng2 = Range(Cells(2, A), Cells(15, B))
    Set Rng3 = Range(Range(A), Range(B))
    
    ' or
    Dim R As Long, C As Long
    R = Cells(Rows.Count, "A").End(xlUp).Row
    C = Cells(1, Columns.Count).End(xlToLeft).Column
    Set Rng1 = Range(Cells(2, "A"), Cells(R, C))
    

    注意定义单元格的语法:Cells([Row], [Column])。 [Row] 必须始终是一个数字,但 [Column] 可以是一个数字或一个有效的 ID(它是一个字符串)。字符串很难强制转换为地址,执行速度较慢,因为 Excel 必须将它们转换为数字,并且无法计算。因此,建议您在行和列中都使用数字。此类数字的推荐数据类型为Long。

    【讨论】:

    • 是的,你是对的,但我还有另一个问题,我怎么能把我的代码发给你?并解释我的问题,它只有 12 行,但我不能在这里发送
    猜你喜欢
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-19
    相关资源
    最近更新 更多