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

Вход

Регистрация

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

 

= Мир MS Excel/Копирование ячеек в шаблон по условию - Мир MS Excel

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

Excel 2010
Всем Привет. Появилась проблемка, вроде бы в простом деле. Нужно по условию (168) найти все строки на странице Список1, скопировать на страницу Шаблон и лишние строки удалить.
Делаю так - не работает
[vba]
Код
Sub DrukNariad()
Dim x&, arr(), number$, rr As Range
'Dim i As Long, nRow As Long
         x = "168"
         Sheets("Список1").Select
         nRow = ActiveSheet.Columns(1).End(xlDown).Row
         For i = 2 To nRow
             Set rr = Columns(1).Cells.Find(What:=x)
                 If Not rr Is Nothing Then
                     Sheets("Шаблон").Select
                     'ActiveCell.Offset(0, 2).Select
                 rr.Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(, 3).Value = Sheets("Список").Cells(i, 1).Resize(, 3).Value
                 End If
         Set rr = Nothing
     Next i                 
End Sub
[/vba]
К сообщению приложен файл: 2298053.xlsx (10.7 Kb)
 
Ответить
СообщениеВсем Привет. Появилась проблемка, вроде бы в простом деле. Нужно по условию (168) найти все строки на странице Список1, скопировать на страницу Шаблон и лишние строки удалить.
Делаю так - не работает
[vba]
Код
Sub DrukNariad()
Dim x&, arr(), number$, rr As Range
'Dim i As Long, nRow As Long
         x = "168"
         Sheets("Список1").Select
         nRow = ActiveSheet.Columns(1).End(xlDown).Row
         For i = 2 To nRow
             Set rr = Columns(1).Cells.Find(What:=x)
                 If Not rr Is Nothing Then
                     Sheets("Шаблон").Select
                     'ActiveCell.Offset(0, 2).Select
                 rr.Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(, 3).Value = Sheets("Список").Cells(i, 1).Resize(, 3).Value
                 End If
         Set rr = Nothing
     Next i                 
End Sub
[/vba]

Автор - SergioGach
Дата добавления - 01.03.2015 в 16:13
RAN Дата: Воскресенье, 01.03.2015, 17:08 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщениеhttp://www.excelworld.ru/forum/10-15659-133702-16-1424512393
Лишнее (90%) убрать

Автор - RAN
Дата добавления - 01.03.2015 в 17:08
SergioGach Дата: Воскресенье, 01.03.2015, 17:24 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
http://www.excelworld.ru/forum/10-15659-133702-16-1424512393
Лишнее (90%) убрать

Спасибо, посмотрел, не много не то, верней совсем не то. Нужно без фильтра, а перебором данных колонки. Это только часть кода.
 
Ответить
Сообщение
http://www.excelworld.ru/forum/10-15659-133702-16-1424512393
Лишнее (90%) убрать

Спасибо, посмотрел, не много не то, верней совсем не то. Нужно без фильтра, а перебором данных колонки. Это только часть кода.

Автор - SergioGach
Дата добавления - 01.03.2015 в 17:24
Leanna Дата: Воскресенье, 01.03.2015, 19:23 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 189
Репутация: 78 ±
Замечаний: 0% ±

excel 2010
лишние строки удалить на листе шаблон? или список?
[vba]
Код
Sub DrukNariad()
Dim x&, arr(), number$, rr As Range
'Dim i As Long, nRow As Long
         x = "168"
         Set sh1 = Sheets("Список1")
         Set sh2 = Sheets("Шаблон")
         nRow = ActiveSheet.Columns(1).End(xlDown).Row
         For i = 2 To nRow
             If sh1.Cells(i, 1) = x Then
                 sh2.Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(, 3).Value = sh1.Cells(i, 1).Resize(, 3).Value
             End If
     Next i
End Sub
[/vba]


Лучше день потерять, потом за пять минут долететь!
 
Ответить
Сообщениелишние строки удалить на листе шаблон? или список?
[vba]
Код
Sub DrukNariad()
Dim x&, arr(), number$, rr As Range
'Dim i As Long, nRow As Long
         x = "168"
         Set sh1 = Sheets("Список1")
         Set sh2 = Sheets("Шаблон")
         nRow = ActiveSheet.Columns(1).End(xlDown).Row
         For i = 2 To nRow
             If sh1.Cells(i, 1) = x Then
                 sh2.Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(, 3).Value = sh1.Cells(i, 1).Resize(, 3).Value
             End If
     Next i
End Sub
[/vba]

Автор - Leanna
Дата добавления - 01.03.2015 в 19:23
SergioGach Дата: Воскресенье, 01.03.2015, 19:50 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Пробую. Лишние на шаблон.
 
Ответить
СообщениеПробую. Лишние на шаблон.

Автор - SergioGach
Дата добавления - 01.03.2015 в 19:50
Leanna Дата: Воскресенье, 01.03.2015, 19:53 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 189
Репутация: 78 ±
Замечаний: 0% ±

