#excel
#excel
Вопрос:
В настоящее время у меня есть лист Excel со многими функциями =AVERAGE(диапазон) (каждый раз разные диапазоны), которые мне нужно изменить на =AVERAGEIF(диапазон, «<>0»), чтобы избежать подсчета 0. Есть ли способ быстро найти и заменить их все? простое удаление всех нулей возвращает среднюю функцию #!DIV/0
, и это невозможно отобразить на графике, поэтому это не вариант, который работает.
Ответ №1:
Этот короткий макрос будет работать с очень простыми формулами, такими как:
=AVERAGE(A1:A10)
Это не будет работать с такими формулами, как:
=AVERAGE(A1:A10) 1
В стандартном модуле введите:
Sub FormulaFixer()
Dim r As Range, s As String, core As String, dq As String
dq = Chr(34)
For Each r In ActiveSheet.UsedRange
If r.HasFormula Then
s = r.Formula
If Left(s, 9) = "=AVERAGE(" And Left(s, 11) <> "AVERAGEIF(" Then
core = Mid(s, 10)
core = Left(core, Len(core) - 1)
r.Formula = "=AVERAGEIF((" amp; core amp; ")," amp; dq amp; "<>0" amp; dq amp; ")"
End If
End If
Next r
End Sub
Перед:
После:
Если у вас более сложные уравнения, макрос необходимо будет изменить.