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

Вход

Регистрация

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

 

= Мир MS Excel/Копия данных с одного листа на несколько - Мир MS Excel

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

Excel 2010
Доброго всем вечера. Суть проблемы в следующем: есть список книг и дел предприятия. Список делиться по отделам. Необходим макрос, который делает следующее:
1) создаёт новый лист "лист 1". Далее копирует с листа "дела" заголовок (ячейки А8:F10) и вставляет его на "лист 1". Дальше с листа "дела" копирует ТОЛЬКО то что относиться к разделу "Учет работников" и так же вставляет на "лист 1". Дальше все также, только копировать необходимо раздел "учет карточек" на "лист 2" и т.д.
2) необходимо проверить столбик А (с нумерацией дел) на поиск недостающих номеров и вывод их, например, в столбик I
При помощи "записи макроса" что-то накидал, но до конца так и не получается. Прошу у Вас помощи.
К сообщению приложен файл: 2633407.xlsm (62.2 Kb)
 
Ответить
СообщениеДоброго всем вечера. Суть проблемы в следующем: есть список книг и дел предприятия. Список делиться по отделам. Необходим макрос, который делает следующее:
1) создаёт новый лист "лист 1". Далее копирует с листа "дела" заголовок (ячейки А8:F10) и вставляет его на "лист 1". Дальше с листа "дела" копирует ТОЛЬКО то что относиться к разделу "Учет работников" и так же вставляет на "лист 1". Дальше все также, только копировать необходимо раздел "учет карточек" на "лист 2" и т.д.
2) необходимо проверить столбик А (с нумерацией дел) на поиск недостающих номеров и вывод их, например, в столбик I
При помощи "записи макроса" что-то накидал, но до конца так и не получается. Прошу у Вас помощи.

Автор - sos-13
Дата добавления - 28.11.2013 в 22:51
SkyPro Дата: Пятница, 29.11.2013, 11:25 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
[vba]
Код
Sub cpy()
Dim rRange As Range, rCell As Range, r&, i&
Dim hat As Range
Dim all
all = Array("Учет работников", "учет личных дел", "учет карточек", "еще учет")
Set hat = Sheets(1).[a8:f10]
           With Application
               For i = 0 To UBound(all)
                   Set rCell = Sheets(1).Cells.Find(all(i)).Offset(1, 0)
                       r = rCell.Offset(0, 1).End(xlDown).Row - rCell.Row + 1
                   Set rRange = rCell.Resize(r, 6)
                       Sheets.Add After:=Sheets(Sheets.Count)
                       Sheets(Sheets.Count).Name = all(i)
                       hat.Copy Sheets(Sheets.Count).[a1]
                       rRange.Copy Sheets(Sheets.Count).[a4]
               Next
           End With
End Sub
[/vba]

Высоту строк и столбцов добавьте сами.
[moder]Вот это правильное название макроса!
Следующий какой будет?
_Boroda_[/moder]

           [offtop]          не так плох макрос, как его название :)


skypro1111@gmail.com

Сообщение отредактировал SkyPro - Пятница, 29.11.2013, 20:07
 
Ответить
Сообщение[vba]
Код
Sub cpy()
Dim rRange As Range, rCell As Range, r&, i&
Dim hat As Range
Dim all
all = Array("Учет работников", "учет личных дел", "учет карточек", "еще учет")
Set hat = Sheets(1).[a8:f10]
           With Application
               For i = 0 To UBound(all)
                   Set rCell = Sheets(1).Cells.Find(all(i)).Offset(1, 0)
                       r = rCell.Offset(0, 1).End(xlDown).Row - rCell.Row + 1
                   Set rRange = rCell.Resize(r, 6)
                       Sheets.Add After:=Sheets(Sheets.Count)
                       Sheets(Sheets.Count).Name = all(i)
                       hat.Copy Sheets(Sheets.Count).[a1]
                       rRange.Copy Sheets(Sheets.Count).[a4]
               Next
           End With
End Sub
[/vba]

Высоту строк и столбцов добавьте сами.
[moder]Вот это правильное название макроса!
Следующий какой будет?
_Boroda_[/moder]

           [offtop]          не так плох макрос, как его название :)

Автор - SkyPro
Дата добавления - 29.11.2013 в 11:25
sos-13 Дата: Пятница, 29.11.2013, 19:57 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Sub cpy()
Dim rRange As Range, rCell As Range, r&, i&
Dim hat As Range
Dim all
all = Array("Учет работников", "учет личных дел", "учет карточек", "еще учет")
Set hat = Sheets(1).[a8:f10]
With Application
For i = 0 To UBound(all)
Set rCell = Sheets(1).Cells.Find(all(i)).Offset(1, 0)
r = rCell.Offset(0, 1).End(xlDown).Row - rCell.Row + 1
Set rRange = rCell.Resize(r, 6)
Sheets.Add After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = all(i)
hat.Copy Sheets(Sheets.Count).[a1]
rRange.Copy Sheets(Sheets.Count).[a4]
Next
End With
End Sub

