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

Вход

Регистрация

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

 

= Мир MS Excel/поиск значения в таблице и перенос всей строки в другой док - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » поиск значения в таблице и перенос всей строки в другой док (Макросы/Sub)
поиск значения в таблице и перенос всей строки в другой док
pan-piramida Дата: Суббота, 31.05.2014, 17:53 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 80% ±

Excel 2007
Доброго времени суток. Прошу уделить немного времени моей проблеме. Есть в наличие "Архив". в котором содержится около 1000 строк с данными. Количество строк периодически увеличивается. Необходим макрос для нахождения определённого значения в таблице и переноса всей строки в которой оно присутствует в другой документ. Пример: Есть 2 документа с именами "Архив" и "47"(находятся в одном каталоге, но в разных папках на неизменных местах). Открываем "47", запускаем скрипт и он ищет в "Архив" - в ячейках D2 - J2, D3-J3, D4-J4 и т.д. число 47. В случае нахождения оного - вся строчка записывается в "47" (есть совпадение в 8-й строке - значит вся строчка A8-N8 записывается в "47"), но не формулами, а числами. Всего чисел которые нужно найти - 60, поэтому универсальность скрипта была бы самым оптимальным вариантом. В прикреплённом файле документы представлены на разных страницах.
К сообщению приложен файл: _-1-.xls (30.5 Kb)


Сообщение отредактировал pan-piramida - Суббота, 31.05.2014, 20:04
 
Ответить
СообщениеДоброго времени суток. Прошу уделить немного времени моей проблеме. Есть в наличие "Архив". в котором содержится около 1000 строк с данными. Количество строк периодически увеличивается. Необходим макрос для нахождения определённого значения в таблице и переноса всей строки в которой оно присутствует в другой документ. Пример: Есть 2 документа с именами "Архив" и "47"(находятся в одном каталоге, но в разных папках на неизменных местах). Открываем "47", запускаем скрипт и он ищет в "Архив" - в ячейках D2 - J2, D3-J3, D4-J4 и т.д. число 47. В случае нахождения оного - вся строчка записывается в "47" (есть совпадение в 8-й строке - значит вся строчка A8-N8 записывается в "47"), но не формулами, а числами. Всего чисел которые нужно найти - 60, поэтому универсальность скрипта была бы самым оптимальным вариантом. В прикреплённом файле документы представлены на разных страницах.

Автор - pan-piramida
Дата добавления - 31.05.2014 в 17:53
Rioran Дата: Суббота, 31.05.2014, 22:47 | Сообщение № 2
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
pan-piramida, здравствуйте.

Когда открываем документ "47", откуда скрипт узнает, какие числа надо искать? Из названия файла или пользователь сам вводит?


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
Сообщениеpan-piramida, здравствуйте.

Когда открываем документ "47", откуда скрипт узнает, какие числа надо искать? Из названия файла или пользователь сам вводит?

Автор - Rioran
Дата добавления - 31.05.2014 в 22:47
pan-piramida Дата: Суббота, 31.05.2014, 23:01 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 80% ±

Excel 2007
Rioran, приветствую.
если скрипт универсален - можно пользователю ввести.
 
Ответить
СообщениеRioran, приветствую.
если скрипт универсален - можно пользователю ввести.

Автор - pan-piramida
Дата добавления - 31.05.2014 в 23:01
pan-piramida Дата: Понедельник, 02.06.2014, 22:30 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 80% ±

Excel 2007
походу сложная задача.
 
Ответить
Сообщениепоходу сложная задача.

Автор - pan-piramida
Дата добавления - 02.06.2014 в 22:30
pan-piramida Дата: Суббота, 07.06.2014, 22:21 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 80% ±

Excel 2007
Походу никому не интересно. Буду сам пытаться решить.


Сообщение отредактировал pan-piramida - Воскресенье, 08.06.2014, 11:48
 
Ответить
СообщениеПоходу никому не интересно. Буду сам пытаться решить.

