• Excel vba функции работы со строками. Примеры использования функций VBA. Функции преобразования данных в Oracle

    InStr

    Функция InStr

    InStr(String1,String2[,Compare])
    InStrB(String1,String2[,Compare])

    Функция InStr (In Str ing) служит для поиска номера символа(номера байта для InStrB ), с которого начинается в заданной строке образец поиска. Поиск идет от указанной позиции слева направо. Поиск вхождения одной строки в другую весьма часто используемая операция. Нумерация символов всегда начинается с единицы

    Примечание

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

    Возвращаемое значение

    Возвращает значение типа Variant(Long) , указывающее позицию первого появления одной строки внутри другой

    Перечень возвращаемых значений
    Вариант Значение, возвращаемое функцией InStr
    String1 имеет нулевую длину 0
    String1 имеет значение Null Null
    String2 имеет нулевую длину Start
    String2 имеет значение Null Null
    String2 не найдена 0
    String2 найдена внутри String1 Позиция, в которой обнаружено совпадение
    Start > String2 0

    Параметры
    Элемент Описание
    Start Необязательный. Числовое выражение, которое задает первую позицию для каждого поиска. Если параметр опущен, поиск начинается с позиции первого символа. В том случае, когда значение параметра Start Параметр Start является обязательным, если задан параметр Compare
    String1 Обязательный. Строковое выражение,в котором ведется поиск
    String2 Обязательный. Отыскиваемое строковое выражение
    Compare Необязательный. Задает тип сравнения для строк. Если значение параметра Compare равно Null, возникает ошибка. В том случае, когда параметр Compare опущен,тип сравнения определяется установками оператора Option Compare

    Установки

    Для параметра Compare используются следующие установки:


    Пример " В данном примере функция InStr " возвращает позицию первого появления " одной строки внутри другой строки Dim SearchString, SearchChar, MyPos SearchString ="Русский_Проект" " Исходная строка SearchChar = "Р" " Следует найти "P" " Посимвольное сравнение, начиная с позиции 4. Возвращает 10 MyPos = Instr (4, SearchString, SearchChar, vbTextCompare) " Двоичное сравнение, начиная с позиции 1. Возвращает 1 MyPos = Instr (1, SearchString, SearchChar, 0) " Сравнение является двоичным по умолчанию (последний аргумент опущен) MyPos = Instr (SearchString, SearchChar) " Возвращает 1 MyPos = Instr (1, SearchString, "W") " Возвращает 0 Категория

    (http://www.cyberforum.ru/vba/thread638743.html)

    Вариант1

    strW= (="КОРОТЕЕВ ДМИТРИЙ ВЛАДИМИРОВИЧ") strB=Replace(Replace(strW, Chr(61), ""), Chr(34), "")

    Вариант

    Можно еще через байтовый массив:

    Sub n() Dim Mass() As Byte, n As Long, Zam As String, TXT As String TXT = "=""КОРОТЕЕВ ДМИТРИЙ ВЛАДИМИРОВИЧ" Mass = StrConv(TXT, vbFromUnicode) For n = 0 To UBound(Mass) If Mass(n) <> 34 And Mass(n) <> 61 Then Zam = Zam + Chr$(Mass(n)) Next MsgBox Zam End Sub

    Вариант

    Или фильтрацию мидом:

    Sub nn() Dim n As Long, TXT As String, L As String, Zam As String TXT = "=""КОРОТЕЕВ ДМИТРИЙ ВЛАДИМИРОВИЧ" For n = 1 To Len(TXT) L = Mid$(TXT, n, 1) If L <> """" And L <> "=" Then Zam = Zam + L Next MsgBox Zam End Sub

    Строку 6 можно заменить лайкой:
    Код Visual Basic
    1
    If L Like «[!»»=]» Then Zam = Zam + L

    Вариант

    Еще через поиск позиции и рекурсию:

    Sub test() Dim n As Long, txt As String txt = "=""КОРОТЕЕВ ДМИТРИЙ ВЛАДИМИРОВИЧ" txt = Change(txt, "=") txt = Change(txt, """") MsgBox txt End Sub Function Change(txt As String, What As String, Optional Pos = 1) Dim n As Long If Pos <> 0 Then n = InStr(Pos, txt, What) Change = Mid$(txt, Pos, IIf(n - Pos < 0, Len(txt), n - Pos)) + Change(txt, What, IIf(n = 0, 0, n + 1)) End If End Function

    Еще можно через регулярные выражения, но я их не знаю.

    Вариант

    Через поиск справа налево и рекурсию:

    Код Visual Basic
    1 2 3 4 5 6 7 8 Function Change(txt As String, What As String, Optional Pos As Long) Dim n As Long If Pos = 0 Then Pos = Len(txt) If Pos <> -1 Then n = InStrRev(txt, What, Pos) Change = Change(txt, What, IIf(n = 1, -1, n - 1)) + Mid$(txt, n + 1, Pos - n) End If End Function

    Вариант

    А ещё есть Split и Join

    Strb = Join(Split(Join(Split(strW, "="), ""), """"), "")

    Не по теме: Но это для садистов

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

    With ActiveDocument.Range "верхних регистр.Text = Ucase(.Text) "нижний регистр.Text = Lcase(.Text) End With

    или StrConv() - преобразовать строку (в Unicode и обратно, в верхний и нижний регистр, сделать первую букву слов заглавной и т.п.) — см. ниже

    Операции со строками

    Для данных типа String существует только одна операция – конкатенация (объединение). Например, результатом операции конкатенации трех строковых значений «Петр» & » » & «Иванович» будет строка «Петр Иванович». Возможно также использование другого оператора для операции конкатенации, например: «десяти» + «тысячник». Разница между этими выражениями состоит в том, что в первом случае операндами могут быть значения любого типа (они просто будут преобразовываться в строковые), а во втором – оба операнда должны иметь тип String. Для работы со строками существует большое количество функций (таблица. Функции работы со строками).

    Таблица «Функции работы со строками»

    Функция Описание Пример
    Len(str) Определяет длину строки Из а=lеn(«Персонажи») следует а=9
    Left (<строка>, <длина>) Выделяет из аргумента <строка> указанное количество символов слева Left(» 1234string», 4) =»1234″
    Right(<строка>, <длина>) Выделяет из аргумента <строка> указанное количество символов справа Right(» 1234string», 6) =»string»
    Mid(<строка>, <старт> [, <длина>]) Выделяет из аргумента <строка> подстроку с указанным числом символов, начиная с позиции <старт> Mid («12345678″, 4.3) =»456»
    Mid(<строка>, <старт>) Выделяется подстрока от позиции <старт> до конца строки Mid («12345678″, 4) =»45678»
    LTrim (<строка>) Удаляет пробелы в начале строки LTrim(» печать») =»печать»
    RTrim (<строка>) Удаляет пробелы в конце строки RTrim(«печать «) =»печать»
    Trim (<строка>) Удаляет пробелы в начале и в конце строки Trim(» печать «) =»печать»
    InStr([<старт>, ] < строка1>, <строка2> [, <сравнение>]) Производит поиск подстроки в строке. Возвращает позицию первого вхождения строки <строка2> в строку <строка1>, <старт> — позиция, с которой начинается поиск. Если этот аргумент пропущен, поиск начинается с начала строки Instr(«C:Temp test.mdb», «Test»)=9 Если искомая строка не находится в указанной строке, функция возвращает 0
    InStrRev ([<старт>, ] <строка1>, <строка2> [, <сравнение>]) Ищет подстроку в строке, но начинает поиск с конца строки и возвращает позицию последнего вхождения подстроки. Необязательный аргумент <сравнение> определяет тип сравнения двух строк
    Replace (<строка>, <строкаПоиск>, <строкаЗамена>) Позволяет заменить в строке одну подстроку другой. Эта функция ищет все вхождения аргумента <строкаПоиск> в аргументе <строка> и заменяет их на <строкаЗамена>

    Для сравнения строковых значений можно использовать обычные операторы сравнения числовых значений, так как при сравнении символов сравниваются их двоичные коды. Для сравнения строковых значений также применяется оператор Like, который позволяет обнаруживать неточное совпадение, например выражение «Входной сигнал» Like «Вход*» будет иметь значение True, так как сравниваемая строка начинается со слова «Вход». Символ звездочка (*) в строке заменяет произвольное число символов. Другие символы, которые обрабатываются оператором Like в сравниваемой строке:

    • ? – любой символ (один);
    • #– одна цифра (0–9);
    • [<список>] – символ, совпадающий с одним из символов списка;
    • [!<список>] – символ, не совпадающий ни с одним из символов списка.
    • ASC () - эта функция позволяет вернуть числовой код для переданного символа. Например, ASC("D") вернет 68. Эту функцию удобно использовать для того, чтобы определить следующую или предыдущую букву. Обычно она используется вместе с функцией Chr (), которая производит обратную операцию - возвращает символ по переданному его числовому коду.Варианты этой функции - AscB () и AscW ():
      • AscB () - возвращает только первый байт числового кода для символа.
      • AscW () - возвращает код для символа в кодировке Unicode
    • Chr () - возвращает символ по его числовому коду. Может использоваться в паре с функцией Asc(), но чаще всего её применяют, когда нужно вывести служебный символ (например кавычки - ") , т.к. кавычки просто так в VBA-коде не ввести(нужно ставить двойные) . Я обычно именно эту функцию и использую.

      Dim sWord As String sWord = Chr(34) & "Слово в кавычках" & Chr(34)

      Есть варианты этой функции - ChrB () и ChrW (). Работают аналогично таким же вариантам для функции Asc() .

    • InStr () и InStrRev () - одна из самых популярных функций. Позволяет обнаружить в теле строковой переменной символ или последовательность символов и вернуть их позицию. Если последовательность не обнаружена, то возвращается 0.

      Dim sStr As String sStr = "w" If InStr(1, "Hello, World!", sStr, vbTextCompare) > 0 Then MsgBox "Искомое слово присутсвует!" Else MsgBox "Искомое слово отсутсвует!" End If

      Разница функций в том, что InStr() ищет указанное слово от начала строки, а InStrRev() с конца строки

    • Left () , Right () , Mid () - возможность взять указанное вами количество символов из существующей строковой переменной слева, справа или из середины соответственно.

      Dim sStr As String sStr = "Hello, World!" MsgBox Mid(sStr, 1, 5)

    • Len () - возможность получить число символов в строке. Часто используется с циклами, операциями замены и т.п.
    • LCase () и UCase () - перевести строку в нижний и верхний регистры соответственно. Часто используется для подготовки значения к сравнению, когда при сравнении регистр не важен (фамилии, названия фирм, городов и т.п.) .
    • LSet () и RSet () - возможность заполнить одну переменную символами другой без изменения ее длины (соответственно слева и справа) . Лишние символы обрезаются, на место недостающих подставляются пробелы.
    • LTrim () , RTrim () , Trim () - возможность убрать пробелы соответственно слева, справа или и слева, и справа.
    • Replace () - возможность заменить в строке одну последовательность символов на другую.

      Dim sStr As String sStr = "Hello, World!" MsgBox Replace(sStr, "Hello", "Bay")

    • Space () - получить строку из указанного вами количества пробелов;
      Еще одна похожая функция - Spc () , которая используется для форматирования вывода на консоль. Она размножает пробелы с учетом ширины командной строки.
    • StrComp () - возможность сравнить две строки.
    • StrConv () - возможность преобразовать строку (в Unicode и обратно, в верхний и нижний регистр, сделать первую букву слов заглавной и т.п.) :

      Dim sStr As String sStr = "Hello, World!" MsgBox StrConv("Hello, World!", vbUpperCase)

      В качестве второго параметра параметра могут применяться константы:

        • vbUpperCase: Преобразует все текстовые символы в ВЕРХНИЙ РЕГИСТР
        • vbLowerCase: Преобразует все текстовые символы в нижний регистр
        • vbProperCase: Переводит первый символ каждого слова в Верхний Регистр
        • *vbWide: Преобразует символы строки из однобайтовых в двухбайтовые
        • *vbNarrow: Преобразует символы строки из двухбайтовых в однобайтовые
        • **vbKatakana: Преобразует символы Hiragana в символы Katakana
        • **vbHiragana: Преобразует символы Katakana в символы Hiragana
        • ***vbUnicode: Преобразует строку в Юникод с помощью кодовой страницы системы по умолчанию
        • ***vbFromUnicode: Преобразует строку из Юникод в кодовую страницу системы по умолчанию

      * применимо для локализаций Дальнего востока
      ** применимо только для Японии
      *** не поддерживается операционными системами под управлением Macintosh

    • StrReverse () - «перевернуть» строку, разместив ее символы в обратном порядке. Функция работатет только начиная от Excel 2000 и выше. Пример использования функции, а так же иные методы переворачивания слова можно посмотреть в этой статье: Как перевернуть слово?
    • Tab () - еще одна функция, которая используется для форматирования вывода на консоль. Размножает символы табуляции в том количестве, в котором вы укажете. Если никакое количество не указано, просто вставляет символ табуляции. Для вставки символа табуляции в строковое значение можно также использовать константу vbTab .
    • String () - позволяет получить строку из указанного количества символов(которые опять-таки указываются Вами) . Обычно используются для форматирования вывода совместно с функцией Len ().

    Следующие три функции позволяют работать с массивом строк

    Split (<строка> [, <разделитель>]) – преобразует строку в массив подстрок. По умолчанию в качестве разделителя используется пробел. Данную функцию удобно использовать для разбиения предложения на слова. Однако можно указать в этой функции любой другой разделитель. Например, Split(3, «Этo тестовое предложение») возвращает массив из трех строковых значений: «Это», «тестовое», «предложение». Join (<массивСтрок> [, <разделитель>]) – преобразует массив строк в одну строку с указанным разделителем. Filter(<массивСтрок>, <строкаПоиск>[, <включение>] [, <сравнение>]) – просматривает массив строковых значений и ищет в нем все подстроки, совпадающие с заданной строкой. Эта функция имеет четыре аргумента: <строкаПоиск> – искомая строка; <включение> – параметр (булевское значение), который указывает, будут ли возвращаемые строки включать искомую подстроку или, наоборот, возвращаться будут только те строки массива, которые не содержат искомой строки в качестве подстроки; <сравнение> – параметр, определяющий метод сравнения строк. Еще три функции обеспечивают преобразование строк: LCase(<строка>) – преобразует все символы строки к нижнему регистру, например функция LCase(«ПОЧTA») возвращает строку «почта»; UCase(<строка>) – преобразует все символы строки к верхнему регистру; StrConv(<строка>, <преобразование>) – выполняет несколько типов преобразований строки в зависимости от второго параметра. Этот параметр описывается встроенными константами, например функция StrConv(«poccия», VbProperCase) возвращает значение «Россия».

    И последние две функции генерируют строки символов

    Space(<число>) – создает строку, состоящую из указанного числа пробелов; String(<число>, <символ>) – создает строку, состоящую из указанного в первом аргументе числа символов. Сам символ указывается во втором аргументе.

    Пример

    Создать программу, работающую со строковыми переменными. Для этого создать форму, в метки которой выходят следующие сообщения: 1 метка: сообщается длина строки, введенной в первое текстовое поле (1 строка); 2 метка: преобразует все символы третьего текстового поля (3 строка) в заглавные буквы; 3 метка: выводит вместе содержание первого и второго текстовых полей (1 и 2 строки).

    Технология выполнения

    • Откройте приложение Word, сохраните документ и перейдите в редактор VBA.
    • Создайте форму аналогично приведенному рисунку.
    • Пропишите обработчик события кнопки ОК.
    • Откомпилируйте программу.
    • Запустите форму на выполнение.

    Private Sub CommandButton1_Click() Dim a As String Dim b As String Dim c As String Dim k As String Dim d As String Dim n As Integer a=TextBox1.Text n=Len(a) Label7.Caption=«длина первой строки равна» & n & « символам» c=TextBox3.Text k=Ucase(с) Label8.Caption=k b=TextBox2.Text d=a + » » + b Label9.Caption=d End Sub

    Задача

    Нужно, что бы в экселе в ячейке А1 выполнялся поиск слов, записанных через запятую в столбец А2, а результат, и найденные слова, с числом их повторений (если такое возможно) в искомом тексте, записались в другую, третью, ячейку. (ещё лучше бы было, если б они выделялись (ну или подчеркивались) каким ни будь образом в первой ячейке…что бы их сразу видно было Вот так загоняешь в массив слова:

    Код Visual Basic
    1 2 3 4 5 6 Dim m() As String If InStr(1, Cells(1, 2).Value, ",") > 0 Then m = Split(Replace(Cells(1, 2).Value, " ", ""), ",") Else ReDim m(0): m(0) = Trim(Cells(1, 2).Value) End If

    А потом в цикле по всем словам ищешь(опять же в цикле. во вложенном) Добавлено через 23 минуты

    Код Visual Basic
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 Option Compare Text Option Explicit Sub QWERT() Dim R, N, K Dim m() As String If InStr(1, Cells(1, 2).Value, ",") > 0 Then m = Split(Replace(Cells(1, 2).Value, " ", ""), ",") Else ReDim m(0): m(0) = Trim(Cells(1, 2).Value) End If For R = 0 To UBound(m) N = 1 If InStr(1, Cells(1, 1).Value, m(R)) > 0 Then K = InStr(N, Cells(1, 1).Value, m(R)) Do ПОКРАСИТЬ K, Len(m(R)) N = K + Len(m(R)) K = InStr(N, Cells(1, 1).Value, m(R)) Loop While K > 0 End If Next R End Sub Sub ПОКРАСИТЬ(ST, LN) With Cells(1, 1).Characters(Start:=ST, Length:=LN).Font .Color = RGB(0, 0, 255) .Bold = True End With End Sub

    Добавлено через 15 минут А вот так будет искать по началу слова а выделять всё слово

    Код Visual Basic
    1 2 3 4 5 6 7 8 9 10 11 Sub ПОКРАСИТЬ(ST, LN) LN = LN - 1 Do LN = LN + 1 Loop While VBA.Mid(Cells(1, 1).Value, ST + LN, 1) <> " " With Cells(1, 1).Characters(Start:=ST, Length:=LN).Font .Color = RGB(0, 0, 255) .Bold = True End With End Sub

    Можно сделать что бы искало и не с начала слова, а по части слова. — добавить ещё один цикл Do-Loop. Только смещать начало(ST) влево до пробела (http://www.cyberforum.ru/vba/thread567588.html)

    How to: Match a String against a Pattern (Visual Basic)

    Проверка соответствия строки шаблону String Data Type (Visual Basic) — оператор Like (Visual Basic) . левый операнд оператора Like- строковое выражение, а правый — строка шаблона Like возвращает значение типа Boolean

    Проверка символа

    ? — один любой символ

    • myString состоит из символа W, за которым следуют 2 любых символа

      Dim sMatch As Boolean = myString Like "W??"

    Любой символ из списка и диапазона

    Любой символ и затем один из символов A, C или E

      Dim sMatch As Boolean = myString Like "?" учитывается регистр символов

    • myString = символы num и затем один символ из диапазона: i, j, k, l, m или n:

      Dim sMatch As Boolean = myString Like "num" учитывается регистр символов

    Like работает с как с о строковым массивом нулевой длины string («»). позволяет проверить, что строка является пустой

    Символ из списка или отсутствие символа

    1. Оператор Like используется дважды, и результаты объединяются с помощью оператора Or Operator (Visual Basic) или OrElse Operator (Visual Basic) .
    2. В шаблон первого оператора вставьте список символов в квадратных скобках ().
    3. В шаблон второго оператора в место проверки не помещайте ничегоПример: проверка семизначного номера телефона phoneNum, который должен содержать точно три цифры, после которых следует пробел, дефис точка или никакого символа и затем четыре цифры. (первые три цифры могут быть не отделены от четырех последних — «никакого символа») Null , возникает ошибка. Если задан аргумент тип_сравнения , аргумент начальная_позиция является обязательным. строка_1 Обязательный. Строковое выражение , по которому выполняется поиск. строка_2 Обязательный. Искомое строковое выражение. тип_сравнения Необязательный. Определяет тип сравнения строк . Если значением аргументатип_сравнения является Null, возникает ошибка. Если аргумент тип_сравнения опущен, тип сравнения определяется параметром Значение Ср авнение . Укажите допустимый параметр LCID (LocaleID) для использования правил сравнения, заданных в языковых параметрах.

      Параметры

      Аргумент тип_сравнения использует следующие параметры:

      Возвращаемые значения

      Замечания

      Функция InStrB используется с байтовыми данными, содержащимися в строке. Функция InStrB возвращает позицию байта, а не позицию знака первого вхождения одной строки в другую.

      Примеры

      Использование функции InStr в выражении Каждый раз при использовании выражений можно использовать функцию InStr . Например, если требуется определить позицию первой точки (. ) в поле, которое содержит IP-адрес (названное «IPAddress»), можно использовать функцию InStr для его поиска:

      InStr(1,,».»)

      Функция InStr рассматривает каждое значение в поле «IPAddress» и возвращает позицию первой точки. Следовательно, если значение первого октета IP-адреса равно 10. , функция возвращает значение 3.

      Можно использовать другие функции, использующие результат функции InStr , для извлечения значения октета IP-адреса, который предшествует первой точке, например:

      Left(,(InStr(1,,».»)-1))

      В этом примере функция InStr(1,,».») возвращает позицию первой точки. В результате вычитания 1 определяется количество знаков, предшествующих первой точке, в данном случае - 2. Затем функция Left извлекает эти символы с левой части поля «IPAddress», возвращая значение 10.

      Использование функции InStr в коде Visual Basic для приложений (VBA)

      ПРИМЕЧАНИЕ. Приведенные ниже примеры иллюстрируют использование возможностей модуля Visual Basic for Applications (VBA). Чтобы получить дополнительные сведения о работе с VBA, выберите пунктСправочник разработчика в раскрывающемся списке рядом с кнопкой Поиск , а затем введите один или несколько ключевых слов в поле поиска.

      В данном примере функция InStr используется для получения позиции первого вхождения одной строки в другую.

      Dim SearchString, SearchChar, MyPos SearchString ="XXpXXpXXPXXP" " String to search in. SearchChar = "P" " Search for "P". " A textual comparison starting at position 4. Returns 6. MyPos = Instr(4, SearchString, SearchChar, 1) " A binary comparison starting at position 1. Returns 9. MyPos = Instr(1, SearchString, SearchChar, 0) " Comparison is binary by default " (last argument is omitted). MyPos = Instr(SearchString, SearchChar) " Returns 9. MyPos = Instr(1, SearchString, "W") " Returns 0.

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

    ASC (строковое значение) – применяется для получения числового ASCII кода заданного символа. В качестве параметра можно передать как целую строку (проверка произойдет для первого символа в строке), так и один символ или пробел.

    Chr (код символа) – работает в обратном порядке по сравнению с предыдущей функцией. В качестве параметра мы передаем ASCII код, а на выходе получаем символ по заданному коду. Данная строковая функция актуальна в тех случаях, когда нужно вывести служебный символ, например, кавычки, хотя чаще, используются именованные VBA константы.

    InStr (строка1, строка2, [старт]) – предназначена для поиска последовательности знаков (строка2) в заданной строке (строка1). Можно также задать начальную позицию для поиска вхождения (необязательный параметр “старт”).

    InStrRev (строка1, строка2, [старт]) – аналог предыдущей функции, но поиск происходит в обратном порядке.

    Left (строка, длина) – позволяет вернуть заданное количество знаков (параметр “длина”) для выбранной строки (параметр “ строка ”), начиная слева.

    Right (строка, длина) – позволяет вернуть заданное количество знаков для выбранной строки, начиная справа.

    Mid (строка, длина, старт) – позволяет вернуть заданное количество знаков (параметр “длина”) для выбранной строки, начиная с заданной позиции (параметр “старт”).

    Len (строка) – определяет численное количество символов в строке.

    LCase (строка) – предназначена для преобразования всех символов в переданной строке в нижний регистр.

    UCase (строка) – предназначена для преобразования всех символов в переданной строке в верхний регистр.

    LSet (строка, длина) – заполняет содержимое переменной символами из другой переменной начиная слева, длина не изменяется, лишние знаки будут обрезаны, а вместо недостающих, будут подставляться пробелы.

    RSet (строка, длина) – логика работы та же, что и для предыдущей vba функции работы со строками, но процесс происходит справа.

    LTrim (строка) – удалить пробелы слева в строке

    RTrim (строка) – удалить пробелы справа в строке

    Trim (строка) – удалить пробелы справа и слева в строке

    Replace () – замена в строке одних символов на другие

    Space (количество_пробелов) – формирование строки из заданного количества пробелов

    String (количество, символ) – формирование строки из заданного количества прописанных символов

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

    StrComp (строка1, строка2) – сравнение двух строк, вернет 0 при равенстве, и -1 в противном случае.

    StrConv (строка, метод, ) – данная функция vba является универсальной, так как позволяет преобразовать заданную строку в различные вариации (верхний и нижний регистр, кодировка, перевод байт).

    • Строка – собственно, строковое значение, над которым нужно провести преобразование.
    • Метод – задает метод преобразования, данный параметр может принимать следующие значения:
    1. vbUpperCase – перевод в верхний регистр, значение 1
    2. vbLowerCase – перевод в нижний регистр, значение 2
    3. vbPropperCase – перевод первых символов всех слов в верхний регистр, а остальные символы – в нижний, значение 3.
    4. vbWide – применяется для кодировки восточных языков. Перевод символов в один байт с двухбайтовых. Значение 4.
    5. vbNarrow – аналог предыдущему параметру, но тут происходит перевод двух байт в один, значение 8.
    6. vbKatakana – происходит преобразование символов алфавита Хирагана в символы для алфавита Катана, применим для японского языка, значение 16.
    7. vbHiragana – аналог предыдущего параметра, но тут происходит преобразования вида Катана в Хирагана, значение 32. VBA строковые функции
    8. vbUnicode – перевод заданной строки в Unicode кодировку, значение 64.
    9. vbFormatUnicode – перевод из кодировки Unicode в стандартную, значение 128.
    • LCID – параметр не является обязательным, (vba строковые функции) он задает идентификатор региональных настроек. По умолчанию значение LocaleId, то есть, то значение, что установлено в панели управления.

    StrReverse (строка) – инвертировать расположение знаков в строке, проще говоря, “отзеркаливает”.

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

    1) Функция определения длины строки LENGTH(строка), возвращает количество символов в строке, включая концевые пробелы.

    SELECT LENGTH(‘string ’) FROM DUAL вернет значение 7.

    2) Функции преобразования регистров символов UPPER(строка), LOWER(строка), INITCAP(строка). Для преобразования символов к верхнему регистру используется функция UPPER().

    SELECT UPPER(‘string’) FROM DUAL вернет STRING.

    Если необходимо преобразовать символы строки к нижнему регистру используется функция LOWER().

    SELECT LOWER(‘STrinG’) FROM DUAL вернет string.

    Функция INITCAP преобразовывает каждый первый символ слова к верхнему регистру, а все остальные символы к нижнему при условии, что символ-разделитель между словами пробел.

    SELECT INITCAP(‘string1 string2’) FROM DUAL вернет строку String1 String2.

    3) Функции для обрезания начальных и концевых пробелов LTRIM(строка), RTRIM(строка), TRIM(строка). Соответственно первая функция обрезает все начальные пробелы строки, вторая – все концевые, а третья все начальные и концевые.

    SELECT LTRIM(‘ str1’) FROM DUAL вернет строку str1,
    SELECT RTRIM(‘str2 ’) FROM DUAL вернет строку str2,
    SELECT TRIM(‘ str3 ’) FROM DUAL вернет строку str3.

    4) Функция замены части строки другой строкой REPLACE(исходная_строка, заменяемая_подстрока, заменяющая_подстрока). Для большей ясности рассмотрим пример, в некотором текстовом поле таблицы хранится число. Причем символ-разделитель между целой и дробной частью в некоторых полях «.», а нам для дальнейшей обработки данных нужно, чтобы он во всех полях должен быть «,». Для этого воспользуемся функцией REPLACE следующим образом. REPLACE(field1, ’.’, ’,’) и все символы «.» в поле field будут заменены на символ «,».

    SELECT REPLACE(‘My_string’,’_’,’@’) FROM DUAL вернет строку My@string.

    5) Функции преобразования данных к другим типам данных. TO_CHAR(число) преобразует число в текст. TO_NUMBER(строка) преобразует текст в число. TO_DATE(строка, формат_даты) преобразует строку в дату определенного формата.

    SELECT TO_CHAR(123) FROM DUAL вернет строку 123,
    SELECT TO_NUMBER(‘12345’) FROM DUAL вернет число 12345,
    SELECT TO_DATE(’01.01.2010’,’dd.mon.yyyy’) FROM DUAL вернет дату 01.JAN.2010.

    6) Функция определения вхождения подстроки в строку INSTR(исходная_строка, подстрока, номер_символа). Даная функция позволяет определять номер символа в исходной строке с которого начинается искомая подстрока (если такая есть). Иначе возвращается 0. Например нам нужно определить все должности в таблице Table1, в наименовании которых встречается подстрока «менеджер». Для этого вполне подойдет следующий оператор

    SELECT * FROM TABLE1 WHERE INSTR(POST, ‘менеджер’, 1) > 0.

    То есть оператор SELECT выведет только те записи из таблицы TABLE1 где искомая подстрока «менеджер» будет найдена. Причем поиск будет осуществляться с первого символа. Если поиск нужно осуществлять с другой позиции, то номер символа для начала поиска указывается в третьем параметре.

    SELECT INSTR(‘Small string’, ‘string’, 1) FROM DUAL вернет значение 7,
    SELECT INSTR(‘Small string’, ‘String’, 1) FROM DUAL вернет значение 0.

    7) Функция выделения в исходной строке подстроки SUBSTR(исходная_строка, номер_начального_символа, количество_символов). Рассмотрим такой пример, в пользовательской таблице хранится адрес в виде наименование населенного пункта, название улицы, номер дома. Причем мы точно знаем, что для наименования населенного пункта отводится строго 20 символов (если наименовании населенного пункта меньше чем 20 символов, то остальная часть заполняется пробелами), для наименования улицы 30 символов, для номера дома 3 символа. Далее нам необходимо перенести все адреса из нашей таблицы в другую и при этом все 3 компонента адреса должны быть в разных полях. Для выделения компонент адреса применим функцию SUBSTR().

    SELECT SUBSTR(TABLE_1.ADDRESS, 1, 20) CITY, SUBSTR(TABLE_1.ADDRESS, 21, 30) STREET, SUBSTR(TABLE_1.ADDRESS, 52, 3) TOWN FROM TABLE_1

    Конечно для переноса данных необходимо воспользоваться оператором INSERT, но для понимания работы функции SUBSTR вполне подойдет рассмотренный пример.
    SELECT SUBSTR(‘My_string’, 4, 3) FROM DUAL вернет строку str.

    Рассмотренные выше функции можно использовать во входных параметрах. Так если нам нужно выделить все символы, после какого-то определенного, то в функцию SUBSTR можно передать номер искомого символа из функции INSTR. Например если нужно перенести все символы из поля таблицы, которые расположены после «,» то можно использовать такую конструкцию
    SELECT SUBSTR(My_string, INSTR(My_string, ‘,’, 1), LENGTH(My_string)- INSTR(My_string, ‘,’, 1)+1) FROM DUAL.
    Для определения начального символа мы вызываем функцию INSTR(), которая вернет номер символа первого вхождения подстрок «,». Далее мы определяем количество символов до конца строки как разницу длины строки и номера первого вхождения подстроки.

    8) Для определения кода символа используется функция ASCII(строка), которая возвращает код 1 символа строки. Например

    SELECT ASCII(W) FROM DUAL вернет значение 87.

    9) Обратная функция преобразования кода символа в символ CHR(число).

    SELECT CHR(87) FROM DUAL вернет символ W.

    Функции для работы с числами в Oracle.

    В СУБД Oracle имеется ряд функций для работы с числами. К ним относятся функции возведение числа в степень POWER(), округление ROUND() и т. д.

    1) Функция ABS(число) возвращает абсолютное значение аргумента.
    SELECT ABS(-3) FROM DUAL вернет значение 3.

    2) Функция CEIL(число) возвращает наименьшее целое, большее или равное переданному параметру.
    SELECT CEIL(4.5) FROM DUAL вернет значение 5.

    3) Функция FLOOR(число) возвращает наибольшее целое, меньшее или равное переданному параметру.
    SELECT FLOOR(3.8) FROM DUAL вернет значение 3.

    4) Функция MOD(число_1, число_2) возвращает остаток от деления первого параметра на второй.
    SELECT MOD(5, 3) FROM DUAL вернет значение 2. Примечание. Если второй параметр равен 0, то функция возвращает первый параметр.

    5) Функция округления ROUND(число_1, число_2). Округляет первый переданный параметр до количества разрядов, переданного во втором параметре. Если второй параметр не указан, то он принимается равным 0, то есть округление производится до целого значения. Примеры
    SELECT ROUND(101.34) FROM DUAL вернет значение 101,
    SELECT ROUND(100.1268, 2) FROM DUAL вернет значение 100.13
    SELECT ROUND(1234000.3254, -2) FROM DUAL вернет значение 1234000,
    SELECT ROUND(-100.122, 2) FROM DUAL вернет значение -100.12.

    6) Функция усечения значения TRUNC(число_1, число_2). Возвращает усеченное значение первого параметра до количества десятичных разрядов, указанного во втором параметре. Примеры
    SELECT TRUNC(150.58) FROM DUAL вернет значение 150
    SELECT TRUNC(235.4587, 2) FROM DUAL вернет значение 235.45
    SELECT TRUNC(101.23, -1) FROM DUAL вернет значение 100

    7) В СУБД Oracle имеется ряд тригонометрических функций SIN(число), COS(число), TAN(число) и обратные им ACOS(число), ASIN(число), ATAN(число). Они возвращают значение соответствующей названию тригонометрической функции. Для прямых функции параметром является значение угла в радианах, а для обратных – значение функции. Примеры
    SELECT COS(0.5) FROM DUAL вернет значение 0.877582561890373
    SELECT SIN(0.5) FROM DUAL вернет значение 0.479425538604203
    SELECT TAN(0.5) FROM DUAL вернет значение 0.546302489843791
    SELECT ACOS(0.5) FROM DUAL вернет значение 1.0471975511966
    SELECT ASIN(0.5) FROM DUAL вернет значение 0.523598775598299
    SELECT ATAN(0.5) FROM DUAL вернет значение 0.463647609000806

    8) Гиперболические функции. SINH(число),
    COSH(число), TANH(число). SINH() возвращает гиперболический синус переданного параметра, COSH() возвращает гиперболический косинус переданного параметра, TANH() возвращает гиперболический тангенс переданного параметра. Примеры
    SELECT COSH(0.5) FROM DUAL вернет значение 1.12762596520638
    SELECT SINH(0.5) FROM DUAL вернет значение 0.521095305493747 SELECT TANH(0.5) FROM DUAL вернет значение 0.46211715726001

    9) Функция возведения в степень POWER(число_1, число_2). Примеры
    SELECT POWER(10, 2) FROM DUAL вернет значение 100
    SELECT POWER(100, -2) FROM DUAL вернет значение 0.0001

    10) Логарифмические функции. LN(число) возвращает натуральный логарифм переданного параметра, LOG(число_1, число_2) возвращает логарифм второго переданного параметра по основанию, переданному первом параметре. Причем первый параметр должен быть больше нуля и не равен 1. Примеры
    SELECT LN(5) FROM DUAL вернет значение 1.6094379124341
    SELECT LOG(10, 3) FROM DUAL вернет значение 0.477121254719662

    11) Функция извлечения квадратного корня SQRT(число). Пример
    SELECT SQRT(4) FROM DUAL вернет значение 2.

    12) Функция возведение числа е в степень EXP(число). Пример
    SELECT EXP(2) FROM DUAL вернет значение 7.38905609893065.

    Функции для работы с датами в Oracle

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

    1) ADD_MONTHS(дата, количество_месяцев) возвращает дату, отстоящую от даты, переданной в первом параметре на количество месяцев, указанном во втором параметре. Примеры
    SELECT ADD_MONTHS(’01-JAN-2010’, 2) FROM DUAL вернет дату ’01.03.2010’
    SELECT ADD_MONTHS(’01-JAN-2010’, -3) FROM DUAL вернет дату ’01.10.2009’
    SELECT ADD_MONTHS(’30-JAN-2010’, 1) FROM DUAL вернет дату ’28.02.2010’

    2) Для определения текущей даты и времени применяется функция SYSDATE. Область применения данной функции намного шире чем может показаться на первый взгляд. В первую очередь это контроль за вводом данных в БД. Во многих таблицах выделяется отдельное поля для сохранения даты последнего внесения изменений. Также очень удобно контролировать некие входные параметры для отчетов, особенно если они не должны быть больше чем текущая дата. Помимо даты данная функция возвращает еще и время с точностью до секунд. Пример
    SELECT SYSDATE FROM DUAL вернет дату ‘22.05.2010 14:51:20’

    3) Если необходимо определить последний день месяца, то для этого вполне подойдет функции LAST_DAY(дата). Её можно использовать для определения количества дней, оставшихся в месяце.
    SELECT LAST_DAY(SYSDATE) – SYSDATE FROM DUAL.
    В результате выполнения данного оператора будет выведено количество дней от текущей даты до конца месяца. Пример
    SELECT LAST_DAY(’15-FEB-2010’) FROM DUAL вернет дату ’28.02.2010’.

    4) Функция для определения количества месяцев между датами MONTHS_BETWEEN(дата_1, дата_2). Примеры
    SELECT MONTHS_BETWEEN(’01-JUL-2009’, ’01-JAN-2010’) FROM DUAL вернет значение -6
    SELECT MONTHS_BETWEEN(’01-JUL-2009’, ’10-JAN-2010’) FROM DUAL вернет значение -6.29032258064516.
    Примечание. Если дни месяцев совпадают, то функция возвращает целое число, в противном случае результат будет дробным, причем количество дней в месяце будет принято 31.

    5) Функция NEXT_DAY(дата, день_недели) позволяет определить следующую дату от даты, переданной в первом параметре, которая соответствует дню недели, переданном во втором параметре. Пример
    SELECT NEXT_DAY(’01-JUL-2009’, ’mon’) FROM DUAL вернет дату ‘06.07.2009’, то есть следующий понедельник после 1 июля 2009 наступил 6 числа.

    6) Округление даты ROUND(дата, формат). Второй параметр не обязателен, если его не указывать, то он принимается за ‘DD’, то есть округление будет произведено до ближайшего дня. Примеры
    SELECT ROUND(SYSDATE) FROM DUAL вернет дату ‘23.05.2010’
    SELECT ROUND(SYSDATE, MONTH) FROM DUAL вернет дату ‘01.06.2010’, округляется до ближайшего первого дня месяца.

    7) Усечение даты. Функция TRUNC(дата, формат). Также как и рассмотренная выше может не иметь второго параметра. В таком случае усечение будет производиться до ближайшего дня. Примеры
    SELECT TRUNC(SYSDATE) FROM DUAL вернет дату ’22.05.2010’
    SELECT TRUNC(SYSDATE, ‘WW’) FROM DUAL вернет дату ’01.05.2010’
    SELECT TRUNC(SYSDATE, ‘Day’) FROM DUAL вернет дату ‘16.05.2010’.

    Функции преобразования данных в Oracle

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

    1) TO_CHAR(данные, формат). На первый взгляд синтаксис довольно прост, но за счет второго параметра можно очень точно описать в какой формат преобразовать данные. Итак в строку можно преобразовать как дату, так и числовое значение. Рассмотрим вариант преобразования даты к строке. Значения самых распространенных форматов приведены в таблице, более полная информация содержится в технической документации.

    Таблица значений форматов для преобразования числа в строку.

    SELECT TO_CHAR(SYSDATE, ‘D-MONTH-YY’) FROM DUAL вернет строку ‘7-MAY -10’
    SELECT TO_CHAR(SYSDATE, ‘DDD-MM-YYYY’) FROM DUAL вернет строку ‘142-05-2010’
    SELECT TO_CHAR(SYSDATE, ‘Q-D-MM-YYY’) FROM DUAL вернет строку ‘2-7-05-010’
    SELECT TO_CHAR(1050, ‘9.99EEEE) FROM DUAL вернет строку ‘ 1.050E+03’
    SELECT TO_CHAR(1400, ‘9999V999’) FROM DUAL вернет строку ‘1400000’
    SELECT TO_CHAR(48, ‘RM’) FROM DUAL вернет строку ‘ XLVIII’

    2) Функция преобразования строки в дату TO_DATE(строка, формат). Возможные значения форматов уже рассмотрены выше, поэтому приведу несколько примеров использования данной функции. Примеры
    SELECT TO_DATE(’01.01.2010’, ‘DD.MM.YYYY’) FROM DUAL вернет дату ‘01.01.2010’
    SELECT TO_DATE(’01.JAN.2010’, ‘DD.MON.YYYY’) FROM DUAL вернет дату ‘01.01.2009’
    SELECT TO_DATE(’15-01-10’, ‘DD-MM-YY’) FROM DUAL вернет дату ‘15.01.2010’.

    3) Функция преобразования строки в числовое значение TO_NUMBER(строка, формат). Самые распространенные значения форматов перечислены в таблице, поэтому рассмотрим применение данной функции на примерах. Примеры
    SELECT TO_NUMBER(‘100’) FROM DUAL вернет число 100
    SELECT TO_NUMBER(‘0010.01’, ’9999D99’) FROM DUAL вернет число 10.01
    SELECT TO_NUMBER("500,000","999G999") FROM DUAL вернет число 500000.

    Зачастую строки в программе содержат ненужные символы пробелов в конце или в начале строки, которые необходимо удалить, т.к. посторонние начальные или конечные пробелы в строке могут вызвать "неполадки" в работе программы.

    В VBA имеются три функции, предназначенные для удаления начальных и конечных пробелов из строки: LTrim, RTrim, Trim . Следует иметь ввиду, что эти функции на самом деле не изменяют исходную строку, а возвращают копию строки с удаленными лишними пробелами.

    Определение длины строки

    Длину строки, как правило, надо знать при форматировании сообщений для пользователя или при форматировании строковых данных, вводимых процедурой в рабочий лист Excel или документ Word. VBA для этих целей использует функцию Len . В приведенным ниже листинге между знаками круглых скобок и словом присутствует по два пробела.



    Следует быть внимательными со строками фиксированной длины. Поскольку строка фиксированной длины имеет всегда одну и ту же длину, функция Len всегда возвращает объявленную длину строки, независимо от фактической длины строки. Например, если в строковой переменной фиксированной длины StrokeName, имеющей длину 15 символов, фактически находится слово "солнце", то функция Len(StrokeName) возвратит результат 15. Чтобы в таком случае узнать фактическую длину строки (в нашем случае - 6), необходимо использовать следующую комбинацию функций: Len(Trim(StrokeName)) .

    Сравнение и поиск строк

    В VBA имеются две функции, помогающих сравнивать строки: StrComp, InStr .

    Функция StrComp

    Синтаксис


    StrComp (String1, String2 [, Compare])


    String1, String2 - любые два строковых выражения, которые необходимо сравнивать.

    При выполнении StrComp возвращается одно из следующих значений:

    • -1, если String1 меньше String2;
    • 0, если String1 и String2 равны;
    • 1, если String1 больше String2.


    В вышеприведенном листинге в текстовом режиме сравниваются две строки: "Строка по умолчанию" и " Строка по умолчанию". Результат сравнения = 1, т.е. "Строка по умолчанию" больше, чем " Строка по умолчанию".

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

    Функция InStr

    Функция InStr дает возможность определить, содержит ли одна строка другую строку.

    Синтаксис


    StrComp ( String1, String2 [, Compare])


    String1, String2 - любые допустимые строковые выражения. Функция проверяет содержится ли String1 в String2.

    Compare - необязательный аргумент, может быть любой из следующих предопределенных констант (если он опускается, то используется текущая установка Option Compare):

    • vbBinaryCompare - бинарное сравнение двух строк;
    • vbTextCompare - текстовое сравнение двух строк;
    • vbDatabaseCompare - используется только в Microsoft Access.

    Start - необязательный аргумент, является численным выражением и указывает положение символа в String1, с которого должна начинаться проверка.


    InStr возвращает число, обозначающее положение символа в String1, где было обнаружено String2. Если InStr не находит String2 в String1, то возвращается 0. Если String1 (или String2) имеет значение Null, то функция также возвращает Null.



    Разбиение строки

    Иногда возникает необходимость разбиения строки на составляющие части. В VBA эту задачу решают три функции: Left, Right, Mid .

    Функция Left

    Синтаксис


    Left (String, Length)


    Функция возвращает копию String, начиная с первого символа и включая количество символов, заданных с помощью Length. Если Length является числом, большим, чем фактическая длина String, то возвращается все строковое выражение String.

    Функция Right

    Синтаксис


    Right (String, Length)


    String - любое допустимое строковое выражение.

    Length - любое численное значение.


    Функция возвращает копию String, начиная с последнего символа и включая справа налево количество символов, заданных с помощью Length. Если Length является числом, большим, чем фактическая длина String, то возвращается все строковое выражение String. Функция Right всегда копирует символы от конца строки к ее началу.

    Функция Mid

    Синтаксис


    Mid (String, Start, [, Length])


    String - любое допустимое строковое выражение.

    Length, Start - любые численные значения.


    Функция Mid возвращает копию String, начиная с положения символа в String, задаваемого с помощью аргумента Start . Необязательный аргумент Length определяет количество копируемых в Mid символов из String. Если Start содержит большее число, чем фактическая длина String, то возвращается пустая строка.



    Символы, которые нельзя ввести с клавиатуры

    Зачастую случается, что надо ввести какой-либо символ, для которого отсутствует клавиша на клавиатуре (например, символ копирайта). Другая ситуация - когда надо в строку включить служебный символ VBA (самый распространенный случай - включение двойных кавычек).

    Чтобы включить в строку символы, которые невозможно ввести с клавиатуры, или которые имеют особое значение для VBA, используется функция Chr .

    Синтаксис


    Chr (Charcode)


    Charcode - любое численное выражение, являющееся допустимым кодом для набора символов, используемого компьютером. Должен быть целым числом от 0 до 255.

    Функция Chr принимает код отдельного символа в качестве аргумента и возвращает строку, содержащую соответствующий этому коду символ. Данная функция использована в вышеприведенных листингах для перевода строки при выводе сообщения на экран Chr (13).


    Поскольку символы, используемые для начала новой строки, являются очень важными при форматировании сообщений и других строковых данных, которыми манипулируют VBA-процедуры, имеется несколько предопределенных констант для этих символов, чтобы не было необходимости использовать функцию Chr:

    • vbCr - символ возврата каретки. Эквивалент Chr(13)
    • vbLf - символ смещения на одну строку. Эквивалент Chr(10)
    • vbCrLf - символ возврата каретки+смещения на одну строку. Эквивалент Chr(13)+ Chr(10)
    • vbTab - символ табуляции. Эквивалент Chr(9)

    Для просмотра списка код-символ надо открыть справочную систему VBA и по запросу "character sets" будет представлена соответствующая таблица.



    Форматирование значений данных

    Очень часто формат данных на выходе программы по тем или иным причинам нас не совсем устраивает. Эту задачу решает функция Format .

    VBA-функция Format идентична функции Format в Excel и использует те же символы-заполнители форматирования данных.

    Синтаксис


    Format (Expression [, Format[, Firstdayofweek [, Firstweekofyear]]])


    Expression - любое допустимое выражение (обязательный аргумент).

    Format - допустимое выражение именованного или определенного пользователем формата.

    Firstdayofweek - константа, которая определяет первый день недели.

    Firstweekofyear - константа, которая определяет первую неделю года.


    Чтобы использовать функцию Format, надо либо задать предопределенный формат , либо создать образ определенного формата , используя символы-заполнители.


    Именованные форматы для использования с функцией Format

    Именованный формат Действие
    General Date Форматирует информацию о дате и времени в последовательное число даты, используя установки формата даты и времени для данного компьютера.
    Long Date Форматирует в последовательной дате только часть, содержащую дату, используя установки компьютера для Long-формата даты.
    Medium Date Форматирует в последовательной дате только часть, содержащую дату, используя установки компьютера для Medium-формата даты.
    Short Date Форматирует в последовательной дате только часть, содержащую дату, используя установки компьютера для Short-формата даты.
    Long Time Форматирует в последовательной дате только часть, содержащую время, используя установки компьютера для Long-формата времени.
    Medium Time Форматирует в последовательной дате только часть, содержащую время, используя установки компьютера для Medium -формата времени.
    Short Time Форматирует в последовательной дате только часть, содержащую время, используя установки компьютера для Short -формата времени.
    General Number Форматирует число в строку без каких-либо особых символов.
    Currency Форматирует число с символом денежной единицы, разделителем тысяч и только двумя десятичными разрядами.
    Fixed Форматирует число так, чтобы всегда была, по крайней мере, одна цифра перед десятичным разделителем и, по крайней мере, две цифры после него.
    Standart Форматирует число с разделителем тысяч так, чтобы была, по крайней мере, одна цифра перед десятичным разделителем и, по крайней мере, две цифры после него.
    Percent Форматирует число как процентное отношение, умножая его на 100 и добавляя символ процента.
    Scientific Форматирует число в обычный экспоненциальный формат.
    Yes/No Возвращается строка "Да" если форматируемое число ненулевое, иначе - "Нет".
    True/False Возвращается строка "Истина" если форматируемое число ненулевое, иначе - "Ложь".
    On/Off Возвращается строка "Вкл" если форматируемое число ненулевое, иначе - "Выкл".

    Символы-заполнители для создания пользовательских форматов

    Символ-заполнитель Действие (в качестве примера используется число 1234.45)
    0 Цифровой символ, отображает цифру, если таковая находится в этой позиции, или 0, если - нет. Можно использовать символ 0 для отображения начальных нулей для целых чисел и конечных нулей в десятичных дробях: 00000.000 отображает 01234.450
    # Цифровой символ, отображает цифру, если таковая находится в этой позиции, иначе - не отображает ничего. Символ-заполнитель # эквивалентен 0, кроме того, что начальные и конечные нули не отображаются: #####.### отображает 1234.45
    $ Отображает знак доллара: $###,###.00 отображает $1 234,45
    . Десятичный символ-заполнитель, отображает десятичную точку в обозначенной позиции в строке символов-заполнителей 0: #.##.## отображает 1234.45
    % Символ процента, умножает значение на 100 и добавляет знак процента в позицию, указанную символами-заполнителями 0:#.#0.00% отображает число 0.12345 как 12.35% (происходит округление)
    , Разделитель тысяч, добавляет запятые как разделители тысяч в строках символов-заполнителей 0 и #: ###,###,###.00 отображает 1 234,45
    E- e- Отображает значение в экспоненциальном формате со знаком порядка только для отрицательных значений: #.####E-00 отображает 1.23445Е03
    E+ e+ Отображает значение в экспоненциальном формате со знаком порядка как для отрицательных, так и для положительных значений: #.####E+00 отображает 1.23445Е+03
    / Отделяет день, месяц и год для форматирования значений дат.
    m Указывает, как отображать месяцы в датах: m отображает 1, mm - 01, mmm - янв, mmmm - Январь
    d Указывает, как отображать дни в датах: d отображает 1, dd - 01, ddd - Вс, dddd - воскресенье
    y Отображает день года как число от 1 до 366
    yy Указывает, как отображать годы в датах: yy - 66, yyyy - 1966
    q Отображает квартал года как число от 1 до 4
    w Отображает день недели как число (1 - воскресенье)
    ww Отображает неделю года как число от 1 до 54
    : Отделяет часы, минуты и секунды в значениях формата времени: hh:mm:ss - 01:01:01, h:m:s - 1:1:1
    h Указывает, как отображать часы: hh - 01, h - 1
    m Указывает, как отображать минуты: mm - 01, m - 1
    s Указывает, как отображать секунды: ss - 01, s - 1
    AM/PM Отображает время в 12-часовом формате времени с добавленными АМ или РМ
    @ Символьный заполнитель, отображает пробел, если не имеется соответствующего символа в форматируемой строке.
    Отображает все символы в верхнем регистре.
    > Отображает все символы в нижнем регистре.