Высоту строк и столбцов добавьте сами.

Спасибо огромное. А по поводу пункта 2) не подскажете?
 
Ответить
Сообщение
Sub cpy()
Dim rRange As Range, rCell As Range, r&, i&
Dim hat As Range
Dim all
all = Array("Учет работников", "учет личных дел", "учет карточек", "еще учет")
Set hat = Sheets(1).[a8:f10]
With Application
For i = 0 To UBound(all)
Set rCell = Sheets(1).Cells.Find(all(i)).Offset(1, 0)
r = rCell.Offset(0, 1).End(xlDown).Row - rCell.Row + 1
Set rRange = rCell.Resize(r, 6)
Sheets.Add After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = all(i)
hat.Copy Sheets(Sheets.Count).[a1]
rRange.Copy Sheets(Sheets.Count).[a4]
Next
End With
End Sub

Высоту строк и столбцов добавьте сами.

Спасибо огромное. А по поводу пункта 2) не подскажете?

Автор - sos-13
Дата добавления - 29.11.2013 в 19:57
SkyPro Дата: Пятница, 29.11.2013, 20:10 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
Вы для начала уточните как определить "недостающий" номер. А там уже будем думать.


skypro1111@gmail.com
 
Ответить
СообщениеВы для начала уточните как определить "недостающий" номер. А там уже будем думать.

Автор - SkyPro
Дата добавления - 29.11.2013 в 20:10
sos-13 Дата: Пятница, 29.11.2013, 20:27 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Сейчас пытаюсь найти похожую тему (где-то недавно видел на форуме похожую), но смысл в следующем: первый столбик (начиная с ячейки А4) "№ дела" содержит различные номера не по порядку, начиная с 1. Номеров очень много, более 1500 штук, и чисто машинально пропускаю числа, когда присваиваю новым делам. Вот чтобы не переписывать тупо на листик недостающие номера, хочется, чтобы в столбик выводились недостающие в столбце "№ дела" номера.
 
Ответить
СообщениеСейчас пытаюсь найти похожую тему (где-то недавно видел на форуме похожую), но смысл в следующем: первый столбик (начиная с ячейки А4) "№ дела" содержит различные номера не по порядку, начиная с 1. Номеров очень много, более 1500 штук, и чисто машинально пропускаю числа, когда присваиваю новым делам. Вот чтобы не переписывать тупо на листик недостающие номера, хочется, чтобы в столбик выводились недостающие в столбце "№ дела" номера.

Автор - sos-13
Дата добавления - 29.11.2013 в 20:27
SkyPro Дата: Пятница, 29.11.2013, 20:40 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
Если бы вы еще сказали где найти список всех номеров..
А пока так:[vba]
Код
Sub недостающие_номера() 'Так лучше?  
Dim x
Dim mx&
Dim i&, r&, g&: g = 0
Dim arRes&(1 To 100000, 1 To 1)
Dim exists As Boolean: exists = False

mx = Application.WorksheetFunction.max([a13:a1500])
x = [a13:a1500]

For i = 0 To mx
exists = False
      For r = 1 To UBound(x)
              If x(r, 1) = i Then
                  exists = True
              End If
      Next
      If exists = False Then
      g = g + 1
          arRes(g, 1) = i
      End If
Next
If g = 0 Then Exit Sub
[h1].Resize(g) = arRes
End Sub
[/vba]


skypro1111@gmail.com

Сообщение отредактировал SkyPro - Пятница, 29.11.2013, 20:40
 
Ответить
СообщениеЕсли бы вы еще сказали где найти список всех номеров..
А пока так:[vba]
Код
Sub недостающие_номера() 'Так лучше?  
Dim x
Dim mx&
Dim i&, r&, g&: g = 0
Dim arRes&(1 To 100000, 1 To 1)
Dim exists As Boolean: exists = False

mx = Application.WorksheetFunction.max([a13:a1500])
x = [a13:a1500]

For i = 0 To mx
exists = False
      For r = 1 To UBound(x)
              If x(r, 1) = i Then
                  exists = True
              End If
      Next
      If exists = False Then
      g = g + 1
          arRes(g, 1) = i
      End If
Next
If g = 0 Then Exit Sub
[h1].Resize(g) = arRes
End Sub
[/vba]

Автор - SkyPro
Дата добавления - 29.11.2013 в 20:40
sos-13 Дата: Пятница, 29.11.2013, 21:03 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Огромное спасибо!!!!! Все работает.
Ну и последний вопрос, извиняюсь за наглость. Такая задача: в столбце "№ дела" несколько раз встречаются дубликаты номеров, например два (или даже три) раза встречаются номера 5, 12, 23 и т.д. Необходимо выделить каждый повторяющийся номер своим цветом, и вывести в одну ячейку (например в ячейку "J2") дубликаты в виде "5-5; 12-12; 23-23"/
 
