Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.11.2010, 13:30   #1
Extril
Пользователь
 
Регистрация: 08.11.2010
Сообщений: 33
Восклицание Макрос переноса строк

Добрый день коллеги, у меня возникла задача: Найти в столбце "i" на всех листах книги "не пустые" ячейки (заполнение происходит по выпадаемому списку) и перенести содержащие такие ячейки строки целиком в лист "макро-регион". Обьем книги будет постоянно расти до 3000 строк.
К сожалению найденные на форуме решения не подходят для моей задачи, поэтому обращаюсь к вам за помощью, и прикрепляю свой файл
Вложения
Тип файла: rar Книга1.rar (11.1 Кб, 18 просмотров)
Extril вне форума Ответить с цитированием
Старый 11.11.2010, 13:59   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

кнопка "БАНЗАЙ!" на листе "макро-регион"
Вложения
Тип файла: rar Книга444.rar (17.8 Кб, 96 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 11.11.2010, 14:04   #3
Extril
Пользователь
 
Регистрация: 08.11.2010
Сообщений: 33
По умолчанию

Спасибо большое, а возможно реализовать функцию переноса (а не копирования)
Extril вне форума Ответить с цитированием
Старый 11.11.2010, 14:14   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

перенос - это в смысле:
вырезать с исходного листа?
или перенести только данные без форматов, формул, проверок и прочего?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 11.11.2010, 14:18   #5
Extril
Пользователь
 
Регистрация: 08.11.2010
Сообщений: 33
По умолчанию

Имеется в виду вырезать с исходных листов и поместить в лист "Макро-Регион".
В итоге должен получиться лист с отработанной инфой ("Макро-Регион"), а остальных листах остались лишь рабочие данные (пустой столбец "i").
Extril вне форума Ответить с цитированием
Старый 11.11.2010, 14:25   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

замените
.Rows(R).Copy
на
.Rows(R).Cut
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 11.11.2010, 14:41   #7
Extril
Пользователь
 
Регистрация: 08.11.2010
Сообщений: 33
По умолчанию

Спасибо, это именно то, что нужно
Extril вне форума Ответить с цитированием
Старый 11.11.2010, 17:59   #8
masterenergy
Пользователь
 
Регистрация: 28.08.2009
Сообщений: 34
По умолчанию

Чтобы не создавать лишней темы решил написать здесь, так как в принципе задача идентична но:
1. Как из листа "цех №1" копировать в лист "сюда цех№1 " строки с тем условием, что если номера из листа "цех №1" не совпадают с номерами в листе "список рн" в 1-ом столбце.
2. всё также только вместо "цех №1" идёт "цех №2"
Вложения
Тип файла: rar перенос строк.rar (8.5 Кб, 29 просмотров)
masterenergy вне форума Ответить с цитированием
Старый 11.11.2010, 19:33   #9
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

masterenergy, добавите в проект модуль, скопируйте в него этот
Код:
Sub StartProc()
  CopySTR Sheets("цех №1").Index, Sheets("сюда цех №1").Index
  CopySTR Sheets("цех №2").Index, Sheets("сюда цех №2").Index
End Sub


Sub CopySTR(ShT As Integer, ShD As Integer)
  Dim RD As Long, r As Long, fnd As Long
  Sheets(ShT).Activate
  With Sheets(ShD)
    RD = .Cells(.Rows.Count, 1).End(xlUp).Row
    For r = 2 To Cells(Rows.Count, 1).End(xlUp).Row
      On Error Resume Next
      fnd = WorksheetFunction.Match(Cells(r, 2), Sheets("список рн").Columns(1), 0)
      If Err.Number <> 0 Then
        Err.Clear
        RD = RD + 1
        .Cells(RD, 1) = Cells(r, 1)
        .Cells(RD, 2) = Cells(r, 2)
      End If
    Next
  End With
End Sub
придумайте сами как стартовать StartProc.
новые данные дописываются на листы "сюда цех№..."
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 11.11.2010, 20:32   #10
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

2 masterenergy
Категорически НЕ рекомендую пробелы в имени рабочего листа, были замечены проблемы.
Лучше напишите так:
СюдаЦех№1
или
сюда_цех_№1
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос на сравнение и подсчет в первом столбце строк, и сумирование значений этих строк в другом столбце Shpr0T Microsoft Office Excel 8 30.08.2010 17:52
Макрос для переноса данных в виде таблицы из Excel в Word Jevgeni85 Microsoft Office Excel 2 25.08.2010 16:52
Макрос переноса строк на другой лист cargoline9 Microsoft Office Excel 11 15.12.2009 22:05
Проблема переноса строк из одного списка (Listbox) в другой. hip3r Win Api 4 13.10.2009 11:59