Текстовые строки
Пользовательская функция (UDF) для перевода ФИО (фамилии, имя, отчества) в дательный падеж. Эту функцию можно использовать как в коде программы, так и как формулу в ячейках листа Excel PS: Функцию написал не я - нашел на просторах интернета, и немного доработал под свои нужды) Пример использования: Sub ПереводФИОвДательныйПадеж() ' если фамилия, имя и отчество - в одной переменной (или ячейке) FIO$ = "Сидоров Иван Скотиныч" ДательныйПадеж$ = DativeCase(FIO$) Debug.Print ДательныйПадеж$ ' результат: Сидорову Ивану Скотинычу ' если фамилия, имя и отчество - в разных переменных (или ячейках) Кому$ = DativeCase("Андреева", "Ольга", "Федоровна") Debug.Print Кому$ ' результат: Андреевой Ольге Федоровне End Sub
|
|||
При загрузке данных в Excel с веб-страниц порой оказывается, что некоторая необходимая нам информация (например, адреса электронной почты) представлена в графическом виде (текст на картинке).
|
|||
Данный макрос предназначен для поиска адресов электронной почты на листе Excel, с последующим выводом найденных адресов на отдельный лист.В прикреплённом файле, на первом листе ("исходные данные"), ячейки заполнены неструктурированной информацией (смесь фамилий, адресов почты, прочей ненужной информации) Макрос вычленяет из текста ячеек адреса электронной почты, и выводит все найденные адреса email в таблицу на втором листе ("результат")Конечно, не помешало бы ещё проверить все найденные адреса почты на корректность (на соответствие стандартам RFC 5322 и RFC 5321), Для поиска адресов email используются регулярные выражения (RegExp)
|
|||
В данной статье показаны 2 способа быстрого поиска значений в двумерных массивах.Поскольку искомое значение может встретиться в нескольких строках обрабатываемого двумерного массива, оба способа получают на выходе отфильтрованный двумерный массив. Способы формирования отфильтрованных массивов - разные:первый способ использует функцию ArrAutofilterEx второй способ - функцию ArraySearchResults Основные отличия и особенности этих 2 способов поиска:
|
|||
Данный макрос предназначен для облегчения анализа длинных текстовых строк.К примеру, в вашем макросе формируется длинная текстовая строка (вы сцепили значения диапазона ячеек, или загрузили текст веб-страницы в текстовую переменную) Чтобы проанализировать текст на этапе отладки программы, вам необходимо изучить структуру этого текста, - а это удобнее делать в текстовом редакторе В этом вам поможет макрос ShowText: Sub ПримерИспользования_ShowText() ' исходный текст любой длины в переменной txt txt = "Некая текстовая строка, которую нам надо сохранить в файл" & vbNewLine & _ "Поскольку текстовая строка весьма длинная, просматривать её в MSGBOX не удобно" & vbNewLine & _ "Потому мы её просмотрим в Блокноте, предварительно создав временный текстовый файл" ' сохраняем строку в файл, и открываем файл в Блокноте ShowText txt End Sub
|
|||
В макросах для Excel иногда требуется производить проверку адреса электронной почты на корректность. В большинстве случаев нужно быть уверенным не только в том, что такой адрес содержит знак @ и точку, но и в том, что все остальные символы представлены буквами, числами или знаками подчеркивания. Sub ПримерПроверкиАдресаПочты() Debug.Print CheckEmail("order@ExcelVBA.ru") ' возвращает TRUE (корректный адрес почты) Debug.Print CheckEmail("123-order@ExcelVBA.ru") ' возвращает TRUE (корректный адрес почты) Debug.Print CheckEmail("create.order@Excel.VBA.ru") ' возвращает TRUE (корректный адрес почты) Debug.Print CheckEmail("mail@Excel-macro.ru") ' возвращает TRUE (корректный адрес почты) Debug.Print CheckEmail("order@ExcelVBA") ' возвращает FALSE (ошибка в адресе почты) Debug.Print CheckEmail("order.ExcelVBA.ru") ' возвращает FALSE (ошибка в адресе почты) Debug.Print CheckEmail("order.ExcelVBA@ru") ' возвращает FALSE (ошибка в адресе почты) End Sub Используемый в функции шаблон может принимать любое количество цифр и букв, символов подчеркивания, точки и тире перед знаком «@» и после символа «@» до точки, но только числа, буквы и символы подчеркивания после точки. Код функции CheckEmail:
|
|||
Функции ChangeFileCharset и ChangeTextCharset предназначены для изменения кодировки символов в текстовых файлах и строках. Исходную и конечную (желаемую) кодировку можно задать в параметрах вызова функций. Список доступных на вашем компьютере кодировок можно найти в реестре Windows в ветке Среди доступных кодировок есть koi8-r, ascii, utf-7, utf-8, Windows-1250, Windows-1251, Windows-1252, и т.д. и т.п. Определить исходную и конечную кодировку можно, воспользовавшись онлайн-декодером: Sub ПримерИспользования_ChangeTextCharset() ИсходнаяСтрока = "бНОПНЯ" ' вызываем функцию ChangeTextCharset с указанием кодировок ' (меняем кодировку с KOI8-R на Windows-1251) ПерекодированнаяСтрока = ChangeTextCharset(ИсходнаяСтрока, "Windows-1251", "KOI8-R") MsgBox "Результат перекодировки: """ & ПерекодированнаяСтрока & """", _ vbInformation, "Исходная строка: """ & ИсходнаяСтрока & """" End Sub
|
|||
Функция SplitLanguages предназначена для отделения русских слов от английских(для разбиения заданной текстовой строки на две, в одной из которых будут только русские слова, а в другой - только английские) Знаки препинания, пробелы, и прочие символы, не относящиеся к конкретному языку, попадают в обе строки. Например, дана исходная строка "Разработка VBA макросов для программы Microsoft Excel" Функция возвратит 2 строки: русскую "Разработка макросов для программы", и английскую "VBA Microsoft Excel" Sub ПримерИспользования() txt = "Разработка VBA макросов для программы Microsoft Excel" РусскаяЧасть = SplitLanguages(txt)(0) АнглийскаяЧасть = SplitLanguages(txt)(1) Debug.Print РусскаяЧасть ' результат: "Разработка макросов для программы" Debug.Print АнглийскаяЧасть ' результат: "VBA Microsoft Excel" End Sub
|
|||
Надстройка предназначена для быстрого просмотра кодов символов текста, введённого в ячейку.Порой бывают ситуации, когда формулы поиска и сравнения выдают неожиданный результат - одинаковые с виду ячейки для формул оказываются разными. И вот в этих случаях на помощь приходит эта надстройка. С её помощью вы быстро обнаружите, что в похожих ячейках одни и те же буквы набраны в разных раскладках или в разных кодировках, а также сможете отличить обычный пробел (с кодом 32) от неразрывного (с кодом 160). Пользоваться надстройкой очень просто - выделите ячейку, содержащую анализируемый текст, и нажмите комбинацию клавиш Ctrl + Alt + Shift + C При выделении на форме результатов позиции с кодом символа - этот символ подсвечивается (выделяется синим) в поле с содержанием текстовой строки. Можно открыть сразу несколько окон просмотра - выделяйте различные ячейки, и для каждой из них нажимайте вышеозвученную комбинацию на клавиатуре:
|
|||
Ситуация: дана строка, в которой через запятую перечислены значения (или диапазоны значений)Требуется подсчитать, сколько значений содержится в строке, или же разбить строку на массив, содержащий все значения из исходной строки. И, если при исходных строках вида "5,6,8,18,2,21" всё просто (достаточно применить VB-функцию Split), то при наличии в строке диапазонов значений вида Число1-Число2 (например, строка "9-15,18,2,11-9") задача заметно усложняется. В этих случаях на помощь придёт функция ArrayOfValues Function ArrayOfValues(ByVal txt$) As Variant ' Принимает в качестве параметра строку типа ",,5,6,8,,9-15,18,2,11-9,,1,4,,21," ' Возвращает одномерный (горизонтальный) массив в формате ' array(5,6,8,9,10,11,12,13,14,15,18,2,11,10,9,1,4,21) ' (пустые значения удаляются; диапазоны типа 9-15 и 17-13 раскрываются)
|
|||
