Excel. Трюки и эффекты | страница 59



Поиск максимального значения в диапазоне

В процессе работы с большими объемами данных часто возникает необходимость быстрого поиска максимального значения определенного диапазона (либо всего рабочего листа). Например, если в таблице хранится информация о торговой выручке за каждый день в течение года, то, чтобы найти максимальную дневную выручку вручную, потребуется слишком много времени и усилий. Для автоматизации данного процесса можно применить макрос, код которого приведен в листинге 2.20.

Листинг 2.20. Поиск максимального значения

Sub FindMaxValue()

On Error Goto NoCell

If Selection.Count > 1 Then

' Поиск максимального значения в выделенных ячейках

Selection.Find(Application.Max(Selection)).Select

Else

' Поиск максимального значения во всех ячейках листа

ActiveSheet.Cells.Find(Application.Max(ActiveSheet.Cells)).Select

End If

Exit Sub

NoCell:

MsgBox «Максимальное значение не найдено»

End Sub

После запуска данного макроса будет выделена ячейка, содержащая максимальное значение. Если выделен диапазон, поиск осуществляется только в нем; если же диапазон не выделен, то поиск ведется по всему рабочему листу. Если максимальное значение не обнаружено, то по окончании поиска на экране отобразится окно с сообщением Максимальное значение не найдено (текст этого сообщения можно корректировать по своему усмотрению путем внесения соответствующих изменений в код макроса).

Автоматическая замена значений диапазона

Рассмотрим трюк, с помощью которого можно автоматически заменять значения ячеек диапазона на какие-либо фиксированные значения. В листинге 2.21 показан код одного из макросов, которые позволяют решить данную задачу.

Листинг 2.21. Автоматическая замена значений

Sub ReplaceValues()

Dim cell As Range

' Проверка каждой ячейки диапазона на возможность замены _

значения в ней (отрицательные значения заменяются на -1, _

положительные – на 1)

For Each cell In Range(«C1:C3»).Cells

If cell.Value < 0 Then

cell.Value = -1

ElseIf cell.Value > 0 Then

cell.Value = 1

End If

Next

End Sub

В данном примере обрабатывается диапазон С1:C3. После применения приведенного выше макроса все положительные значения данного диапазона будут заменены на 1, а отрицательные – на -1.

Очевидно, что с помощью подобных макросов можно заменять значения в любых диапазонах.

Засекречивание содержимого ячейки

При необходимости можно скрыть от несанкционированного просмотра либо редактирования содержимое той или иной ячейки. Рассмотрим применение данной операции на конкретном примере.