Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Перенос данных из заданных областей на отдельный лист с сортировкой
 
Всем привет!

Столкнулся со следующей проблемкой:
Мне нужно чтоб данные из заданных диапазонов (области выделены желтым) разных листов (в примере их 2, в жизни - больше) переносились на лист итогов в соответствующие столбцы с сортировкой данных по дате.

Условия:
1) переносить только не пустые строки: строка считается пустой если поле даты - пустое
2) заполнять в итогах поле "поставщик", которое берется из шапки соответствующей таблицы
3) иметь возможность добавлять дополнительные области.

Буду благодарен за помощь с реализацией - насколько я понял встроенными средствами эксель этого не сделать.
 
День добрый!
т.е. у вас кучка листов, в которых еще одна кучка таблиц?  
 
Да, но таблицы все аналогичного формата, единственно что в них может быть разное кол-во строк, и я думал что можно будет как-то задавать области по которым делать выборки
 
Genesys, Если листов фиксированое кол-во, то можно попробовать прогнать через PQ, но это надо делать смотреть на сам исходник
либо менять подход к вводу данных и через доп столбцы выводить
В любом случае тут вот так "с руки" не решается. Хотя мб другие подскажут вариант
 
Ни у кого нету идей? или может надо формат таблиц поменять?
 
Цитата
Ни у кого нету идей?
Находясь на листе Итоги, запустите макрос
Код
Sub Sbor()
Dim Sht As Worksheet
Dim i As Long
Dim iLastRow As Long
Dim n As Integer
Dim j As Integer
Dim FoundCell As Range
Dim FAdr As String
  iLastRow = Cells(Rows.Count, "A").End(xlUp).Row + 1
  Range("B7:G" & iLastRow).ClearContents
      i = 7    'начальная строка в таблице на листе Итоги
    For Each Sht In Worksheets
      If Sht.Name <> "Итоги" Then        ' кроме листа "Итоги"
        With Sht
    Set FoundCell = .Columns(1).Find("поставщик:", , xlValues, xlWhole)
     If Not FoundCell Is Nothing Then
        FAdr = FoundCell.Address
        n = FoundCell.Row + 3    'начальная строка в таблице поставщика
      Do
        Cells(i, "B") = FoundCell.Offset(, 1)      'поставщик
        For j = n To .Cells(n - 1, "K").End(xlDown).Row
          Cells(i, "C") = .Cells(j, "K")             'дата
          Cells(i, "D") = .Cells(j, "J")             'накладная
          Cells(i, "F") = .Cells(j, "L")             'сумма
          Cells(i, "G") = .Cells(j, "M")             'налог
          i = i + 1
        Next
         Set FoundCell = .Columns(1).FindNext(FoundCell)
          n = FoundCell.Row + 3
      Loop While FoundCell.Address <> FAdr
     End If
        End With
      End If
    Next
End Sub
 
2 Kuzmich

Спасибо! Работает как надо! :) а подскажи пожалуйста как сделать чтоб этот список после выборки сортировался по дате?
 
Genesys, у нас на форуме к незнакомым людям принято обращаться на ВЫ.
 
Юрий М

Извиняюсь :) учту :)
Страницы: 1
Читают тему (гостей: 1)
Наверх