VBA Excel. Функции Left, Mid, Right (вырезать часть строки)

Функция ПСТР() в MS EXCEL. Функция ПСТР( ) , английский вариант MID(), возвращает указанное число знаков из текстовой строки, начиная с указанной позиции. Формула =ПСТР(A1;8;5) из строки “Первый канал – лучший” извлекает слово “канал”. Т.е. функция ПСТР() возврачает часть текста из середины строки.

Синтаксис

Mid(строка, начало, [ длина ])

Синтаксис функции Mid состоит из следующих именованных аргументов:

Часть Описание
строка Обязательный аргумент. Строковое выражение, из которого возвращаются символы. Если строка содержит значение NULL, возвращается NULL.
начало Обязательный аргумент. Long. Позиция символа в строке, с которой начинается забираемая часть. Если значение аргумента начало больше, чем число символов в строке, функция Mid возвращает строку нулевой длины (“”).
длина Необязательный аргумент. Variant (Long). Число возвращаемых символов. Если не указано или если меньше, чем символов длины в тексте (включая символ в начале), возвращаются все символы от начальной позиции до конца строки.

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

Примечание

Используйте функцию MidB для работы с содержащимися в строке байтами, например в языках с двухбайтовыми кодировками (DBCS). Вместо указания числа символов аргументы задают число байтов. Образец кода с использованием функции MidB приведен во втором примере.

Примеры запросов

Выражение

Результаты:

SELECT ProductID, Mid(ProductID,5) AS Expr1 FROM ProductSales;

Возвращает “ProductID” и часть ProductID, начиная с позиции знака 5, и отображает результаты в столбце “Вырасть1”.

SELECT ProductID, Mid(ProductID,5,4) AS testMid FROM ProductSales;

Возвращает “ProductID” и часть productID, начиная с позиции знака 5, содержащую 4 знака, и отображает результаты в столбце testMid.

Краткое руководство к статье

В следующей таблице приведено краткое руководство к тому, что рассматривается в этой статье.

Строка Тип Задача Как
1234ABC334 Фиксированный размер Оставить слева 4 символа Left(s,4)
1234ABC334 Фиксированный размер Оставить
справа 3
символа
Right(s,3)
1234ABC334 Фиксированный размер Оставить 5, 6, 7 символы Mid(s,5,3)
«Иван
Петрович
Сидоров»
Переменный
размер
Оставить имя Split(s,» «)(0)
«Иван
Петрович
Сидоров»
Переменный
размер
Оставить
отчество
Split(s,» «)(1)
«Иван
Петрович
Сидоров»
Переменный
размер
Оставить
фамилию
Split(s,» «)(2)
«Иван
Петрович
Сидоров»
Переменный
размер
Оставить
фамилию
Dim v As
Variant
v = Split(s, » «)
lastname= v(UBound(v))

Описание функции ПСТР

Функция ПСТР возвращает заданное число знаков из текстовой строки, начиная с указанной позиции.

Функция ПСТРБ возвращает определенное число знаков из текстовой строки, начиная с указанной позиции, на основе заданного числа байтов.

Функция ПСТР предназначена для языков с однобайтовой кодировкой, а ПСТРБ — для языков с двухбайтовой кодировкой. Язык по умолчанию, заданный на компьютере, влияет на возвращаемое значение следующим образом:

  • Функция ПСТР всегда считает каждый символ (одно- или двухбайтовый) за один вне зависимости от языка по умолчанию.
  • Функция ПСТРБ считает каждый двухбайтовый символ за два, если включена поддержка ввода на языке с двухбайтовой кодировкой, а затем этот язык назначен языком по умолчанию. В противном случае функция ПСТРБ считает каждый символ за один.

К языкам, поддерживающим двухбайтовую кодировку, относятся японский, китайский (упрощенное письмо), китайский (традиционное письмо) и корейский.

Синтаксис

=MID(text, start_num, num_chars) – английская версия

=ПСТР(текст;начальная_позиция;число_знаков) – русская версия

Пример

В первом примере с помощью функции Mid возвращается указанное количество знаков строки.

