Split и Join в VBA - Разделение текстовых строк (Серия VBA 38)

Поділитися
Вставка
  • Опубліковано 6 вер 2024
  • В этом видеоуроке мы рассмотрим функцию VBA Split и все связанные с ней подтемы: все её параметры и важнейшие возможности настройки, такие как vbBinaryCompare и vbTextCompare, родственную ей функцию Join и особенности параметра Limit. Всё это будем разбирать на наглядных практических примерах.
    Хочешь поддержать мой канал? Это можно сделать с помощью функции «Спонсорство»:
    / @bilyalkhassenov

КОМЕНТАРІ • 31

  • @Stepanov_Kirill
    @Stepanov_Kirill 4 місяці тому +1

    Билял, очень круто объяснил, с приведением хороших примеров!!!

  • @pronebo_club
    @pronebo_club 3 роки тому +5

    Всё чётко и по полочкам, 💯🔥🔥🔥🔥

  • @Stas_Gutsal
    @Stas_Gutsal 3 роки тому +6

    Спасибо за видео! Я так понял Split - это аналог "Данные по столбцам", но с более крутым функционалом

  • @SamSambl4
    @SamSambl4 3 роки тому +6

    Спасибо за труд!

  • @Kondrat4ek.dragneel.mesh.
    @Kondrat4ek.dragneel.mesh. 3 роки тому

    Спасибо за урок. Все доступно и понятно. Сделал задание в том файле где мы изучали getOpenFilename, теперь там в отдельный столбец вставляется название выбранного файла, который был скопирован в основной файл.
    .
    .
    .
    For lngCounter1 = LBound(filename) To UBound(filename) 'цикл для каждого элемента массива с выбранными файлами
    filename1 = Split(filename(lngCounter), "\") ' создаем новый массив и разделяем имя из первого массива по символу "\"
    Dim upbound As Long ' переменная для выбора последнего элемента нового массива
    upbound = UBound(filename1)
    filename1 = Split(filename1(upbound), ".") ' разделяем последний элемент массива по символу "." так как этот элемент содержит название.расширение
    Next lngCounter1
    Set rowRange1 = ThisWorkbook.Worksheets(1).Cells(Rows.Count, 3).End(xlUp).Offset(1, 0) ' определение свободной ячейки для вставки имени файла
    rowRange1 = rowRange1.Address
    ThisWorkbook.Worksheets(1).Range(rowRange1) = filename1(0) 'вписываем имя копируемого файла

  • @user-po3zj6fl3u
    @user-po3zj6fl3u 3 роки тому +3

    Спасибо, Билял!

  • @user-rn4vk9jg5m
    @user-rn4vk9jg5m 3 роки тому +3

    Спасибо

  • @user-sc6wz7ni9v
    @user-sc6wz7ni9v 3 роки тому +1

    Отличное видео) Спасибо!

  • @Serega_Zaicev
    @Serega_Zaicev 3 роки тому +4

    круто.... а у меня вопрос Вы не планируете в ближайших уроках разбор извлечения данных из сайтов через VBA и разбор обьекта InternetExplorer.Application ну или подобных ему

    • @BilyalKhassenov
      @BilyalKhassenov  3 роки тому +1

      Здравствуйте, Сергей! Пока в плане другие видео - про умные таблицы и, вероятно, модули классов. Когда-нибудь попозже постараюсь снять про автоматизацию Internet Explorer.
      Хороших Вам выходных!
      С уважением,
      Билял

    • @Stas_Gutsal
      @Stas_Gutsal 3 роки тому +1

      Парсинг сайтов и автоматизация Internet Explorer очень хорошая идея

    • @Serega_Zaicev
      @Serega_Zaicev 3 роки тому +2

      @@Stas_Gutsal тем более что в русско говорящих роликах с подробным описанием как разжёвывает Биляль просто нет, англо язычных много но хрен их поймёш чё они там лапочут

    • @user-yu9ss5jt7m
      @user-yu9ss5jt7m 3 роки тому +1

      @@BilyalKhassenov приветствую. Интересует как организовать поиск в умной таблице по условию

  • @SerTur72
    @SerTur72 3 роки тому +2

    Спасибо, Билял! Очень остро нуждался в знании каким же методом мне вычленить из одной строки нужную информацию! Год начался с актуальных знаний. Ещё 3 вопроса есть: не снимешь ли ты видео, как сортировать большие массы данных и складывать их длины скажем по типу, по признакам ну то есть по нескольким критериям, желательно не менее трех? Считаю очень насущный вопрос. Также думаю многие столкнулись с проблемой англоязычных и русских букв или символов одинаковых по написанию, но VBA их считает разными. Как перевести английские в русские и наоборот с помощью VBA? Я нашел конечно решение на просторах интернета, но Я не понимаю как оно работает. И считаю надо этот пробел устранять. Спасибо

  • @KarpovEvgeniy
    @KarpovEvgeniy 11 місяців тому

    В имени файла может быть точка, поэтому я отсек расширение файла с помощью цикла Do while по последней точке:
    Do
    strNameFile = Left(strNameFile, Len(strNameFile) - 1)
    Loop Until Right(strNameFile, 1) = "."
    strNameFile = Left(strNameFile, Len(strNameFile) - 1)

  • @Egor_ZDE
    @Egor_ZDE 3 роки тому +1

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

  • @julidem86
    @julidem86 3 роки тому

    Спасибо, Билял! С удовольствием смотрю Ваши уроки и учусь по ним. Подскажите а существует ли возможность в VBA работать с файлами, записанными в бинарном виде? Может что-то посоветуете почитать по этой теме?

  • @KarpovEvgeniy
    @KarpovEvgeniy 11 місяців тому

    Спасибо большое за труд!!! А будут еще уроки?

  • @che_pes
    @che_pes Рік тому

    А про связь по измерительными приборами по компортам будет?😢

  • @T.Ljapkin
    @T.Ljapkin 3 роки тому

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

    • @xandergor8926
      @xandergor8926 2 роки тому

      А самому подумать? Там же просто:
      vArr=Split(vName,".")
      ReDim Preserve vArr(UBound(vArr)-1)
      vName=Join(vArr,".")

    • @T.Ljapkin
      @T.Ljapkin 2 роки тому

      @@xandergor8926 похоже, вы меня не поняли. Я сразу для примера взял файл с точками в имени и у мена процедура это дело обрабатывала, правда, не так, как у вас. По-моему, я делал две или три разных процедуры для решения этого задания. За ответ и еще один способ спасибо.

  • @Yurbas_Nikolkin
    @Yurbas_Nikolkin 2 роки тому +3

    Билял, небольшая ошибка в вашем решении вашей задачи по вырезанию только имени файла из пути к нему. Попробуйте прогнать через него вот такой путь «C:\Users\Билял.Хасенов\Рабочий.Стол\Тестовый.файл.xlsx». А ведь он может существовать? :)
    Это я к тому, что вы в одном из ваших уроков говорили о том, что нужно предусматривать всё. По-моему, это называется «защита от дурака» :)

    • @dmitrykorotv9715
      @dmitrykorotv9715 2 роки тому +3

      Замечательные видео. Давно занимаюсь VBA, но, все равно нахожу немало нового.
      Спасибо большое.
      Мой вариант "защиты от дурака" :
      Sub foo()
      Dim s As String
      Dim Res() As String
      s = "C:\Users\Билял.Хасенов\Рабочий.Стол\Тестовый.файл.xlsx"
      'Выделяю сначала куски пути
      Res = Split(s, "\")
      ' Последний элемент получившегося массива ("Тестовый.файл.xlsx") дроблю по точкам
      Res = Split(Res(UBound(Res)), ".")
      ' Укорачиваю "новый" массив на последний элемент
      ReDim Preserve Res(UBound(Res) - 1)
      ' И объединяю все это в одну переменную...
      s = Join(Res, ".")
      MsgBox (s)
      End Sub
      Как то так.
      Наверное есть и другие варианты. Мой - такой.
      P.S. ДОсмотрел комментарии до конца, в самом конце уже есть такое же решение.

    • @KarpovEvgeniy
      @KarpovEvgeniy 11 місяців тому

      Я отсек с помощью цикла по одному символу справа, пока не достигается точка, а потом еще раз сама точка отсекается:
      Do
      strNameFile = Left(strNameFile, Len(strNameFile) - 1)
      Loop Until Right(strNameFile, 1) = "."
      strNameFile = Left(strNameFile, Len(strNameFile) - 1)

  • @KyklaKolduna
    @KyklaKolduna 10 місяців тому

    Здравствуйте, вот моё решение. Сначала я избавилась от "\", а потом из последнего параметра массива убрала "."
    Dim strArray() As String
    Dim strName As String
    strArray = Split("C:\Users\User1\Desktop\Пояснение к шаблонам.pdf", "\")
    strArray = Split(strArray(4), ".")
    strName = strArray(0)

  • @andreik1687
    @andreik1687 3 роки тому

    Скажите,возможно ни реализовать на vba программу,которая в зависимости от результата ввода,сама находит или интерполирует нужное число из таблицы exel?

  • @alexeyyarovoy8093
    @alexeyyarovoy8093 2 роки тому

    Почему у меня в watch window, когда я прогоняю код 1:28 , ничего не работает и value - "out of context"? код один в один прописан как на видео. в чем может быть ошибка?

  • @alexh6176
    @alexh6176 2 роки тому

    Спасибо за видео, данный вариант не сработает если в пути есть имя папки с точкой
    Немного переделал так:
    fullPath = "D:\Folder1\Program v.02.07\autorun.exe"
    fnameArr = Split(fullPath, Application.PathSeparator)
    fnameArr = Split(fnameArr(UBound(fnameArr)), ".")

  • @user-qn5by5iv7u
    @user-qn5by5iv7u 3 роки тому +1

    2021

  • @user-jn1mz3uh2t
    @user-jn1mz3uh2t 11 місяців тому

    ❤❤❤❤❤❤