Здравствуйте, форумчане! прошу у Вас помощи. передо мной встала задача. есть файл, содержит порядка 30 листов. необходимо на каждом листе организовать поиск ячеек со значениями, содержащими символ "Z", причем после "Z" могут идти другие символы. все найденные ячейки, с каждого листа (плюс ячейки расположенные на 2 строки вниз от найденных ячеек), необходимо перенести в новые файлы .xls, по отдельному новому файлу на каждый лист, и файлы должны именоваться в соответствии с именем листа, с которого взяты эти ячейки.
создание файлов у меня получилось реализовать (макрос в файле), а вот с поиском и переносом ячеек затор(
в приложенном примере листы с именами Имя1, Имя2 - это как примерно выглядят листы на которых нужно организовать поиск. Лист 5 - что в итоге должно получиться (цветом выделила какие данные куда должны перекочевать)
Заранее большое спасибо за помощь!
Здравствуйте, форумчане! прошу у Вас помощи. передо мной встала задача. есть файл, содержит порядка 30 листов. необходимо на каждом листе организовать поиск ячеек со значениями, содержащими символ "Z", причем после "Z" могут идти другие символы. все найденные ячейки, с каждого листа (плюс ячейки расположенные на 2 строки вниз от найденных ячеек), необходимо перенести в новые файлы .xls, по отдельному новому файлу на каждый лист, и файлы должны именоваться в соответствии с именем листа, с которого взяты эти ячейки.
создание файлов у меня получилось реализовать (макрос в файле), а вот с поиском и переносом ячеек затор(
в приложенном примере листы с именами Имя1, Имя2 - это как примерно выглядят листы на которых нужно организовать поиск. Лист 5 - что в итоге должно получиться (цветом выделила какие данные куда должны перекочевать)
Ксения, как то, не с той стороны Вы подходите к решению задачи. ИМХО. Нужно создать итоговый лист типа Лист5 и циклом, поочередно, вносить данные с листов Имя1...30 создавая соответствующий им файл с Листа5. Думаю, так будет проще.
необходимо на каждом листе организовать поиск ячеек со значениями, содержащими символ "Z",
А зачем поиск? Разве координаты этих ячеек на листах Имя1...Имя30 разные?
Ксения, как то, не с той стороны Вы подходите к решению задачи. ИМХО. Нужно создать итоговый лист типа Лист5 и циклом, поочередно, вносить данные с листов Имя1...30 создавая соответствующий им файл с Листа5. Думаю, так будет проще.
Можно и как Вы описали, так действительно будет наверное проще. да, координаты разные на разных листах >< это в пример я залила одинаково. а на деле разные листы - разные ячейки. поэтому никак кроме поиска Z мне не придумалось(
Можно и как Вы описали, так действительно будет наверное проще. да, координаты разные на разных листах >< это в пример я залила одинаково. а на деле разные листы - разные ячейки. поэтому никак кроме поиска Z мне не придумалось(Xenya
ООО!!! На первый взгляд сработало) Спасибо Вам! пойду накручивать дальше...
в задаче миллион нюансов( при всех тех же условиях, на каждом листе содержатся данные в разбивке по месяцам. возможно ли сначала выбирать область, относящуюся к текущему месяцу, а затем в ней уже запускать поиск_Z?
я лист (Лист1) прикреплю для наглядности, с той самой "разбивкой по месяцам"
ООО!!! На первый взгляд сработало) Спасибо Вам! пойду накручивать дальше...
в задаче миллион нюансов( при всех тех же условиях, на каждом листе содержатся данные в разбивке по месяцам. возможно ли сначала выбирать область, относящуюся к текущему месяцу, а затем в ней уже запускать поиск_Z?
я лист (Лист1) прикреплю для наглядности, с той самой "разбивкой по месяцам"Xenya
можно же не искать, а сделать на листе по кнопке "сформировать"
Мало того, можно сделать общий код для этой "кнопки" (ориентирующийся на данные листа, имя листа, просто передаваемые параметры...), тогда не надо будет заниматься копипастом функционала. И затем можно вообще эту "кнопку" вынести с листов в другое место интерфейса (на ленту, например). И места не будет занимать...
можно же не искать, а сделать на листе по кнопке "сформировать"
Мало того, можно сделать общий код для этой "кнопки" (ориентирующийся на данные листа, имя листа, просто передаваемые параметры...), тогда не надо будет заниматься копипастом функционала. И затем можно вообще эту "кнопку" вынести с листов в другое место интерфейса (на ленту, например). И места не будет занимать... AndreTM
Всем добрый день снова! тестировала наработки, все получилось сделать удобно, файлы создаются как надо, данные переносятся, но вот что выяснилось. есть определенная логика переноса найденных ячеек на новый лист. суть логики отражена на Лист2, исходная ситуация - лист Имя1, то что должно в итоге выйти - Лист5. спасите пожалуйста, я всю голову сломала уже
Всем добрый день снова! тестировала наработки, все получилось сделать удобно, файлы создаются как надо, данные переносятся, но вот что выяснилось. есть определенная логика переноса найденных ячеек на новый лист. суть логики отражена на Лист2, исходная ситуация - лист Имя1, то что должно в итоге выйти - Лист5. спасите пожалуйста, я всю голову сломала уже Xenya
Добрый день! Оживлю тему, так как остро встала довести до ума начатое. Мои попытки почти тщетны, ищу знатока vbs, кто возьмется за создание работающего макроса за вознагражение? Суть описана в сообщении выше, могу объяснить все что не понятно по заданию.
Добрый день! Оживлю тему, так как остро встала довести до ума начатое. Мои попытки почти тщетны, ищу знатока vbs, кто возьмется за создание работающего макроса за вознагражение? Суть описана в сообщении выше, могу объяснить все что не понятно по заданию.Xenya
Sub ertert() Dim r As Range, adr$, x, y(), i&, j&, k& With Sheets("Имя1").Columns(2) Set r = .Find("ККК", LookIn:=xlValues, LookAt:=xlWhole) If Not r Is Nothing Then adr = r.Address Do x = r.CurrentRegion.Value ReDim y(1 To UBound(x, 1) * UBound(x, 2), 1 To 11) For i = 3 To UBound(x) If x(i, 1) = "ИИИ" Then Exit For For j = 4 To UBound(x, 2) Step 2 If Len(x(i, j)) Then k = k + 1 y(k, 1) = k y(k, 2) = x(i, 2) y(k, 6) = x(i, j) y(k, 8) = x(1, j - 1) End If Next j Next i Sheets("Лист5").Cells(Rows.Count, 1).End(xlUp)(3, 1).Resize(k, 11).Value = y() k = 0 Set r = .FindNext(r) Loop While r.Address <> adr End If End With End Sub
[/vba]
ну раз уж написал... [vba]
Код
Sub ertert() Dim r As Range, adr$, x, y(), i&, j&, k& With Sheets("Имя1").Columns(2) Set r = .Find("ККК", LookIn:=xlValues, LookAt:=xlWhole) If Not r Is Nothing Then adr = r.Address Do x = r.CurrentRegion.Value ReDim y(1 To UBound(x, 1) * UBound(x, 2), 1 To 11) For i = 3 To UBound(x) If x(i, 1) = "ИИИ" Then Exit For For j = 4 To UBound(x, 2) Step 2 If Len(x(i, j)) Then k = k + 1 y(k, 1) = k y(k, 2) = x(i, 2) y(k, 6) = x(i, j) y(k, 8) = x(1, j - 1) End If Next j Next i Sheets("Лист5").Cells(Rows.Count, 1).End(xlUp)(3, 1).Resize(k, 11).Value = y() k = 0 Set r = .FindNext(r) Loop While r.Address <> adr End If End With End Sub
Зачем искать, человек уже помогал, пусть и доделает.
Ага, помог перейти улицу, так веди до самого дома. Если бы не ЛС от Ксении, то и не знал бы об этих постах. Очень редко бываю дома. Нет у меня пока времени. Так что, помогайте, не ленитесь.
Зачем искать, человек уже помогал, пусть и доделает.
Ага, помог перейти улицу, так веди до самого дома. Если бы не ЛС от Ксении, то и не знал бы об этих постах. Очень редко бываю дома. Нет у меня пока времени. Так что, помогайте, не ленитесь. Wasilich