Dim MyString, FirstWord, LastWord, MidWordsMyString = “Mid Function Demo” ‘ Create text string.FirstWord = Mid(MyString, 1, 3) ‘ Returns “Mid”.LastWord = Mid(MyString, 14, 4) ‘ Returns “Demo”.MidWords = Mid(MyString, 5) ‘ Returns “Function Demo”.

Во втором примере с использованием функции MidB и определяемой пользователем функции (MidMbcs) также возвращаются знаки из строки. Отличие от первого примера состоит в том, что исходная строка представляет собой строку ANSI и ее длина выражена в байтах.

Function MidMbcs(ByVal str as String, start, length) MidMbcs = StrConv(MidB(StrConv(str, vbFromUnicode), start, length), vbUnicode)End FunctionDim MyStringMyString = “AbCdEfG”‘ Where “A”, “C”, “E”, and “G” are DBCS and “b”, “d”, ‘ and “f” are SBCS.MyNewString = Mid(MyString, 3, 4)’ Returns “CdEf”MyNewString = MidB(MyString, 3, 4)’ Returns “bC”MyNewString = MidMbcs(MyString, 3, 4)’ Returns “bCd”

Форматирование

Аналогично ЛЕВСИМВ и ПРАВСИМВ.

См. также

  • Функции (Visual Basic для приложений)

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Рекомендуется Вам:

Updated: 05.05.2020 at 17:19

Распространенные ошибки в использовании функции ПСТР

При использовании функции ПСТР возможны ошибки, если неправильно соблюдать синтаксис или нарушить некоторые основополагающие правила:

  1. Нельзя писать в качестве аргумента этой функции отрицательное значение. В таком случае будет выдана ошибка #ЗНАЧ.
  2. Важно следить, чтобы начальная позиция не была большим числом, чем длина искомой строки. В ином случае будет выдано пустое значение.

Пример

В этом примере будем использовать все три представленные выше функции для извлечения из ФИО его составных частей. Для этого запишем в ячейку «A1» строку «Иванов Сидор Петрович», из которой вырежем отдельные компоненты и запишем их в ячейки «A2:A4».

SubPrimer()

Dimn1 AsLong,n2 AsLong

Range(“A1”)=“Иванов Сидор Петрович”

‘Определяем позицию первого пробела

n1=InStr(1,Range(“A1”),” “)

‘Определяем позицию второго пробела

n2=InStr(n1+1,Range(“A1”),” “)

‘Извлекаем фамилию

Range(“A2”)=Left(Range(“A1”),n11)

‘Извлекаем имя

Range(“A3”)=Mid(Range(“A1”),n1+1,n2n11)

‘Извлекаем отчество

Range(“A4”)=Right(Range(“A1”),Len(Range(“A1”))n2)

EndSub

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

Синтаксис Syntax

Mid(строка, начало, [ длина ]) Mid(string, start, [ length ])

Синтаксис функции Mid состоит из следующих именованных аргументов: The Mid function syntax has these named arguments:

Часть Part Описание Description
строка string Обязательный аргумент. Required. Строковое выражение, из которого возвращаются символы. String expression from which characters are returned. Если строка содержит значение NULL, возвращается NULL. If string contains Null, Null is returned.
начало start Обязательный аргумент. Long. Required; Long. Позиция символа в строке, с которой начинается забираемая часть. Character position in string at which the part to be taken begins. Если значение аргумента начало больше, чем число символов в строке, функция Mid возвращает строку нулевой длины (“”). If start is greater than the number of characters in string, Mid returns a zero-length string (“”).
длина length Необязательный аргумент. Variant (Long). Optional; Variant (Long). Число возвращаемых символов. Number of characters to return. Если не указано или если меньше, чем символов длины в тексте (включая символ в начале), возвращаются все символы от начальной позиции до конца строки. If omitted or if there are fewer than length characters in the text (including the character at start), all characters from the start position to the end of the string are returned.

Applies To

  • Excel for Office 365, Excel 2019, Excel 2016, Excel 2013, Excel 2011 for Mac, Excel 2010, Excel 2007, Excel 2003, Excel XP, Excel 2000
Рейтинг
( 1 оценка, среднее 5 из 5 )
Загрузка ...