Автор - pan-piramida
Дата добавления - 07.06.2014 в 22:21
pan-piramida Дата: Воскресенье, 08.06.2014, 16:43 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 80% ±

Excel 2007
Может быть я некорректно сформулировал? Попробую иначе. Дан документ "Архив" с массивом данных и документ "47". Каждый день в документ "Архив" добавляется несколько дополнительных строк. В столбцах с D2 по J2 находятся значения по которым нужно вести поиск. Открываем только документ "47"(документ "Архив" закрыт), запускаем скрипт который ищет значение 47 в ячейках с D2 по J2 и если таковое будет обнаружено - то вся строка с A2 по N2 записывается в документ 47. Если значение не будет обнаружено в ячейках с D2 по J2 то поиск переходит на другую строку и ищет в ячейках с D3 по J3 и так далее до тех пор пока значения не кончатся. Оптимальным вариантом было бы после открытия файла иметь возможность ручного ввода значения которое нужно найти в специально отведённое для этого поле и после этого нажать кнопку поиск. Есть пожелание чтобы скрипт каждый свой запуск не начинал поиск с первой строки документа "Архив", а считывал бы последнюю записанную строку из документа "47" и начинал поиск со строки следующей за ней.
К сообщению приложен файл: 9310606.xls (25.5 Kb) · 47.xls (28.0 Kb)
 
Ответить
СообщениеМожет быть я некорректно сформулировал? Попробую иначе. Дан документ "Архив" с массивом данных и документ "47". Каждый день в документ "Архив" добавляется несколько дополнительных строк. В столбцах с D2 по J2 находятся значения по которым нужно вести поиск. Открываем только документ "47"(документ "Архив" закрыт), запускаем скрипт который ищет значение 47 в ячейках с D2 по J2 и если таковое будет обнаружено - то вся строка с A2 по N2 записывается в документ 47. Если значение не будет обнаружено в ячейках с D2 по J2 то поиск переходит на другую строку и ищет в ячейках с D3 по J3 и так далее до тех пор пока значения не кончатся. Оптимальным вариантом было бы после открытия файла иметь возможность ручного ввода значения которое нужно найти в специально отведённое для этого поле и после этого нажать кнопку поиск. Есть пожелание чтобы скрипт каждый свой запуск не начинал поиск с первой строки документа "Архив", а считывал бы последнюю записанную строку из документа "47" и начинал поиск со строки следующей за ней.

Автор - pan-piramida
Дата добавления - 08.06.2014 в 16:43
Alex_ST Дата: Воскресенье, 08.06.2014, 22:25 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3209
Репутация: 609 ±
Замечаний: 0% ±

2003
Для переноса выбранных строк можно использовать процедуру "Copy_ROWs_to_EXT_FILE".
Ну а уж выделить предварительно то, что нужно копировать, Вы, надеюсь, и сами сможете



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеДля переноса выбранных строк можно использовать процедуру "Copy_ROWs_to_EXT_FILE".
Ну а уж выделить предварительно то, что нужно копировать, Вы, надеюсь, и сами сможете

Автор - Alex_ST
Дата добавления - 08.06.2014 в 22:25
pan-piramida Дата: Воскресенье, 08.06.2014, 22:49 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 80% ±

Excel 2007
Я уловил Вашу мысль - но это немного не то, что хотелось бы.
На одном форуме нашёл скрипт
[vba]
Код
Sub skr()
Dim a(), b()
Dim i&, ii&, j&, jj&
With Sheets("Архив")
a = .Range("A2", .Cells(Rows.Count, 13).End(xlUp)).Value
End With
ii = 1
ReDim Preserve b(1 To UBound(a), 1 To UBound(a, 2))
For i = 1 To UBound(a)
For j = 4 To 10
If a(i, j) = 47 Then
For jj = 1 To UBound(a, 2)
b(ii, jj) = a(i, jj)
Next
ii = ii + 1
Exit For
End If
Next
Next
With Sheets("47")
.Cells(2, 1).Resize(UBound(b), UBound(b, 2)) = b
End With
End Sub
[/vba]
но он работает в массиве на 10 строк и с листа на лист - нужно с документа на документ. Можно как-то доделать его на 20000 строк например. (плохо разбираюсь в макросах)


