【问题标题】:Variable sumproduct if in VBA如果在 VBA 中,变量 sumproduct
【发布时间】:2017-03-22 18:50:01
【问题描述】:

我正在尝试在 VBA 中使用 Ifs 执行 SumProduct 结果,同时使用数组,但出现类型不匹配错误。更具体地说,我想要

  1. 当 HT 列中的范围满足某些条件时
  2. 当 HS 列中的范围满足某些条件时
  3. 将 HT 列与 HV 列和后续列相乘

代码如下:

For Day = 1 To DaysTill
    For m = 0 To Rot
        For n = 0 To StepsNumber

            RArray((Day - 1) * (Rot + 1) + m, n) = Application.WorksheetFunction.SumProduct(--(Range("HT12:HT1048576") <= RotArray((Day - 1) * (Rot + 1) + m)), --(Range("HS12:HS1048576")) = Day, Range("HT12:HT1048576"), Range("HV12:HV1048576" + n)) * PriceStepArray(n)
        Next n
    Next m
Next Day    

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    我猜你在这段代码中发生了错误:

    Range("HV12:HV1048576" + n)

    您不能将 n 的值添加到字符串中,而是需要编写如下:

    Range("HV12:HV" &amp; (1048576 + n))


    由于n 应该增加列而不是行索引,因此您可以像评论中提到的@OES 一样使用它

    Range("HV12:HV1048576").Offset(,n)



    旁注:

    + 用于添加数字(int、double、float、byte、...)

    &amp; 用于连接字符串

    【讨论】:

    • 谢谢,但我想更改列而不是行。
    • n 是到列的偏移量?
    • 这不起作用.. Range("HV12:HV" & (1048576 + n)) 因为你会扩展行... 使用: Range("HV12:HV1048576").Offset( ,n)
    • 是的,我想更改列。我会用OES的建议告诉你
    • OES 我用了你说的,但是还是有类型不匹配的错误。
    猜你喜欢
    • 2021-02-16
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多