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

Вход

Регистрация

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

 

= Мир MS Excel/поиск текстовых значений на листе и перенос их в новый файл - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
поиск текстовых значений на листе и перенос их в новый файл
Xenya Дата: Четверг, 23.01.2014, 17:11 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте, форумчане!
прошу у Вас помощи. передо мной встала задача. есть файл, содержит порядка 30 листов.
необходимо на каждом листе организовать поиск ячеек со значениями, содержащими символ "Z", причем после "Z" могут идти другие символы.
все найденные ячейки, с каждого листа (плюс ячейки расположенные на 2 строки вниз от найденных ячеек), необходимо перенести в новые файлы .xls, по отдельному новому файлу на каждый лист, и файлы должны именоваться в соответствии с именем листа, с которого взяты эти ячейки.

создание файлов у меня получилось реализовать (макрос в файле), а вот с поиском и переносом ячеек затор(

в приложенном примере листы с именами Имя1, Имя2 - это как примерно выглядят листы на которых нужно организовать поиск. Лист 5 - что в итоге должно получиться (цветом выделила какие данные куда должны перекочевать)

Заранее большое спасибо за помощь!
К сообщению приложен файл: 7673085.xlsm (41.4 Kb)
 
Ответить
СообщениеЗдравствуйте, форумчане!
прошу у Вас помощи. передо мной встала задача. есть файл, содержит порядка 30 листов.
необходимо на каждом листе организовать поиск ячеек со значениями, содержащими символ "Z", причем после "Z" могут идти другие символы.
все найденные ячейки, с каждого листа (плюс ячейки расположенные на 2 строки вниз от найденных ячеек), необходимо перенести в новые файлы .xls, по отдельному новому файлу на каждый лист, и файлы должны именоваться в соответствии с именем листа, с которого взяты эти ячейки.

создание файлов у меня получилось реализовать (макрос в файле), а вот с поиском и переносом ячеек затор(

в приложенном примере листы с именами Имя1, Имя2 - это как примерно выглядят листы на которых нужно организовать поиск. Лист 5 - что в итоге должно получиться (цветом выделила какие данные куда должны перекочевать)

Заранее большое спасибо за помощь!

Автор - Xenya
Дата добавления - 23.01.2014 в 17:11
Wasilich Дата: Четверг, 23.01.2014, 18:15 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
Ксения, как то, не с той стороны Вы подходите к решению задачи.
ИМХО. Нужно создать итоговый лист типа Лист5 и циклом, поочередно, вносить данные с листов Имя1...30 создавая соответствующий им файл с Листа5. Думаю, так будет проще.
необходимо на каждом листе организовать поиск ячеек со значениями, содержащими символ "Z",
А зачем поиск? Разве координаты этих ячеек на листах Имя1...Имя30 разные?


Сообщение отредактировал Wasilic - Четверг, 23.01.2014, 18:16
 
Ответить
СообщениеКсения, как то, не с той стороны Вы подходите к решению задачи.
ИМХО. Нужно создать итоговый лист типа Лист5 и циклом, поочередно, вносить данные с листов Имя1...30 создавая соответствующий им файл с Листа5. Думаю, так будет проще.
необходимо на каждом листе организовать поиск ячеек со значениями, содержащими символ "Z",
А зачем поиск? Разве координаты этих ячеек на листах Имя1...Имя30 разные?

Автор - Wasilich
Дата добавления - 23.01.2014 в 18:15
Xenya Дата: Четверг, 23.01.2014, 18:34 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Можно и как Вы описали, так действительно будет наверное проще.
да, координаты разные на разных листах ><
это в пример я залила одинаково. а на деле разные листы - разные ячейки. поэтому никак кроме поиска Z мне не придумалось(
 
Ответить
СообщениеМожно и как Вы описали, так действительно будет наверное проще.
да, координаты разные на разных листах ><
это в пример я залила одинаково. а на деле разные листы - разные ячейки. поэтому никак кроме поиска Z мне не придумалось(

Автор - Xenya
Дата добавления - 23.01.2014 в 18:34
Wasilich Дата: Четверг, 23.01.2014, 19:42 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
Для затравки код поиска и заполнения формы.
[vba]
Код
Sub поиск_Z()
   Dim kl, rw, ns, i
   Range("A1").Select
   Cells.Find(What:="Z*", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
   xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
   , SearchFormat:=False).Activate
   kl = Selection.Column
   rw = Selection.Row
   ns = 9
   For i = kl To kl + 17 Step 2
       Sheets("Лист5").Cells(ns, 2) = Cells(rw, i)
       Sheets("Лист5").Cells(ns, 6) = Cells(rw + 2, i)
       Sheets("Лист5").Cells(ns, 7) = Cells(rw + 2, i + 1)
       ns = ns + 1
   Next
  Sheets("Лист5").Select
End Sub
[/vba]Дерзайте, а я на работу. :)
 
Ответить
СообщениеДля затравки код поиска и заполнения формы.
[vba]
Код
Sub поиск_Z()
   Dim kl, rw, ns, i
   Range("A1").Select
   Cells.Find(What:="Z*", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
   xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
   , SearchFormat:=False).Activate
   kl = Selection.Column
   rw = Selection.Row
   ns = 9
   For i = kl To kl + 17 Step 2
       Sheets("Лист5").Cells(ns, 2) = Cells(rw, i)
       Sheets("Лист5").Cells(ns, 6) = Cells(rw + 2, i)
       Sheets("Лист5").Cells(ns, 7) = Cells(rw + 2, i + 1)
       ns = ns + 1
   Next
  Sheets("Лист5").Select
End Sub
[/vba]Дерзайте, а я на работу. :)

Автор - Wasilich
Дата добавления - 23.01.2014 в 19:42
Xenya Дата: Четверг, 23.01.2014, 20:01 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
ООО!!! На первый взгляд сработало)
Спасибо Вам!
пойду накручивать дальше...

в задаче миллион нюансов(
при всех тех же условиях, на каждом листе содержатся данные в разбивке по месяцам.
возможно ли сначала выбирать область, относящуюся к текущему месяцу, а затем в ней уже запускать поиск_Z?

я лист (Лист1) прикреплю для наглядности, с той самой "разбивкой по месяцам"
К сообщению приложен файл: 4382266.xlsm (87.2 Kb)
 
Ответить
СообщениеООО!!! На первый взгляд сработало)
Спасибо Вам!
пойду накручивать дальше...

в задаче миллион нюансов(
при всех тех же условиях, на каждом листе содержатся данные в разбивке по месяцам.
возможно ли сначала выбирать область, относящуюся к текущему месяцу, а затем в ней уже запускать поиск_Z?

я лист (Лист1) прикреплю для наглядности, с той самой "разбивкой по месяцам"

Автор - Xenya
Дата добавления - 23.01.2014 в 20:01
Xenya Дата: Пятница, 24.01.2014, 08:09 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
хотя можно же не искать, а сделать на листе по кнопке "сформировать" для каждого месяца.. попробую так, будет ли это удобно в работе.
 
Ответить
Сообщениехотя можно же не искать, а сделать на листе по кнопке "сформировать" для каждого месяца.. попробую так, будет ли это удобно в работе.

Автор - Xenya
Дата добавления - 24.01.2014 в 08:09
AndreTM Дата: Пятница, 24.01.2014, 14:37 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 501 ±
Замечаний: 0% ±

2003 & 2010
можно же не искать, а сделать на листе по кнопке "сформировать"
Мало того, можно сделать общий код для этой "кнопки" (ориентирующийся на данные листа, имя листа, просто передаваемые параметры...), тогда не надо будет заниматься копипастом функционала.
И затем можно вообще эту "кнопку" вынести с листов в другое место интерфейса (на ленту, например). И места не будет занимать... :)


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
Сообщение
можно же не искать, а сделать на листе по кнопке "сформировать"
Мало того, можно сделать общий код для этой "кнопки" (ориентирующийся на данные листа, имя листа, просто передаваемые параметры...), тогда не надо будет заниматься копипастом функционала.
И затем можно вообще эту "кнопку" вынести с листов в другое место интерфейса (на ленту, например). И места не будет занимать... :)

