Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Копировать из строки текста в ячейке части текста и вставить - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копировать из строки текста в ячейке части текста и вставить (Макросы/Sub)
Копировать из строки текста в ячейке части текста и вставить
stepan190 Дата: Среда, 15.04.2020, 21:25 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2019
Проблема в том, что есть несколько файлов с отчетами (я их в приложенной книге указал на листах), из которых нужно считать данные в ячейках "Номер и дата Заключения", эти ячейки в файлах заполнены по-разному, но нужен только номер и дата. Эти данные нужно вставлять в сводную табличку (например лист 3). Также считывание сверху идет норм по отступу от ячейки с названием столбца "Номер и дата Заключения", а вот количество строк в файлах (листах) разное и отформатированы они по-разному (где-то есть объединенные ячейки) , поэтому просто отступить от нижней строки со словом "Составил" до нижней ячейки сданными не получается. Где-то между "Составил" и последней строкой одна пустая строка, а где- то 2 или 3 и плюс не понятно как перейти от номера строки со словом "Составил", которое ищется во всем диапазоне А:H, а последнее значение должно считываться только из столбца F.
По большому счету Лист 1 и есть сводная табличка куда надо вставлять данные в колонку "№ и дата Заключения о рассмотрении технической документации" из других листов . На разных листах данные по-разному записываются, но нужно только взять с них дату и номер заключения. (я начал ориентироваться только на данные с запятой). Изначально вообще думал, сделать чтение данных по шаблону. я не могу в колонках F найти правильно последнюю заполненную ячейку с номером и датой заключения, чтобы считать ее. Не могли бы подсказать, где ошибка?
К сообщению приложен файл: 12003.xls (122.5 Kb)


Stepan
 
Ответить
СообщениеПроблема в том, что есть несколько файлов с отчетами (я их в приложенной книге указал на листах), из которых нужно считать данные в ячейках "Номер и дата Заключения", эти ячейки в файлах заполнены по-разному, но нужен только номер и дата. Эти данные нужно вставлять в сводную табличку (например лист 3). Также считывание сверху идет норм по отступу от ячейки с названием столбца "Номер и дата Заключения", а вот количество строк в файлах (листах) разное и отформатированы они по-разному (где-то есть объединенные ячейки) , поэтому просто отступить от нижней строки со словом "Составил" до нижней ячейки сданными не получается. Где-то между "Составил" и последней строкой одна пустая строка, а где- то 2 или 3 и плюс не понятно как перейти от номера строки со словом "Составил", которое ищется во всем диапазоне А:H, а последнее значение должно считываться только из столбца F.
По большому счету Лист 1 и есть сводная табличка куда надо вставлять данные в колонку "№ и дата Заключения о рассмотрении технической документации" из других листов . На разных листах данные по-разному записываются, но нужно только взять с них дату и номер заключения. (я начал ориентироваться только на данные с запятой). Изначально вообще думал, сделать чтение данных по шаблону. я не могу в колонках F найти правильно последнюю заполненную ячейку с номером и датой заключения, чтобы считать ее. Не могли бы подсказать, где ошибка?

Автор - stepan190
Дата добавления - 15.04.2020 в 21:25
Kuzmich Дата: Среда, 15.04.2020, 22:42 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация: 156 ±
Замечаний: 0% ±

Excel 2003
Вот такая UDF вытаскивает "Номер и дата Заключения"
[vba]
Код
Function Nomer_Date(cell As String) As String
   With CreateObject("VBScript.RegExp")
       .Pattern = ".+\d{2}\.\d{2}\.\d{2,4}"
       If .Test(cell) Then
         Nomer_Date = .Execute(cell)(0)
       Else
         Nomer_Date = ""
       End If
   End With
  End Function
[/vba]
Вам нужно только сделать цикл по нужным листам с переносом "Номера и даты Заключения"
в соответствующий лист. Удачи!


Сообщение отредактировал Kuzmich - Среда, 15.04.2020, 22:44
 
