gpt4 book ai didi

excel - 使用函数将excel公式转换为VBA

转载 作者:行者123 更新时间:2023-12-04 20:32:40 32 4
gpt4 key购买 nike

我在excel中有一个FormulaArray,它是

{=MAX(IF($DB$2:$DI$2<F10,$DB$2:$DI$2))}

它工作得很好。 "F10"等于 55,"then $DB$2:$DI$2"是 41-102 之间的值范围。然后我创建了一个 vba 函数并将其作为公式应用到 excel 中
=ClosestLessThan(F10,$DB$2:$DI$2)

但结果是#VALUE!”,我想不出正确的方法。这是我尝试过的。
Function ClosestLessThan(searchNumber As Double, rangeOfValues As Range) As Double

Dim rng As Range

If rangeOfValues < searchNumber Then
Set rng = rangeOfValues
End If

ClosestLessThan = Application.WorksheetFunction.Max(rng)

End Function

最佳答案

您最大的问题之一是这条线:

If rangeOfValues < searchNumber Then

Range 的默认值对象是 .Value , VBA 无法解释 .Value对于多单元 Range目的。

另一个问题是你称呼它的方式。在 =ClosestLessThan(F10,$DB$2:$DI$2) F10是一个单元格引用(Range 对象),但您将该参数分配给 double数据类型。

试试这个:
Function ClosestLessThan(searchNumber As Range, rangeOfValues As Range) As Double

Dim rng As Range

For each rng in rangeOfValues
If rng < searchNumber.Value Then
Dim rngSearch as Range
If rngSearch is Nothing Then
Set rngSearch = rng
Else
Set rngSearch = Union(rng, rngSearch)
End If
End If
Next

ClosestLessThan = Application.WorksheetFunction.Max(rngSearch)

End Function

像你一样打电话: =ClosestLessThan(F10,$DB$2:$DI$2)

关于excel - 使用函数将excel公式转换为VBA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47787031/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com