Сообщение отредактировал pan-piramida - Воскресенье, 08.06.2014, 23:08
 
Ответить
СообщениеЯ уловил Вашу мысль - но это немного не то, что хотелось бы.
На одном форуме нашёл скрипт
[vba]
Код
Sub skr()
Dim a(), b()
Dim i&, ii&, j&, jj&
With Sheets("Архив")
a = .Range("A2", .Cells(Rows.Count, 13).End(xlUp)).Value
End With
ii = 1
ReDim Preserve b(1 To UBound(a), 1 To UBound(a, 2))
For i = 1 To UBound(a)
For j = 4 To 10
If a(i, j) = 47 Then
For jj = 1 To UBound(a, 2)
b(ii, jj) = a(i, jj)
Next
ii = ii + 1
Exit For
End If
Next
Next
With Sheets("47")
.Cells(2, 1).Resize(UBound(b), UBound(b, 2)) = b
End With
End Sub
[/vba]
но он работает в массиве на 10 строк и с листа на лист - нужно с документа на документ. Можно как-то доделать его на 20000 строк например. (плохо разбираюсь в макросах)

Автор - pan-piramida
Дата добавления - 08.06.2014 в 22:49
RAN Дата: Понедельник, 09.06.2014, 11:20 | Сообщение № 9
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеВСЕМ читать
http://www.excel-vba.ru/forum/index.php?topic=3127.0

Автор - RAN
Дата добавления - 09.06.2014 в 11:20
Alex_ST Дата: Понедельник, 09.06.2014, 11:29 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3209
Репутация: 609 ±
Замечаний: 0% ±

2003
Спасибо, Андрей, за предупреждение.
Подписку на топик у себя отменяю.



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеСпасибо, Андрей, за предупреждение.
Подписку на топик у себя отменяю.

Автор - Alex_ST
Дата добавления - 09.06.2014 в 11:29
Hugo Дата: Понедельник, 09.06.2014, 12:06 | Сообщение № 11
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3255
Репутация: 707 ±
Замечаний: 0% ±

2019
И на 2000 строк работает, и между файлами работает - если дописать в одном месте "ThisWorkbook." и правильно запускать.
Но с таким подходом - обсуждать решение нет желания. Додумывайте сами.
И коды публикуются с использованием спецкнопки #.


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеИ на 2000 строк работает, и между файлами работает - если дописать в одном месте "ThisWorkbook." и правильно запускать.
Но с таким подходом - обсуждать решение нет желания. Додумывайте сами.
И коды публикуются с использованием спецкнопки #.

Автор - Hugo
Дата добавления - 09.06.2014 в 12:06
pan-piramida Дата: Понедельник, 09.06.2014, 18:56 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 80% ±

Excel 2007
Счастья Вам всем - если вы правы! Спецкнопка которая ничего не делает - это круто! Сперва найдите причино - следственную связь, а уж затем делайте выводы. Прошу удалить мою учётную запись с Вашего замечательного форума.


Сообщение отредактировал pan-piramida - Понедельник, 09.06.2014, 19:12
 
Ответить
СообщениеСчастья Вам всем - если вы правы! Спецкнопка которая ничего не делает - это круто! Сперва найдите причино - следственную связь, а уж затем делайте выводы. Прошу удалить мою учётную запись с Вашего замечательного форума.

Автор - pan-piramida
Дата добавления - 09.06.2014 в 18:56
Мир MS Excel » Вопросы и решения » Вопросы по VBA » поиск значения в таблице и перенос всей строки в другой док (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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