Ответить
СообщениеВот такая UDF вытаскивает "Номер и дата Заключения"
[vba]
Код
Function Nomer_Date(cell As String) As String
   With CreateObject("VBScript.RegExp")
       .Pattern = ".+\d{2}\.\d{2}\.\d{2,4}"
       If .Test(cell) Then
         Nomer_Date = .Execute(cell)(0)
       Else
         Nomer_Date = ""
       End If
   End With
  End Function
[/vba]
Вам нужно только сделать цикл по нужным листам с переносом "Номера и даты Заключения"
в соответствующий лист. Удачи!

Автор - Kuzmich
Дата добавления - 15.04.2020 в 22:42
stepan190 Дата: Четверг, 16.04.2020, 08:08 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2019
Kuzmich, спасибо

А как считать данные из последней строки (с данными) в таблице?
я не могу в колонках F найти правильно последнюю заполненную ячейку с номером и датой заключения


Stepan
 
Ответить
СообщениеKuzmich, спасибо

А как считать данные из последней строки (с данными) в таблице?
я не могу в колонках F найти правильно последнюю заполненную ячейку с номером и датой заключения

Автор - stepan190
Дата добавления - 16.04.2020 в 08:08
Pelena Дата: Четверг, 16.04.2020, 08:22 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 19182
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщениенайти правильно последнюю заполненную ячейку

Автор - Pelena
Дата добавления - 16.04.2020 в 08:22
Kuzmich Дата: Четверг, 16.04.2020, 10:03 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация: 156 ±
Замечаний: 0% ±

Excel 2003
Цитата
не могу в колонках F найти правильно последнюю заполненную ячейку

[vba]
Код
Dim iLastRow As Long
  iLastRow = Range("F6").End(xlDown).Row
[/vba]
И делаете цикл
[vba]
Код
For i=8 To iLastRow
[/vba]
 
Ответить
Сообщение
Цитата
не могу в колонках F найти правильно последнюю заполненную ячейку

[vba]
Код
Dim iLastRow As Long
  iLastRow = Range("F6").End(xlDown).Row
[/vba]
И делаете цикл
[vba]
Код
For i=8 To iLastRow
[/vba]

Автор - Kuzmich
Дата добавления - 16.04.2020 в 10:03
stepan190 Дата: Понедельник, 04.05.2020, 12:11 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2019
Kuzmich, спасибо
Вы не подскажите как на всех ячейках листа макросом повернуть текст в нормальное положение (горизонтально) и эту измененную ячейку залить красной заливкой?


Stepan
 
Ответить
СообщениеKuzmich, спасибо
Вы не подскажите как на всех ячейках листа макросом повернуть текст в нормальное положение (горизонтально) и эту измененную ячейку залить красной заливкой?

Автор - stepan190
Дата добавления - 04.05.2020 в 12:11
Pelena Дата: Понедельник, 04.05.2020, 13:08 | Сообщение № 7
Группа: Админы
Ранг: Местный житель
Сообщений: 19182
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
Вопрос не относится к данной теме


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеВопрос не относится к данной теме

Автор - Pelena
Дата добавления - 04.05.2020 в 13:08
stepan190 Дата: Понедельник, 04.05.2020, 15:45 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2019
Сделал макрос по копированию ячеек на другой лист, но копирует только с одного листа 2, а с листа 4 не копирует
Видимо ошибка в ilastrow2 = Ëèñò4.Range("F6").End(xlDown).Row
Не могли бы Вы, подсказать в чем ошибка?
К сообщению приложен файл: 0802902.xlsm (43.2 Kb)


Stepan
 
Ответить
СообщениеСделал макрос по копированию ячеек на другой лист, но копирует только с одного листа 2, а с листа 4 не копирует
Видимо ошибка в ilastrow2 = Ëèñò4.Range("F6").End(xlDown).Row
Не могли бы Вы, подсказать в чем ошибка?