excel 2010
А зачем удалять лишние на шаблоне? Не проще не создавать там ненужных строк? Не очень понимаю.


Лучше день потерять, потом за пять минут долететь!
 
Ответить
СообщениеА зачем удалять лишние на шаблоне? Не проще не создавать там ненужных строк? Не очень понимаю.

Автор - Leanna
Дата добавления - 01.03.2015 в 19:53
SergioGach Дата: Воскресенье, 01.03.2015, 20:01 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Не работает.
В примере отмечено желтым перенести в шаблон и красным удалить
К сообщению приложен файл: 3978749.xlsm (20.9 Kb)
 
Ответить
СообщениеНе работает.
В примере отмечено желтым перенести в шаблон и красным удалить

Автор - SergioGach
Дата добавления - 01.03.2015 в 20:01
SergioGach Дата: Воскресенье, 01.03.2015, 20:10 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
А зачем удалять лишние на шаблоне? Не проще не создавать там ненужных строк? Не очень понимаю.

Попробую обяснить.
Строк (под номером 168) может быть от 1 до 40. Так как ниже таблицы идут лругие данные то можно пойти двумя путями:
1. Вставлять строки сколько нужно под номером 168 ( данном случае 3)
2. Делаем в шаблоне 50 строк, заполняем сколько нужно и лишние удаляем.
Думаю 2 способ легче.
 
Ответить
Сообщение
А зачем удалять лишние на шаблоне? Не проще не создавать там ненужных строк? Не очень понимаю.

Попробую обяснить.
Строк (под номером 168) может быть от 1 до 40. Так как ниже таблицы идут лругие данные то можно пойти двумя путями:
1. Вставлять строки сколько нужно под номером 168 ( данном случае 3)
2. Делаем в шаблоне 50 строк, заполняем сколько нужно и лишние удаляем.
Думаю 2 способ легче.

Автор - SergioGach
Дата добавления - 01.03.2015 в 20:10
Leanna Дата: Воскресенье, 01.03.2015, 20:16 | Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 189
Репутация: 78 ±
Замечаний: 0% ±

excel 2010
Смотрите вложение.
К сообщению приложен файл: 4244958.xlsm (22.5 Kb)


Лучше день потерять, потом за пять минут долететь!
 
Ответить
СообщениеСмотрите вложение.

Автор - Leanna
Дата добавления - 01.03.2015 в 20:16
SergioGach Дата: Воскресенье, 01.03.2015, 20:35 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Работает. Спасибо. Но я не предусмотрел что выше таблицы тоже есть строки, а так уже не работает.
Возможно ли превязать вставку к ячейке В3 или первая куда вставить В4 (они неизменные)
См. файл
К сообщению приложен файл: 4244958-1-.xlsm (21.7 Kb)
 
Ответить
СообщениеРаботает. Спасибо. Но я не предусмотрел что выше таблицы тоже есть строки, а так уже не работает.
Возможно ли превязать вставку к ячейке В3 или первая куда вставить В4 (они неизменные)
См. файл

Автор - SergioGach
Дата добавления - 01.03.2015 в 20:35
Leanna Дата: Воскресенье, 01.03.2015, 21:15 | Сообщение № 11
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 189
Репутация: 78 ±
Замечаний: 0% ±

excel 2010
Вот так?
К сообщению приложен файл: 7592588.xlsm (23.5 Kb)


Лучше день потерять, потом за пять минут долететь!
 
Ответить
СообщениеВот так?

Автор - Leanna
Дата добавления - 01.03.2015 в 21:15
SergioGach Дата: Воскресенье, 01.03.2015, 21:29 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Получилося, Большое спасибо!
 
Ответить
СообщениеПолучилося, Большое спасибо!

Автор - SergioGach
Дата добавления - 01.03.2015 в 21:29
krosav4ig Дата: Воскресенье, 01.03.2015, 22:06 | Сообщение № 13
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
SergioGach, а можно убрать объединенные ячейки?
если можно, то вот мой вариант, проверяйте
создал две умные таблицы Список1 и Шаблон
в модуле листа Список1 код
[vba]
Код
Private Sub copy_rows(num)
     Dim b As Boolean
     Dim Список1 As ListObject: Set Список1 = Me.ListObjects("Список1")
     Dim Шаблон As ListObject: Set Шаблон = Parent.Sheets("Шаблон").ListObjects("Шаблон")