Автор - AndreTM
Дата добавления - 24.01.2014 в 14:37
Xenya Дата: Воскресенье, 26.01.2014, 14:31 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
правильно говорят, одна голова хорошо, а две - лучше)))
спасибо Вам большое за помощь и идеи, попытаюсь прокачать свой файл)
 
Ответить
Сообщениеправильно говорят, одна голова хорошо, а две - лучше)))
спасибо Вам большое за помощь и идеи, попытаюсь прокачать свой файл)

Автор - Xenya
Дата добавления - 26.01.2014 в 14:31
Xenya Дата: Понедельник, 27.01.2014, 15:27 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Всем добрый день снова! тестировала наработки, все получилось сделать удобно, файлы создаются как надо, данные переносятся, но вот что выяснилось. есть определенная логика переноса найденных ячеек на новый лист. суть логики отражена на Лист2, исходная ситуация - лист Имя1, то что должно в итоге выйти - Лист5. спасите пожалуйста, я всю голову сломала уже :'(
К сообщению приложен файл: 3015082.xlsm (46.4 Kb)
 
Ответить
СообщениеВсем добрый день снова! тестировала наработки, все получилось сделать удобно, файлы создаются как надо, данные переносятся, но вот что выяснилось. есть определенная логика переноса найденных ячеек на новый лист. суть логики отражена на Лист2, исходная ситуация - лист Имя1, то что должно в итоге выйти - Лист5. спасите пожалуйста, я всю голову сломала уже :'(