Автор - stepan190
Дата добавления - 04.05.2020 в 15:45
Pelena Дата: Понедельник, 04.05.2020, 17:32 | Сообщение № 9
Группа: Админы
Ранг: Местный житель
Сообщений: 19182
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
в чем ошибка?

неправильно определяется последняя заполненная ячейка. Можно так
[vba]
Код
ilastrow2 = rf2.End(xlDown).Row
[/vba]
и написать это после [vba]
Код
If Not rf2 is Nothing Then
[/vba]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение
в чем ошибка?

неправильно определяется последняя заполненная ячейка. Можно так
[vba]
Код
ilastrow2 = rf2.End(xlDown).Row
[/vba]
и написать это после [vba]
Код
If Not rf2 is Nothing Then
[/vba]

Автор - Pelena
Дата добавления - 04.05.2020 в 17:32
stepan190 Дата: Понедельник, 04.05.2020, 18:16 | Сообщение № 10
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2019
Pelena, спасибо номер последней ячейки считывает, но дальше не находит "Номер и дата Заключения" ?


Stepan
 
Ответить
СообщениеPelena, спасибо номер последней ячейки считывает, но дальше не находит "Номер и дата Заключения" ?

Автор - stepan190
Дата добавления - 04.05.2020 в 18:16
Pelena Дата: Понедельник, 04.05.2020, 18:26 | Сообщение № 11
Группа: Админы
Ранг: Местный житель
Сообщений: 19182
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
В смысле, не находит? В макросе ищется запятая и выводится всё, что до запятой. Так?
В первой после шапки строке запятых нет, появляется сообщение "ошибка", нажимаем ОК, выводятся три строки


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеВ смысле, не находит? В макросе ищется запятая и выводится всё, что до запятой. Так?
В первой после шапки строке запятых нет, появляется сообщение "ошибка", нажимаем ОК, выводятся три строки

Автор - Pelena
Дата добавления - 04.05.2020 в 18:26
stepan190 Дата: Понедельник, 04.05.2020, 18:35 | Сообщение № 12
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2019
Pelena, спасибо , все ясно это сообщение для верхних срок


Stepan
 
Ответить
СообщениеPelena, спасибо , все ясно это сообщение для верхних срок

Автор - stepan190
Дата добавления - 04.05.2020 в 18:35
stepan190 Дата: Воскресенье, 31.05.2020, 20:05 | Сообщение № 13
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2019
Произвожу поиск количества листов в листах книги по шаблону. Так как заполнение количества листов разное, то приходится использовать сложный шаблон:

[vba]
Код
rr.Pattern = "\d{1,3}\s(лист|листов)\.?|\d{1,3}\s(л.)\s|\s\D\d\s?[-]\s?\d{1,3}(?:$|\b)|\d{1,3}\s(л)"
[/vba]

Но точное количество листов не вытаскивает, а вместе с прилегающими словами.
Попробовал сделать отдельную процедуру "Sheetsnumber", но не работает.
Как можно изменить шаблон или процедуру, чтобы вытащить только номера страниц на "Лист3"?
К сообщению приложен файл: Book1253.zip (58.9 Kb)


Stepan
 
Ответить
СообщениеПроизвожу поиск количества листов в листах книги по шаблону. Так как заполнение количества листов разное, то приходится использовать сложный шаблон:

[vba]
Код
rr.Pattern = "\d{1,3}\s(лист|листов)\.?|\d{1,3}\s(л.)\s|\s\D\d\s?[-]\s?\d{1,3}(?:$|\b)|\d{1,3}\s(л)"
[/vba]

Но точное количество листов не вытаскивает, а вместе с прилегающими словами.
Попробовал сделать отдельную процедуру "Sheetsnumber", но не работает.
Как можно изменить шаблон или процедуру, чтобы вытащить только номера страниц на "Лист3"?

Автор - stepan190
Дата добавления - 31.05.2020 в 20:05
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копировать из строки текста в ячейке части текста и вставить (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!