gpt4 book ai didi

excel - 计算 SMA 时处理空白单元格

转载 作者:行者123 更新时间:2023-12-04 19:48:48 26 4
gpt4 key购买 nike

我试图跳过一个范围内的空白单元格,这样它就不会改变我的简单移动平均线。因此,我尝试从一个范围开始,将非空白值“复制/粘贴”到一个名为 oRng 的新范围内,以便我可以使用新范围来计算我的 SMA。

我在这一行收到错误 5,说“参数或过程调用不正确”

Set oRng = Application.Union(oRng, cell)

这是我的完整代码:

Function SMA(rng As Range, N As Integer)

Dim oRng As Range
Dim cell As Range

On Error GoTo ErrHandler

For Each cell In rng
If not IsEmpty(cell) = True Then
Set oRng = Application.Union(oRng, cell)
Next cell

SMA = Application.Average(oRng.Resize(N, 1))

ErrHandler:
Debug.Print Err.Description
End Function

最佳答案

oRng.Resize(N, 1) 不适用于非连续范围。您只能调整连续范围的大小。因此,在使用 Union 将单元格收集到 oRng 之前,您需要调整单元格的大小。

同样在 Dim oRng As Range 之后,变量 oRngNothing 并且您不能在 中使用 Nothing >Union 所以你需要先测试这个并直接 Set oRng = cell.Resize(N, 1) 第一次然后使用 Union :

Public Function SMA(ByVal rng As Range, ByVal N As Long) As Variant
Dim oRng As Range

On Error GoTo ErrHandler

Dim cell As Range
For Each cell In rng
If Not IsEmpty(cell) Then
If oRng Is Nothing Then
Set oRng = cell.Resize(N, 1)
Else
Set oRng = Application.Union(oRng, cell.Resize(N, 1))
End If
Next cell

SMA = Application.Average(oRng)

ErrHandler:
Debug.Print Err.Description
End Function

关于excel - 计算 SMA 时处理空白单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71941476/

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