rr: If num & "" <> num Or num = "" Then
         If MsgBox("номер не введений, повторити введення?", 36) = 6 Then
             num = Application.InputBox("Введіть номер"): GoTo rr
         Else: Exit Sub
         End If
     ElseIf Список1.ListColumns(1).Range.Find(num, , , 1) Is Nothing Then
         If MsgBox("номер не знайдений, повторити введення?", 36) = 6 Then
             num = Application.InputBox("Введіть номер"): GoTo rr
         Else: Exit Sub
         End If
     End If
     Application.ScreenUpdating = 0: Application.EnableEvents = 0
     If Not Шаблон.DataBodyRange Is Nothing Then Шаблон.DataBodyRange.Delete
     Список1.Range.AutoFilter Field:=1, Criteria1:=num
     Список1.DataBodyRange.Offset(, 1).Resize(, 3).SpecialCells(12).Copy
     Шаблон.HeaderRowRange(2, 2).PasteSpecial xlPasteValues
     Список1.Range.AutoFilter
     Шаблон.Parent.Activate: Шаблон.HeaderRowRange(1).Activate
     Set Список1 = Nothing: Set Шаблон = Nothing
     Application.ScreenUpdating = 1: Application.EnableEvents = 1
End Sub
Private Sub test()
     copy_rows Application.InputBox("Введіть номер")
End Sub
[/vba]
жмете кнопку, пишете номер или выбираете ячейку с номерм, жмете ОК или Enter
К сообщению приложен файл: 2298053.xlsm (27.8 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Воскресенье, 01.03.2015, 22:18
 
Ответить
СообщениеSergioGach, а можно убрать объединенные ячейки?
если можно, то вот мой вариант, проверяйте
создал две умные таблицы Список1 и Шаблон
в модуле листа Список1 код
[vba]
Код
Private Sub copy_rows(num)
     Dim b As Boolean
     Dim Список1 As ListObject: Set Список1 = Me.ListObjects("Список1")
     Dim Шаблон As ListObject: Set Шаблон = Parent.Sheets("Шаблон").ListObjects("Шаблон")
rr: If num & "" <> num Or num = "" Then
         If MsgBox("номер не введений, повторити введення?", 36) = 6 Then
             num = Application.InputBox("Введіть номер"): GoTo rr
         Else: Exit Sub
         End If
     ElseIf Список1.ListColumns(1).Range.Find(num, , , 1) Is Nothing Then
         If MsgBox("номер не знайдений, повторити введення?", 36) = 6 Then
             num = Application.InputBox("Введіть номер"): GoTo rr
         Else: Exit Sub
         End If
     End If
     Application.ScreenUpdating = 0: Application.EnableEvents = 0
     If Not Шаблон.DataBodyRange Is Nothing Then Шаблон.DataBodyRange.Delete
     Список1.Range.AutoFilter Field:=1, Criteria1:=num
     Список1.DataBodyRange.Offset(, 1).Resize(, 3).SpecialCells(12).Copy
     Шаблон.HeaderRowRange(2, 2).PasteSpecial xlPasteValues
     Список1.Range.AutoFilter
     Шаблон.Parent.Activate: Шаблон.HeaderRowRange(1).Activate
     Set Список1 = Nothing: Set Шаблон = Nothing
     Application.ScreenUpdating = 1: Application.EnableEvents = 1
End Sub
Private Sub test()
     copy_rows Application.InputBox("Введіть номер")
End Sub
[/vba]
жмете кнопку, пишете номер или выбираете ячейку с номерм, жмете ОК или Enter

Автор - krosav4ig
Дата добавления - 01.03.2015 в 22:06
SergioGach Дата: Понедельник, 02.03.2015, 20:05 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
SergioGach, а можно убрать объединенные ячейки?
если можно, то вот мой вариант, проверяйте
создал две умные таблицы Список1 и Шаблон
в модуле листа Список1 код

Так, как шаблон не мой и утвержденный объединение ячеек не убрать.
К тому же с помощью Leanna данный вопрос решен.
Но Вам СПАСИБО! Я изучу Ваш пример.
Сейчас у меня другая проблема при переносе столбца количество нужно что б в шаблон вставлялося число прописью.
например "Список1" в колонке "К-ство" 150,5 переносит "Шаблон" в колонку "К-ство" = Сто пятьдесят целых пять десятых.
Для АДМИНА - это не новый вопрос, а просто информация. Сначала сам буду пробовать и если нужда заставит то создам новую тему.
 
Ответить
Сообщение
SergioGach, а можно убрать объединенные ячейки?
если можно, то вот мой вариант, проверяйте
создал две умные таблицы Список1 и Шаблон
в модуле листа Список1 код

Так, как шаблон не мой и утвержденный объединение ячеек не убрать.
К тому же с помощью Leanna данный вопрос решен.
Но Вам СПАСИБО! Я изучу Ваш пример.
Сейчас у меня другая проблема при переносе столбца количество нужно что б в шаблон вставлялося число прописью.
например "Список1" в колонке "К-ство" 150,5 переносит "Шаблон" в колонку "К-ство" = Сто пятьдесят целых пять десятых.
Для АДМИНА - это не новый вопрос, а просто информация. Сначала сам буду пробовать и если нужда заставит то создам новую тему.

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

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