×
Traktatov.net » Excel. Трюки и эффекты » Читать онлайн
Страница 62 из 146 Настройки

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

В процессе работы с программой иногда возникает необходимость изменить представление даты. Оперативно решить эту задачу поможет функция ДатаПолная. Например, если дата отображается в виде 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

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