Алексей Алексеевич Громаковский - Excel. Трюки и эффекты стр 26.

Шрифт
Фон

Скрытие сообщений об ошибках при вычислениях

В некоторых случаях сообщение об ошибках может оказаться нежелательным – например, если такое сообщение на самом деле свидетельствует не об ошибке в самих расчетах, а о том, что в ячейку, участвующую в расчетах, просто не были введены необходимые данные. В большинстве подобных ситуаций пользователи вручную удаляют формулы из ячеек. Однако это не совсем удобно – например, после ввода данных в соответствующие ячейки формулы все равно придется восстанавливать. Поэтому для решения таких проблем целесообразнее использовать способ, описание которого приводится ниже.

Для скрытия сообщений об ошибках можно использовать режим условного форматирования. Для этого нужно выделить те ячейки с формулами, результаты вычислений которых не должны отображаться в случае возникновения ошибок, затем в режиме Главная → Стили → Условное форматирование определить формулу вида =ЕОШИБКА (ссылка_на_ячейку), где ссылка_на_ячейку – это ссылка на активную ячейку выделенного диапазона. После этого для данной формулы следует установить белый цвет отображения.

После выполненных действий результаты вычислений с ошибками будут выводиться белым цветом и поэтому не будут видны на экране.

Разработка и применение полезных пользовательских функций

Наряду с формулами функции также являются одним из основных инструментов Microsoft Excel. Функции могут быть как системными (то есть изначально заложенными в программу), так и пользовательскими (пользовательская функция – это функция, созданная пользователем с применением языка VBA).

Далее мы познакомимся с несколькими полезными пользовательскими функциями. При описании применения функций подразумевается, что они выбираются в окне Мастер функций (Формулы → Вставить функцию), однако их можно вводить и в строку формул по обычным правилам Excel.

Объединение данных диапазона

Функция Couple предназначена для объединения всех данных, которые расположены в указанном диапазоне, с добавлением пробелов между ними. Код данной функции выглядит следующим образом (листинг 2.43).

Листинг 2.43. Функция Couple

Function Couple(Diapazon)

' Объединение данных, содержащихся в ячейках диапазона _

Diapazon (разделитель между значениями – пробел)

' iCell – текущая ячейка

For Each iCell In Diapazon

' Сцепляются данные только заполненных ячеек

If IsEmpty(iCell) <> True Then

' Добавление значения ячейки в выходную строку

If Couple = "" Then

Couple = iCell

Else

Couple = Couple & " " & iCell

End If

End If

Next

End Function

Как обычно, на первом этапе в окне Мастер функций нужно выделить данную функцию и нажать кнопку ОК. На втором этапе следует указать диапазон ячеек, содержимое которых необходимо объединить, и вновь нажать ОК – результат отобразится в ячейке, в которой установлен курсор.

Функция Couple выгодно отличается от стандартной функции СЦЕПИТЬ тем, что легко можно указать произвольный диапазон, а также тем, что объединенные данные разделяются пробелом.

Объединение данных с учетом форматов

Функция CoupleFormat работает аналогично функции Couple с той разницей, что она объединяет данные указанного диапазона с соблюдением форматов. Код функции представлен в листинге 2.44.

Листинг 2.44. Функция CoupleFormat

Function CoupleFormat(Diapazon)

' Объединение текстовых данных, содержащихся в ячейках _

диапазона Diapazon (разделитель между значениями – пробел)

' iCell – текущая ячейка

For Each iCell In Diapazon

' Сцепляются данные только заполненных ячеек

If IsEmpty(iCell) <> True Then

' Добавление текста ячейки в выходную строку

If CoupleFormat = "" Then

CoupleFormat = iCell.Text

Else

CoupleFormat = CoupleFormat & " " & iCell.Text

End If

End If

Next

End Function

После выбора функции следует указать требуемый диапазон данных и нажать кнопку ОК – результат отобразится в ячейке, в которой установлен курсор.

Эксперименты с датой

В процессе работы с программой иногда возникает необходимость изменить представление даты. Оперативно решить эту задачу поможет функция ДатаПолная. Например, если дата отображается в виде 04.08.2005, то данная функция преобразует ее в вид 0 4 Августа 2 005. Код функции приведен в листинге 2.45.

Листинг 2.45. Функция ДатаПолная

Function ДатаПолная(Ячейка)

' Получение данных в заданной ячейке в формате _

"dd mmmm yyyy"

Дата = Format(Ячейка, "dd mmmm yyyy")

If IsDate(Ячейка) = True Or IsDate(Дата) = True Then

' Возврат строки с полной датой