Автор - Xenya
Дата добавления - 27.01.2014 в 15:27
Xenya Дата: Понедельник, 14.07.2014, 03:44 | Сообщение № 10
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день!
Оживлю тему, так как остро встала довести до ума начатое.
Мои попытки почти тщетны, ищу знатока vbs, кто возьмется за создание работающего макроса за вознагражение?
Суть описана в сообщении выше, могу объяснить все что не понятно по заданию.
 
Ответить
СообщениеДобрый день!
Оживлю тему, так как остро встала довести до ума начатое.
Мои попытки почти тщетны, ищу знатока vbs, кто возьмется за создание работающего макроса за вознагражение?
Суть описана в сообщении выше, могу объяснить все что не понятно по заданию.

Автор - Xenya
Дата добавления - 14.07.2014 в 03:44
wild_pig Дата: Понедельник, 14.07.2014, 07:42 | Сообщение № 11
Группа: Проверенные
Ранг: Обитатель
Сообщений: 518
Репутация: 97 ±
Замечаний: 0% ±

2003, 2013
ищу знатока vbs

Зачем искать, человек уже помогал, пусть и доделает.
 
Ответить
Сообщение
ищу знатока vbs

Зачем искать, человек уже помогал, пусть и доделает.

Автор - wild_pig
Дата добавления - 14.07.2014 в 07:42
nilem Дата: Понедельник, 14.07.2014, 07:59 | Сообщение № 12
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
ну раз уж написал...
[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
[/vba]


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениену раз уж написал...
[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
[/vba]

Автор - nilem
Дата добавления - 14.07.2014 в 07:59
Wasilich Дата: Вторник, 22.07.2014, 19:54 | Сообщение № 13
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
Зачем искать, человек уже помогал, пусть и доделает.
Ага, помог перейти улицу, так веди до самого дома. :D
Если бы не ЛС от Ксении, то и не знал бы об этих постах. Очень редко бываю дома. Нет у меня пока времени. Так что, помогайте, не ленитесь. :)
 
Ответить
Сообщение
Зачем искать, человек уже помогал, пусть и доделает.
Ага, помог перейти улицу, так веди до самого дома. :D
Если бы не ЛС от Ксении, то и не знал бы об этих постах. Очень редко бываю дома. Нет у меня пока времени. Так что, помогайте, не ленитесь. :)

Автор - Wasilich
Дата добавления - 22.07.2014 в 19:54
  • Страница 1 из 1
  • 1
Поиск:

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