Страницы: 1
RSS
Разнести данные по разным листам (по подразделениям)
 
Есть файл с данными на листе База мне нужно, чтоб он распределил их по подразделениям по каждой на своем листе. Если я сделаю изменения чтоб на своем подразделении тоже сделал изменения.
 
alihan95, т.е. вы хотите что-бы при изменении на листе БАЗА значения менялись на каждом из листов? а какие изменения вы подразумеваете - уже имеющихся данных на листе база или будут добавляться новые строки?  
Не бойтесь совершенства. Вам его не достичь.
 
Да при изменения на листе База менялось на том листе где это подразделения. на листе База будут добавлены новые строки.
 
alihan95, ну тут у вас комплексная задача, как по мне и разбить и добавить...могу предложить первую часть
Цитата
alihan95 написал:
не нужно, чтоб он распределил их по подразделениям по каждой на своем листе.
Не бойтесь совершенства. Вам его не достичь.
 
распределилось автоматически по своим листам?
 
А поиском пользовались https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=113110
 
пользовался но то что мне нужно не нашел.  
 
alihan95, отслеживать изменения как то-странно, если данных не сильно много то проще обновлять вручную (нажатием кнопки)  и все будет удалятся и заново распределятся... чет накдал по быстрому возможно можно упростить и ускорить
Код
Sub mrshkei()
Dim col As New Collection, arr, i As Long, n As Long, lr As Long, cell As Range
With Worksheets("База")
arr = .Range("A2:N2")
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For i = Sheets.Count To 1 Step -1
t = Worksheets(i).Name
    If t <> "База" Then Worksheets(i).Delete
Next i
Application.DisplayAlerts = True
lr = .Cells(Rows.Count, 1).End(xlUp).Row
For i = 3 To lr
    On Error Resume Next
    col.Add .Cells(i, 6), CStr(.Cells(i, 6))
    i = i + 50
   Next i
For n = 1 To col.Count
    For i = 1 To Sheets.Count
        If col(n) = Worksheets(i).Name Then x = x + 1
    Next i
    If x = 0 And n <= Sheets.Count Then
    Worksheets.Add after:=Worksheets(Worksheets.Count)
    Worksheets(Worksheets.Count).Name = col(n)
    ActiveSheet.Range("A1").Resize(1, 14) = arr
    x = 0
    End If
Next n
    For i = 1 To Sheets.Count
    If Worksheets(i).Name <> "База" Then
        Worksheets(i).Range("A2:N10000").Clear
        For n = 3 To lr
            If .Cells(n, 6) = Worksheets(i).Name Then
                If cell Is Nothing Then
                    Set cell = .Cells(n, 6)
                Else
                    Set cell = Union(cell, .Cells(n, 6))
                End If
            End If
        Next n
        If Not cell Is Nothing Then cell.EntireRow.Copy Destination:=Worksheets(i).Range("A2")
        Set cell = Nothing
    End If
    Next i
End With
Application.ScreenUpdating = True
End Sub

Не бойтесь совершенства. Вам его не достичь.
 
Можно сделать через надстройку Plex.
Выделяем База - кнопка Разобрать- по колонке 6 и Ok....
Форматирование листа на новых сохраняется.
Изменено: Marat Ta - 12.03.2021 23:39:46
 
Если Эксель хотя бы 2010, то сделать довольно просто через PQ.
загружаете свою БАЗУ, а потом на каждом листе выводите соответсвующее подразделение. Далее, при изменении БАЗЫ нажимаете Данные - Обновить все и вот Вам счастье.
 
Еще вариант.
"Все гениальное просто, а все простое гениально!!!"
 
Mershik, Nordheim, спасибо
Страницы: 1
Наверх