【问题标题】:Cannot use result of index in vba function for further computation无法使用 vba 函数中的索引结果进行进一步计算
【发布时间】:2021-12-28 14:46:25
【问题描述】:

我正在 Excel VBA 中构建一个自定义函数,以接收具有 Webull 分布的数组的第 n 个(此处为:第 5 个)元素。这可行,但是我无法对结果进行进一步的计算,例如简单的乘法,而不会出错。

Function weib(xr, shape, scaler)
    n = Application.Weibull_Dist(xr, shape, scaler * 100, 0)
    weib = n
End Function

Function good(xr, shape, scaler)
    n = Application.Index(Application.Weibull_Dist(xr, shape, scaler * 100, 0), 5, 0)
    good = n
End Function

Function nogood(xr, shape, scaler)
    n = Application.Index(Application.Weibull_Dist(xr, shape, scaler * 100, 0), 5, 0) * 1
    nogood = n
End Function

为什么“nogood”功能不起作用?它只在末尾添加 * 1 - 我该如何解决?

【问题讨论】:

    标签: vba function indexing excel-formula weibull


    【解决方案1】:

    在测试中,n 是一个Variant 数组,其下限为1。这会在尝试乘以 1 时导致 Type Mismatch。所以一个(劣质)解决方案是:

    Function good(xr, shape, scaler)
        n = Application.Index(Application.Weibull_Dist(xr, shape, scaler * 100, 0), 5, 0)
        good = n(1)
    End Function
    
    Function nogood(xr, shape, scaler)
        n = Application.Index(Application.Weibull_Dist(xr, shape, scaler * 100, 0), 5, 0)
        nogood = n(1) * 1
    End Function
    

    更好的解决方案是在Index 调用中使用1 而不是0

    Function good(xr, shape, scaler)
        n = Application.Index(Application.Weibull_Dist(xr, shape, scaler * 100, 0), 5, 1)
        good = n
    End Function
    
    Function nogood(xr, shape, scaler)
        n = Application.Index(Application.Weibull_Dist(xr, shape, scaler * 100, 0), 5, 1) * 1
        nogood = n
    End Function
    

    您甚至可以完全跳过使用Index(也许是最好的解决方案):

    Function good(xr, shape, scaler)
        good = Application.Weibull_Dist(xr, shape, scaler * 100, 0)(5, 1)
    End Function
    
    Function nogood(xr, shape, scaler)
        nogood = Application.Weibull_Dist(xr, shape, scaler * 100, 0)(5, 1) * 1
    End Function
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-30
      • 2021-09-29
      • 2012-09-28
      • 1970-01-01
      • 1970-01-01
      • 2020-06-16
      相关资源
      最近更新 更多