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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.04.2011, 16:52   #1
dedelev
Пользователь
 
Регистрация: 11.01.2011
Сообщений: 12
По умолчанию Раскидать все по листам

Добрый день, уважаемые программисты.
Есть книга и в ней четыре листа. На листе "приход" забивается товар, и в первой колонке листа "приход" пишется группа товара. Дак вот нужно раскидать этот товар по листам, которые названы также, как и группы товаров. Во вложении эта книга, там написан макрос, но он беребрасывает весь товар только на первый лист. Думаю понятно объяснил. Я конечно понимаю, что это наверно проще пареной репы, но к сожалению я не программист. Помогите плиз.
Вложения
Тип файла: rar отчет.rar (15.4 Кб, 20 просмотров)
dedelev вне форума Ответить с цитированием
Старый 12.04.2011, 17:41   #2
OlegVE
Форумчанин
 
Регистрация: 27.09.2010
Сообщений: 376
По умолчанию

Здравствуйте
Побалуйтесь с этим
Код:
Sub SHD_Split2List()
Dim ASh As Worksheet, sh As Worksheet
Dim i As Byte, LR As Long, da As Boolean
Dim NList As String
  Set ASh = ActiveSheet
  LR = ASh.[A65536].End(xlUp).Row
  For i = 1 To LR
    NList = ASh.Cells(i, 1)
    If Len(NList) > 0 Then
      For Each sh In Sheets
        If sh.Name Like NList Then da = True: Exit For
      Next
      If Not da Then
        Sheets.Add , Sheets(Sheets.Count)
        ActiveSheet.Name = NList
      Else: da = False
      End If
      ASh.Rows(i).Copy _
      Sheets(NList).Rows(Sheets(NList).[A65536].End(xlUp).Row + 1)
    End If
  Next
End Sub
Взято со странички
http://forum.msexcel.ru/microsoft_ex...o-t2601.0.html
До свидания
OlegVE вне форума Ответить с цитированием
Старый 12.04.2011, 20:59   #3
dedelev
Пользователь
 
Регистрация: 11.01.2011
Сообщений: 12
По умолчанию

Спасибо конечно, но некоторые строки для меня не понятны. Может кто-то даст комментарии к строкам этого кода, а то не могу применить его к моему шаблону
dedelev вне форума Ответить с цитированием
Старый 13.04.2011, 07:52   #4
dedelev
Пользователь
 
Регистрация: 11.01.2011
Сообщений: 12
По умолчанию

Желающих решить мою задачу нет. Тогда объявляю мотивацию в виде бонуса 50 руб. на вебмани, тому кто первый напишет макрос
dedelev вне форума Ответить с цитированием
Старый 13.04.2011, 11:40   #5
dedelev
Пользователь
 
Регистрация: 11.01.2011
Сообщений: 12
По умолчанию

Ну подскажите пожалуйста, очень надо
dedelev вне форума Ответить с цитированием
Старый 13.04.2011, 12:50   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Пришлось убрать итоговые строки - они заметно усложнили бы макрос.
Код:
Sub test()
    Dim cell As Range, ra As Range, DEST As Range: Application.ScreenUpdating = False
    Set ra = Range([A12], Range("A" & Rows.Count).End(xlUp))
    On Error Resume Next
    For Each cell In ra.Cells
        Set DEST = Worksheets(Trim(cell)).Range("B" & Rows.Count).End(xlUp).Offset(1)
        cell.Next.Resize(, 6).Copy DEST
    Next cell
    MsgBox "Готово - строки скопированы на листы"
End Sub
Пример в файле: http://excelvba.ru/XL_Files/Sample__...__14-50-19.zip

Цитата:
Я уверен это простой макрос, только подскажите. 50р. на Вебмани перекину
Не утруждайте себя. Такие суммы меня не интересуют.
EducatedFool вне форума Ответить с цитированием
Старый 13.04.2011, 12:59   #7
19vitek
Пользователь
 
Регистрация: 13.03.2011
Сообщений: 21
По умолчанию

Код:
Sub TMC_Transport()
 kol = Application.Worksheets.Count
 For k = 1 To kol - 1
  Sheets(k).Range("P1") = 12
 Next k
Worksheets("ÏÐÈÕÎÄ").Select
i = 12
While Cells(i, 1) <> ""
 gr = Cells(i, 1)
 For j = 1 To 6
  t = Worksheets(gr).Range("P1")
  Worksheets(gr).Cells(t, j) = Cells(i, j)
 Next j
 Worksheets(gr).Range("P1") = Worksheets(gr).Range("P1") + 1
 i = i + 1
Wend
End Sub
19vitek вне форума Ответить с цитированием
Старый 13.04.2011, 13:13   #8
dedelev
Пользователь
 
Регистрация: 11.01.2011
Сообщений: 12
По умолчанию

Цитата:
Сообщение от 19vitek Посмотреть сообщение
Код:
Sub TMC_Transport()
 kol = Application.Worksheets.Count
 For k = 1 To kol - 1
  Sheets(k).Range("P1") = 12
 Next k
Worksheets("ÏÐÈÕÎÄ").Select
i = 12
While Cells(i, 1) <> ""
 gr = Cells(i, 1)
 For j = 1 To 6
  t = Worksheets(gr).Range("P1")
  Worksheets(gr).Cells(t, j) = Cells(i, j)
 Next j
 Worksheets(gr).Range("P1") = Worksheets(gr).Range("P1") + 1
 i = i + 1
Wend
End Sub
19vitek, Почти подходит, а можно комментарии к строкам, а то я далек от этих слов, чтобы мне применить к своему отчету.
dedelev вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Раскидать 2 формы на 2 монитора ArtGrek Общие вопросы Delphi 19 08.03.2011 22:12
Раскидать данные по ячейкам BoRRuS Microsoft Office Excel 3 20.05.2010 23:48
Диапазон раскидать по ячейкам bysteps Microsoft Office Excel 7 20.03.2010 23:31
Как "раскидать" строки по 4 Листам? PVAOD Microsoft Office Excel 4 10.12.2009 05:20
Раскидать изображения по странице Laita HTML и CSS 3 31.08.2009 17:07