У меня есть следующий код:
Sheet1.Range("AB3").Value = Application.WorksheetFunction.AverageIfs( _
.Range("AB5:AB" & CStr(i)), _
.Range("AB5:AB" & CStr(i)), _
">=0", .Range("AB5:AB" & CStr(i)), "<>N/A")
Чтобы получить среднее значение диапазона и исключить значения -ve
и N/A
, но есть момент, когда весь диапазон равен N/A
,поэтому я получаю следующую ошибку:
unable to get the average property of the worksheetfunction class
Чтобы избежать этого, я попробовал это:
Sheet1.Range("AB3").Value = Application.WorksheetFunction.IfError( _
Application.WorksheetFunction.AverageIfs( _
.Range("AB5:AB" & CStr(i)), _
.Range("AB5:AB" & CStr(i)), ">=0", _
.Range("AB5:AB" & CStr(i)), "<>N/A"), "N/A")
Но безуспешно.Любая помощь будет оценена.
РЕДАКТИРОВАТЬ:
В Excel это работает нормально, но не в VBA (в коде позади)
Просто сделать небольшой тест в Excel этоотлично работает:
=IFERROR(AVERAGEIFS(AF5:AF10,AF5:AF10,"<>n/a"),"N/A")
в приведенной выше формуле, если все данные в диапазоне «AF5: AF10» равны «н / д», формула возвращает «Н / Д», что является правильным.