Ответить
СообщениеОгромное спасибо!!!!! Все работает.
Ну и последний вопрос, извиняюсь за наглость. Такая задача: в столбце "№ дела" несколько раз встречаются дубликаты номеров, например два (или даже три) раза встречаются номера 5, 12, 23 и т.д. Необходимо выделить каждый повторяющийся номер своим цветом, и вывести в одну ячейку (например в ячейку "J2") дубликаты в виде "5-5; 12-12; 23-23"/

Автор - sos-13
Дата добавления - 29.11.2013 в 21:03
Pelena Дата: Пятница, 29.11.2013, 21:06 | Сообщение № 8
Группа: Админы
Ранг: Местный житель
Сообщений: 19197
Репутация: 4423 ±
Замечаний: ±

Excel 365 & Mac Excel
sos-13, не будем складывать все вопросы в одну тему. ОК?


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщениеsos-13, не будем складывать все вопросы в одну тему. ОК?

Автор - Pelena
Дата добавления - 29.11.2013 в 21:06
_Boroda_ Дата: Пятница, 29.11.2013, 21:09 | Сообщение № 9
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Вывел формулами в столбце I минимальный номер, больший самого большого из существующих и 5 минимальных номеров, которых в списке номеров нет.
Также сделал условное форматирование - если случайно номера повторяются, то они выделятся красным.
И в столбце А сделал выпадающий список с 5-ю первыми на очередь неиспользуемыми до настоящего момента номерами.

Последнего вопроса ТС и совершенно справедливого замечания Лены не видел, однако угадал, похоже. Только не в столбец отдельный вывел, а просто раскрасил условным форматированием
К сообщению приложен файл: 2633407_1.xlsm (63.5 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеВывел формулами в столбце I минимальный номер, больший самого большого из существующих и 5 минимальных номеров, которых в списке номеров нет.
Также сделал условное форматирование - если случайно номера повторяются, то они выделятся красным.
И в столбце А сделал выпадающий список с 5-ю первыми на очередь неиспользуемыми до настоящего момента номерами.

Последнего вопроса ТС и совершенно справедливого замечания Лены не видел, однако угадал, похоже. Только не в столбец отдельный вывел, а просто раскрасил условным форматированием

Автор - _Boroda_
Дата добавления - 29.11.2013 в 21:09
Pelena Дата: Пятница, 29.11.2013, 21:14 | Сообщение № 10
Группа: Админы
Ранг: Местный житель
Сообщений: 19197
Репутация: 4423 ±
Замечаний: ±

Excel 365 & Mac Excel
[offtop]
однако угадал

однако экстрасенс :) [/offtop]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение[offtop]
однако угадал

однако экстрасенс :) [/offtop]

Автор - Pelena
Дата добавления - 29.11.2013 в 21:14
sos-13 Дата: Суббота, 30.11.2013, 01:00 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Высоту строк и столбцов добавьте сами.

Опять же извиняюсь за назойливость, но прошу снова помощи. А как сделать так, чтобы данные переносились на вновь созданный лист без форматирования текста, т.е. чтобы как на первом листе (ширина строк, столбцов, размер и тип шрифта и т.д.) так и вставлялось на новый. Спасибо.
И ещё один вопросик маленький. Размер файла получается около 130 Мб, это нормально? (количество дел в описи около 1200 штук, количество получаемых листов около 30)


Сообщение отредактировал sos-13 - Суббота, 30.11.2013, 12:41
 
Ответить
Сообщение
Высоту строк и столбцов добавьте сами.

Опять же извиняюсь за назойливость, но прошу снова помощи. А как сделать так, чтобы данные переносились на вновь созданный лист без форматирования текста, т.е. чтобы как на первом листе (ширина строк, столбцов, размер и тип шрифта и т.д.) так и вставлялось на новый. Спасибо.
И ещё один вопросик маленький. Размер файла получается около 130 Мб, это нормально? (количество дел в описи около 1200 штук, количество получаемых листов около 30)

Автор - sos-13
Дата добавления - 30.11.2013 в 01:00
sos-13 Дата: Суббота, 30.11.2013, 12:49 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Опять же извиняюсь за назойливость, но прошу снова помощи. А как сделать так, чтобы данные переносились на вновь созданный лист без форматирования текста, т.е. чтобы как на первом листе (ширина строк, столбцов, размер и тип шрифта и т.д.) так и вставлялось на новый. Спасибо.

Эту проблему решил. Но все равно огромное спасибо всем за помощь.
А вот по размеру файла не подскажете?
 
Ответить
Сообщение
Опять же извиняюсь за назойливость, но прошу снова помощи. А как сделать так, чтобы данные переносились на вновь созданный лист без форматирования текста, т.е. чтобы как на первом листе (ширина строк, столбцов, размер и тип шрифта и т.д.) так и вставлялось на новый. Спасибо.

Эту проблему решил. Но все равно огромное спасибо всем за помощь.
А вот по размеру файла не подскажете?

Автор - sos-13
Дата добавления - 30.11.2013 в 12:49
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копия данных с одного листа на несколько (Макросы Sub)
  • Страница 1 из 1
  • 1
Поиск:

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