VBA Excel. Функция Split (синтаксис, параметры, значения)

    Использование функции Split в VBA Excel, ее синтаксис и параметры. Значения, возвращаемые функцией Split. Примеры использования.

    Функция Split предназначена в VBA Excel для разделения строки на подстроки по специальным меткам — разделителям. Разделителем может быть как отдельный символ, так и строка из нескольких символов. Функция Split по своему действию является обратной функции Join, которая создает одну строку из массива подстрок.

    Синтаксис функции

    Обязательным параметром функции Split является Expression. Если остальные параметры явно не указаны, используются их значения по умолчанию.

    Параметры функции

    Параметр Описание Значение
    по умолчанию
    Expression Строка, содержащая подстроки и разделители Нет
    Delimiter Разделитель, представляющий один или более символов Пробел
    Limit Максимальное число подстрок, на которые должна быть разделена входная строка -1
    Compare* Определяет, какое используется сравнение, двоичное — CompareMethod.Binary (0) или текстовое — CompareMethod.Text (1) 0

    *Если используется двоичное сравнение (0 или CompareMethod.Binary), функция чувствительна к регистру букв. Если используется текстовое сравнение (1 или CompareMethod.Text), функция не чувствительна к регистру букв.

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

    Функция Split возвращает одномерный массив с индексацией от нуля, который содержит указанное параметром Limit число подстрок. Чаще всего, функция Split используется со значением параметра Limit по-умолчанию, равному -1, когда возвращаются все найденные в исходной строке подстроки.


    Пример 1

    Результат в MsgBox:

    vremya
    ne
    zhdet

    В первом примере используются Delimiter и Limit по-умолчанию.


    Пример 2

    Результат в MsgBox:

    vremya
    ne-zhdet

    Во втором примере Delimiter = «-«, а Limit = 2.


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

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

    Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

    13 комментариев для “VBA Excel. Функция Split (синтаксис, параметры, значения)”

    1. Надежда

      Это — невероятно круто!
      И вы очень хорошо иллюстрируете примерами.
      Спасибо!

    2. Попытался сделать в стандартном модуле простую функцию, которая бы брала строку из ячейки и делила ее посредством Split, а потом извлекала из созданного массива по номеру аргумента нужное значение. Не вышло… Выдает №ЗНАЧ!
      Если возможно, скажите, что не так.

      1. Евгений

        Добрый день, Сергей!
        Внесите небольшие изменения, и функция будет работать:

        Учтите, что нумерация массива начинается с нуля, то есть первая подстрока будет возвращена при Номер = 0.

    3. Здравствуйте, а если необходимо с помощью Split выбрать компонент из Исходной строки, где Delimiter = «,» и в последующем еще раз разделить Исходную строку с помощью Delimiter = «;», перенеся ее в следующую строку
      Пример, 1563,484,466;151,01,52
      Результат
      1563 484 466
      151 01 52

      1. Евгений

        Здравствуйте, Алина!
        Можно сделать так:

      1. Евгений

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

    4. Здравствуйте. А «нулевую» индексацию изменить никак нельзя, верно? В моем случае приходится городить следующее:

      Т.е. мне необходимо, чтобы первый индекс массива был не нулевым. Option Base1 тут не помогает. Есть ли другой способ, кроме, описанного мной выше.

      1. Евгений

        Добрый день, Артем!
        Упростить ваш код можно следующим образом:

        1. Да, в примере, который я привел, можно упростить. Но это в нем и не требуется, это лишь пример того, как я «избавляюсь» от нулевого индекса. В моем «настоящем» макросе все довольно сложно, именно из-за этого нулевого индекса. Поэтому я задал вопрос, вдруг есть такая возможность, а я о ней не знаю. Как вариант, можно и без функции split обойтись, но тогда код на пару-тройку строк длиннее будет.

          1. Евгений

            Могу предложить такой вариант:

    5. Спасибо за подсказку. Вышел из положения следующим образом:

      Не знал, что нижние индексы можно сдвигать в паре с верхними по типу: ReDim Preserve a(n To UBound(a) + n), где n = 1,2,3 и т.д.

    Добавить комментарий

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