簡體   English   中英

使用評估語法在忽略錯誤值的列范圍中查找 MAX

[英]Find MAX in Column Range ignoring Error values using Evaluate Syntax

我已經定義了一個名為Rng的范圍。 RngColumns(2)包含數字和 #N/A 錯誤值。 我想在此列中找到 MAX 值,然后比較它是否為>0

Col A    Col B
--------------
ansdlsd  1
sdlsds   1
lgdfkf   2
fdlksd   2
sdlsdks  3
sds sds  5
sdlkjq   #N/A
eowmf    #N/A
pwpwo    #N/A
qwdds    #N/A
ospw     #N/A
dlsls    #N/A
qpdmf    #N/A

我嘗試使用Application.Evaluate的簡寫語法,即[] ,但代碼返回類型不匹配錯誤 13 -(監視窗口中的錯誤 2029)。

If [MAX(IF(NOT(ISNA(Rng.Columns(2))),Rng.Columns(2)))] > 0 Then
    do something...
End If

我也試過:

If Application.Aggregate(4, 6, Rng.Columns(2), 1) > 0 Then...

出現錯誤: Error 2015: Variant/Error

在此處輸入圖像描述

我可以在工作表中使用 Excel Array Formula (Ctrl+Shft+Entr)獲得 MAX:

{=MAX(IF(NOT(ISNA(B2:B14)),B2:B14))}

我想這與Rng.Columns(2)沒有被[]括號正確評估有關。

還是其他原因導致此錯誤?

嘗試這個:

Sub GetMax()

Dim rng As Range, lr As Long
With Sheet1 'Change accordingly
    lr = .Cells(.Rows.Count, "A").End(xlUp).Row
    Set rng = .Range("A1:B" & lr)
    If Application.Aggregate(4, 6, rng.columns(2)) > 0 Then
        Debug.Print "Max is higher than 0"
    Else
        Debug.Print "Max is not higher than 0"
    End If
End With

End Sub

如果你想使用.Evaluate你可以改變這一行: If Application.Aggregate(4, 6, rng.columns(2)) > 0 Then ,為此: If.Evaluate("AGGREGATE(4,6," & rng.Columns(2).Address & ")") > 0 Then

這樣做的原因是我們可以在AGGREGATE function 中使用MAX並告訴它忽略錯誤值。


為什么您的嘗試沒有成功:

您嘗試[]失敗的原因是您不能使用這些括號來評估帶有變量的公式。 您需要實際使用Application.Evaluate 其次,您需要為公式提供實際地址。 我在上面的答案中實現了.Evaluate版本。

您嘗試使用AGGREGATE引發錯誤的原因是您需要省略AGGREGATEMAX function 中的最后一個參數。 如果您要在工作表上嘗試它,它也會引發#VALUE錯誤。 您根本不需要輸入索引號,因為MAX顧名思義,只返回一個值。

對於那些擁有不支持AGGREGATE工作表功能的舊 ms excel 版本(<2010)的人:

Sub GetMax_oldstyle()
    Dim rng$, lr As Long
    With Sheet1 'Change accordingly
        lr = .Cells(.Rows.Count, "A").End(xlUp).Row
        rng = .Range("A1:B" & lr).Columns(2).Address(0, 0)
        If .Evaluate("MAX(IF(NOT(ISNA(" & rng & "))," & rng & "))") > 0 Then
            Debug.Print "Max is higher than 0"
        Else
            Debug.Print "Max is not higher than 0"
        End If
    End With
End Sub

測試:

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM