Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Макрос на добавления символов в ячейки столбца на определенную пощицию
 
Здравствуйте..... Помогите разобраться: имеется макрос:
Код
Private Sub Добавление 19()
For Each c In Worksheets("Лист1").Range("C2:C17").Cells
 c.Value = "19" + CStr(c.Value)
Next
End Sub

который добавляет символы в начало строки в ячейке. необходимо добавить символы в шестую и седьмую позицию от конца строки.
Пример: имею вот так - Иванов Иван Иванович 78 228
              нужно - Иванов Иван Иванович 1978 228.....
таких ячеек в столбце несколько тысяч......
 
Цитата
таких ячеек в столбце несколько тысяч......
Приведите десяток строк в примере
 
Красным отмечено как нужно
Изменено: Fotik Fotikov - 11 окт 2020 19:23:57
 
Цитата
Fotik Fotikov написал: Range("F7:F44")
В столбце F нет подходящих данных. Похожие есть в столбца С и D.

Цитата
Fotik Fotikov написал: Красным отмечено как нужно
Нет в файле красного.
 
Код
Private Sub Добавление 19()
For Each c In Worksheets("Лист1").Range("C2:C17").Cells
 c.Value = "19" + CStr(c.Value)
Next
End Sub

в примере таблицы семнадцатая строка в ячейке C,D17 дата рождения полностью - так нужно сделать....

только это только кусочек файла всего 8831 строка и в каждой нужно заменить двух числовую дату рождения на четырёх...
Изменено: Fotik Fotikov - 11 окт 2020 20:00:45
 
Fotik Fotikov,  код следует оформлять соответствующим тегом: ищите такую кнопку (см. скрин) и исправьте своё сообщение.
Тег VBA.jpg (19.2 КБ)
 
Код
Private Sub Добавление 19()
For Each c In Worksheets("Лист1").Range("C2:C17").Cells
 c.Value = "19" + CStr(c.Value)
Next
End Sub
 
а как удалить сообщение?
 
Какое? Совсем удалить сами не сможете - только отредактировать?
 
Вариант:
Код
Private Sub Добавление_19()
Dim c As Range
    For Each c In Worksheets("Лист1").Range("C2:C17").Cells
     c.Value = "19" + CStr(c.Value)
     c.Value = Left(c, Len(c) - 2) & "19" & Right(c, 2)
    Next
End Sub
У Вас Excel не ругался на название процедуры?
 
Спасибо огромное работает, не сочтите за наглость а можно и для столбца D также сделать там год рождения это первые цифры после букв
 
А в конце строки ВСЕГДА будет пять цифр?
 
Сразу для двух столбцов:
Код
Private Sub Добавление_19()
Dim c As Range
    For Each c In Worksheets("Лист1").Range("C2:C17").Cells
     c.Value = "19" + CStr(c.Value)
     c.Value = Left(c, Len(c) - 2) & "19" & Right(c, 2)
     c.Offset(0, 1) = Left(c.Offset(0, 1), Len(c.Offset(0, 1)) - 5) & "19" & Right(c.Offset(0, 1), 5)
     'Если нужно с пробелом, то так:
'     c.Offset(0, 1) = Left(c.Offset(0, 1), Len(c.Offset(0, 1)) - 5) & " " & "19" & Right(c.Offset(0, 1), 5)
    Next
End Sub
И отбейте руки тому, кто такие данные поставляет.
 
А, ну теперь понятнее с 6й строкой.
А то уже собирался спросить почему в пятой указано количество символов 2.
Файл не открывал, прочитал только описание )
 
Здравствуйте спасибо большое за помощь, первый макрос работает прекрасно для столбца С а второй для столбца D нет. Прикреплю пример с этими макросами чтоб наглядно. столбец D это сокращение столбца С -фамилия+ две буквы имени+ две буквы отчества+ две последние цифры года рождения+трёхзначный номер. Цифирь всегда пять- две год рожд+три номер.нужно как и в столбце С, то есть между последней буквой и первой цифрой вставить 19, чтоб год рождения стал четырёхзначным. По поводу поставщика данных согласен полностю! Дело в том что это кусок большого проекта по учёту скажем так граждан и в частности ведения амбулаторных медицинских приёмов но тот кто писал базу не предусмотрел такой тонкости как четырёхзначная дата рождения и в итоге пошли даты рождения 2000, 2001 и вышло так что в двухзначном варианте это выглядит 00, 01, а в числовой форме вышло 0 и 1 то есть год рождения в ячейке 0. В основной базе я всё переименовал. вроде норм работает но в медицинской базе возникла проблема все предыдущие приёмы пациента привязаны к данным из столбцов C и D этой таблицы, теперь открывая амбулаторную базу предыдущие приёмы не подгружаются и получается что вся история больного не доступна, поскольку эти сокращения являются своеобразным ID пациента.
Изменено: Fotik Fotikov - 12 окт 2020 12:40:09
 
Fotik Fotikov, как ещё один вариант - можно использовать мгновенное заполнение, подробнее здесь:
https://www.planetaexcel.ru/techniques/7/7751/
я попробовал на вашем файле - работает
 
За ссылку спасибо, мощный инструмент но работать приходится в 2003 и 2010 все последующие версии офис не запускают данный проект.
Работает только первый макрос для столбца С а второй макрос для столбца D добавляет 19 перед буквами и перед двумя последними цифрами то есть два раза и оба не туда :)
А со столбцом E вобще метаморфоза было слово "записей" а стало "за19писей", хотя столбец Е вроде вобще нипричём:) :)
 
Проверил ещё раз свой макрос для двух столбцов на данных в Вашем файле  из #3 - оба столбца обрабатываются корректно. Если не считать последнюю строку. Но Вы там УЖЕ подставили вручную.
 
Бездумная копия - не цитата[МОДЕРАТОР]

Спасибо огромное..... всё заработало.... затупил я, в макросе вместо столбца C подставлял D..... не понял что это для обоих столбцов сразу....
 
Цитата
Fotik Fotikov написал:
не понял что это для обоих столбцов сразу....
Цитата
Юрий М написал:
Сразу для двух столбцов:
Страницы: 1
Читают тему (гостей: 1)
Наверх