ДатаПолная = StrConv(Дата, vbProperCase)

Else

' Данные в ячейке не являются датой

ДатаПолная = "<>"

End If

End Function

После выбора функции следует указать ячейку с датой, которую необходимо преобразовать.

Несомненным достоинством данной функции является то, что она может преобразовать представление даты даже в тех ячейках, в которых установлен формат, отличный от Дата (Числовой, Текстовый и др.). Например, если в ячейке с форматом Общий содержится число 37808, то в результате применения функции ДатаПолная оно будет преобразовано в дату 06 Июля 2003.

Выбор из текста всех чисел

Достаточно интересное решение реализовано в функции ExtractNumeric. С ее помощью из любого текста можно извлечь все числовые значения. Например, если ячейка содержит текст 2 5 сентября 2 004 года, результат применения данной функции будет таким: 252004. Код функции выглядит следующим образом (листинг 2.46).

Листинг 2.46. Функция ExtractNumeric

Function ExtractNumeric(iCell)

' Анализируется каждый символ входной строки iCell

For iCount = 1 To Len(iCell)

' Проверка, является ли анализируемый символ числом

If IsNumeric(Mid(iCell, iCount, 1)) = True Then

' Число добавляется в выходную строку

ExtractNumeric = ExtractNumeric & Mid(iCell, iCount, 1)

End If

Next

End Function

После выбора функции следует указать ячейку, из которой необходимо извлечь числовые значения. Результат отобразится в активной ячейке. Очевидно, что применение данной функции имеет смысл только в том случае, когда текст включает в себя и числовые, и иные символы.

Прописная буква только в начале текста

Как известно, в Excel есть штатная функция ПРОПНАЧ, которая преобразует все первые буквы слов в тексте в прописные. Однако иногда возникает необходимость сделать так, чтобы в тексте была только одна прописная буква – в начале его первого слова. Решить эту задачу поможет пользовательская функция ПрописнНач. Код функции выглядит следующим образом (листинг 2.47).

Листинг 2.47. Функция ПрописнНач

Function ПрописнНач(Текст)

' Пустой текст функция не обрабатывает

If Текст = "" Then ПрописнНач = "<>": Exit Function

' Выделение первого символа и перевод его в верхний регистр

ПервыйСимвол = UCase(Left(Текст, 1))

' Выделение остальной части строки и перевод _

ее в нижний регистр

Обрубок = LCase(Mid(Текст, 2))

' Соединение частей строки и возврат значения

ПрописнНач = ПервыйСимвол & Обрубок

End Function

После выбора функции следует указать ячейку, текст которой нужно преобразовать. Результат преобразования отобразится в активной ячейке.

Перевод чисел в "деньги"

Функцию, о которой рассказывается в данном подразделе, наверняка оценят экономисты, а также работники бухгалтерских и финансовых служб предприятий (организаций). С ее помощью можно преобразовать хранящееся в ячейке число в денежное представление: например, число 53 будет отображаться как 53 руб. 0 0 коп., а число 2 7,43 – как 27 руб. 4 3 коп. Данная функция называется RubKop, ее код приведен в листинге 2.48.

Листинг 2.48. Функция RubKop

Function RubKop(Число)

' Пустые ячейки и ячейки, содержащие текст, функция _

не обрабатывает

If IsNumeric(Число) = False Or Число = "" Then RubKop = _

"<>": Exit Function

' Из числа целой части – рубли

ДлинаЧисла = Len(Число)

ЦелаяЧасть = Fix(Число)

ДлинаЦелой = Len(ЦелаяЧасть)

' Вычисление длины дробной части

ДлинаДроби = ДлинаЧисла – ДлинаЦелой

If ДлинаДроби <> 0 Then

ДлинаДроби = ДлинаЧисла – ДлинаЦелой – 1

End If

' Формирование количества копеек в зависимости от длины _

дробной части

If ДлинаДроби = 0 Then

' Ноль копеек

Копейки = "00"

ElseIf ДлинаДроби = 1 Then

' Дробная часть состоит из одного числа – это _

десятки копеек

Копейки = Right(Число, ДлинаДроби) & "0"

ElseIf ДлинаДроби = 2 Then

' Дробная часть полностью соответствует количеству копеек

Копейки = Right(Число, ДлинаДроби)

Else

' Длина дробной части больше двух – округлим _

дробную часть

Копейки = Right(Число, ДлинаДроби)

If Mid(Копейки, 3, 1) > 4 Then

Копейки = Left(Копейки, 2) + 1

Else

Копейки = Left(Копейки, 2)

End If

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке