Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Вырезать ФИО из текста и вставить в другой столбец
 
Код
Private Sub CommandButton5_Click()
FilePath = Sheets("users").Cells(20, 1)
    Workbooks.Open Filename:=FilePath
    With Sheets("TDSheet")
    LastRow = .Cells(Rows.Count, 1).End(xlUp).Row
    
    For i = 7 To LastRow
        Cells (i, 11) =СЖПРОБЕЛЫ(ПРАВСИМВ(ПСТР(" "&ПОДСТАВИТЬ(.Cells(i,6));" ";ПОВТОР(" ";999));1;999*3);999*3))' здесь ошибка
    
    Next
    End With
End Sub

Уважаемые гуру ! Подскажите, почему строка с ошибкой, что в ней не так ?
 
компилятор VB не знает что такое
СЖПРОБЕЛЫ
потом ПРАВСИМВ
потом ПСТР
потом ПОДСТАВИТЬ
и наконец не знает что такое ПОВТОР
а в остальном - все нормально

а что за задачу решаете, можно полюбопытствовать?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Из одного столбца (6-я колонка), содержащего Фамилию Имя Отчество и остальную информация вырезаем только Фамилию Имя Отчество и вставляем его в другую колонку (11-ю).

К примеру из содержимого колонки АНТОНОВ ЮРИЙ ЕВГЕНЬЕВИЧ МОСКОВСКИЙ БАНК СБЕРБАНКА РОССИИ Г.МОСКВА 408178 должно остаться АНТОНОВ ЮРИЙ ЕВГЕНЬЕВИЧ
 
пробуйте так:
Код
Private Sub CommandButton5_Click()
  FilePath = Sheets("users").Cells(20, 1)
  Workbooks.Open Filename:=FilePath
  With Sheets("TDSheet")
  LastRow = .Cells(Rows.Count, 1).End(xlUp).Row
  Dim re, i&
  Set re = CreateObject("VBScript.RegExp"):  re.Pattern = "[^ ]+ [^ ]+ [^ ]+"
  For i = 7 To 7 'LastRow
    If re.test(Cells(i, 6)) Then Cells(i, 11) = re.Execute(Cells(i, 6))(0)
  Next
  End With
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Вроде получается, но у меня этот код в кнопке на странице книги, он должен открыть другой указанный файл и там уже заполнять столбы. А обрабатывается почему-то первоначально открытый документ, не тот, который открывается
 
я не окрывал никаких других документов, я воспользовался вашим кодом
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Понятно, значит я не правильно код написал ((
Помогите пожалуйста, как правильно реализовать ?
Изменено: raa3738 - 11 Июл 2019 23:16:51
 
понятно, значит напишите, что должен сделать макрос
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
В открытой книге, на одном из листов есть кнопка. По нажатию кнопки открывается файл, путь которого прописан в макросе. В этом файле есть столбик с номером 6, содержащим вначале ФИО, потом ненужную информацию (АНТОНОВ ЮРИЙ ЕВГЕНЬЕВИЧ МОСКОВСКИЙ БАНК СБЕРБАНКА РОССИИ Г.МОСКВА 408178, бла-бла-бла). Макрос проходит по всем строкам, обрезает ненужное, оставляет только первые три слова (ФИО) и получившееся пишет в столбик № 11.
 
Проверил, макрос из значения ячейки возвращает пустое значение ((
 
у меня нет повода не доверять Вашим словам, извините, но хотелось бы увидеть сказанное на  конкретном примере
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Файлы выложить ? Как лучше ? Скриншот не поможет  
 
да тут даже файл не поможет... нужно 2
(тот, который с заветной кнопкой, и тот, который должен быть открыт после нажатия на ранее описанную кнопку)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Спасибо, в личку написал
 
1. а почему там  другой re.Pattern? данные не подходят под него - вот и получаете пусто
2.  если после открытия окажется активным не TDSheet, то же получите пусто а с точками перед Cells (в в строке с if перед всеми Cells нужно поставить . (точку) чтобы было .Cells) должно быть все нормально
в конце макрос должен содержать следующее:
Код
  Set re = CreateObject("VBScript.RegExp"):  re.Pattern = "[^ ]+ [^ ]+ [^ ]+"
  For i = 7 To LastRow
    If re.test(.Cells(i, 9)) Then .Cells(i, 25) = re.Execute(.Cells(i, 9))(0)
  Next
  End With
это из 8-й строки вытянуло АЛЬФА-БАНК АО /
зато и з 7-й - ЛОБЕНКО СВЕТЛАНА БОРИСОВНА
а из 9-й уже известного нам по предыдущим сообщениям АНТОНОВ ЮРИЙ ЕВГЕНЬЕВИЧ
Изменено: Ігор Гончаренко - 13 Июл 2019 12:42:59
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Класс ! Спасибо ! Получилось !
Страницы: 1
Читают тему (гостей: 1)
Наверх