Отображение только максимума множественных итераций (Microsoft Excel)
У Майка есть три ячейки (A1: A3), которые показывают результаты вычислений. Ему нужен способ определить максимальное значение, которое когда-либо появлялось в любой из этих ячеек, и сохранить это значение в ячейке E5. Он знает, как получить максимум из трех, но когда он пересчитывает рабочий лист, если значения в A1: A3 меньше максимального значения в E5 (на основе предыдущих определений максимума в A1: A3), тогда E5 не должно измениться. Другими словами, E5 должен изменяться только в том случае, если то, что указано в A1: A3, больше, чем в E5. Майк не знает, как произвести такой расчет.
Есть два способа решить эту проблему. Первый — создать простую формулу, которая будет помещена в ячейку E5:
=MAX(A1:A3,E5)
Функция MAX проверяет различные значения, на которые она ссылается, и затем возвращает максимум из них — именно то, что требуется. Однако, поскольку эта формула помещается в ячейку E5 и также ссылается на E5, она вернет ошибку. Это потому, что формула создает круговую ссылку. Excel может справиться с этим, но для этого нужно внести небольшое изменение в конфигурацию:
-
Выберите «Параметры» в меню «Инструменты». Excel отображает диалоговое окно «Параметры».
-
Откройте вкладку «Расчет». (См. Рис. 1.)
-
Убедитесь, что установлен флажок Итерация.
-
Щелкните ОК.
Теперь Excel будет обрабатывать циклические ссылки, такие как простая формула, которую вы поместили в ячейку E5.
Второй подход — использовать макрос для выполнения вычислений. Этот подход может быть предпочтительным, потому что вы можете не захотеть (по какой-то причине) включать циклические ссылки в своей книге. Следующее — это фактически обработчик событий, добавленный в код для рабочего листа. (Самый простой способ:
Щелкните правой кнопкой мыши вкладку листа, откройте окно кода из появившегося контекстного меню и добавьте макрос в это окно кода.)
Private Sub Worksheet_Calculate() Dim dMax As Double dMax = Application.WorksheetFunction.Max(Range("A1:A3")) If dMax > Range("E5") Then Application.EnableEvents = False Range("E5") = dMax Application.EnableEvents = True End If End Sub
Макрос запускается каждый раз при пересчете рабочего листа. Он берет максимум A1: A3 и сравнивает его с тем, что есть в E5. Только если оно больше, это значение помещается в E5.
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (10915) применим к Microsoft Excel 97, 2000, 2002 и 2003.
Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и новее) здесь:
link: / excelribbon-Only_Showing_the_Maximum_of_Multiple_Iterations [Отображается только максимальное количество множественных итераций]
.