Дата: Понедельник, 18.07.2011, 11:49 |
Сообщение № 1
Группа: Гости
Может быть вопрос простой, но вероятно, не хватает опыта =))))
Задача стоит такая:
Есть пять менеджеров, каждый ведет свою таблицу клиентов, нужно что бы у начальника отдела была общая сводная таблица со всех пяти, причем, такая, что бы при добавлении новых данных или строк ГЛАВНАЯ таблица автоматически обновлялась, если добавляется новый клиент от менеджера, то в ГЛАВНОЙ таблице, должна появиться ранжированная строка с последним порядковым номером.
Т.е. У Васи - это 25 клиент, а в общей базе это 96 клиент... Т.е. Главная таблица при добавлении новой строки в одной из пяти таблиц менеджеров, автоматом добавляла ее и присваивала номер согласно общему списку (последний порядковый) и если Вася меняет какие либо данные в уже имеющихся строках, то в ГЛАВНОЙ таблице это сразу отражалось.
PS Все таблицы пока не имеют данных, и все имеют одинаковое количество и название столбцов и это разные книги (файл у каждого свой)
Может быть вопрос простой, но вероятно, не хватает опыта =))))
Задача стоит такая:
Есть пять менеджеров, каждый ведет свою таблицу клиентов, нужно что бы у начальника отдела была общая сводная таблица со всех пяти, причем, такая, что бы при добавлении новых данных или строк ГЛАВНАЯ таблица автоматически обновлялась, если добавляется новый клиент от менеджера, то в ГЛАВНОЙ таблице, должна появиться ранжированная строка с последним порядковым номером.
Т.е. У Васи - это 25 клиент, а в общей базе это 96 клиент... Т.е. Главная таблица при добавлении новой строки в одной из пяти таблиц менеджеров, автоматом добавляла ее и присваивала номер согласно общему списку (последний порядковый) и если Вася меняет какие либо данные в уже имеющихся строках, то в ГЛАВНОЙ таблице это сразу отражалось.
PS Все таблицы пока не имеют данных, и все имеют одинаковое количество и название столбцов и это разные книги (файл у каждого свой)Гость (TastyCookies)
вектор решения: 1) открывается 1-ый файл (можно сделать без открытия) 2) забирается блок информации из него (копируется, считывается в массив,...) 3) в главном файле определяется первая пустая строка 4) блок информации вставляется в главную книгу 5) закрывается 1-ый файл
6) открывается 2-ой файл...
ps ты менеджер или начальник или ...?
вектор решения: 1) открывается 1-ый файл (можно сделать без открытия) 2) забирается блок информации из него (копируется, считывается в массив,...) 3) в главном файле определяется первая пустая строка 4) блок информации вставляется в главную книгу 5) закрывается 1-ый файл
Дата: Понедельник, 18.07.2011, 13:22 |
Сообщение № 7
Группа: Гости
Я менеджер. начальница попросила реализовать эту табличку ей. Я пошел другим путем. 1. Установил на ГЛАВНОМ файле (книге) связи с листами на каждом менеджерском файле (5 связей соответсвенно) 2. Прописал макрос автообновления связей при открытии ГЛАВНОГО файла (в нем 6 листов, на 5 листах таблицы от каждого менеджера) 3. (как раз думаю как сделать) На шестом листе главного файла нужно просто собрать все данные с пяти других листов и свести их в одну табличку.
Я менеджер. начальница попросила реализовать эту табличку ей. Я пошел другим путем. 1. Установил на ГЛАВНОМ файле (книге) связи с листами на каждом менеджерском файле (5 связей соответсвенно) 2. Прописал макрос автообновления связей при открытии ГЛАВНОГО файла (в нем 6 листов, на 5 листах таблицы от каждого менеджера) 3. (как раз думаю как сделать) На шестом листе главного файла нужно просто собрать все данные с пяти других листов и свести их в одну табличку.Гость (TastyCookies)
Дата: Понедельник, 18.07.2011, 13:40 |
Сообщение № 9
Группа: Гости
соответсвенно, когда я все приведу в рабочее состояние, то я пропишу в адресе не рабочий стол, а место хранения файла в сетевой папке.
соответсвенно, когда я все приведу в рабочее состояние, то я пропишу в адресе не рабочий стол, а место хранения файла в сетевой папке.Гость (TastyCookies)
на главном листе пропиши формулы связи с пятью листами (а можно с оригиналами) с запасом, т.е. с пустыми строками (на будущее) - в сводной пустышки убьешь...
на главном листе пропиши формулы связи с пятью листами (а можно с оригиналами) с запасом, т.е. с пустыми строками (на будущее) - в сводной пустышки убьешь...Саня
Дата: Понедельник, 18.07.2011, 15:07 |
Сообщение № 12
Группа: Гости
Quote (Саня)
на главном листе пропиши формулы связи с пятью листами (а можно с оригиналами) с запасом, т.е. с пустыми строками (на будущее) - в сводной пустышки убьешь...
не совсем понял, каким образом пять таблиц превратятся в одну таблицу, да еще которая обновляться автоматически будет, ранжируя по параметру общий список? (((
Quote (Саня)
на главном листе пропиши формулы связи с пятью листами (а можно с оригиналами) с запасом, т.е. с пустыми строками (на будущее) - в сводной пустышки убьешь...
не совсем понял, каким образом пять таблиц превратятся в одну таблицу, да еще которая обновляться автоматически будет, ранжируя по параметру общий список? (((Гость
Sub Vector() With Sheets(1) Range(.Cells(2, 1), .Cells(Rows.Count, Columns.Count)).ClearContents End With '-------------------------------------------------------------------------
Dim lc As Integer lc = Sheets(2).Cells(1, 1).End(xlToRight).Column
Dim i As Byte For i = 2 To Sheets.Count With Sheets(i) Dim lr_i As Long lr_i = .Cells(1, 1).End(xlDown).Row
Dim rngFrom As Range Set rngFrom = Range(.Cells(2, 1), .Cells(lr_i, lc)) End With
With Sheets(1) Dim lr As Long lr = .Cells(Rows.Count, 1).End(xlUp).Row
Dim rngTo As Range Set rngTo = .Cells(lr + 1, 1).Resize(rngFrom.Rows.Count, rngFrom.Columns.Count) End With
rngTo.Value = rngFrom.Value Next i End Sub
посмотри
Code
Sub Vector() With Sheets(1) Range(.Cells(2, 1), .Cells(Rows.Count, Columns.Count)).ClearContents End With '-------------------------------------------------------------------------
Dim lc As Integer lc = Sheets(2).Cells(1, 1).End(xlToRight).Column
Dim i As Byte For i = 2 To Sheets.Count With Sheets(i) Dim lr_i As Long lr_i = .Cells(1, 1).End(xlDown).Row
Dim rngFrom As Range Set rngFrom = Range(.Cells(2, 1), .Cells(lr_i, lc)) End With
Dim q&, j&, k&, i&, vR, vArr&(), objSheet As Object q = Cells(Rows.Count, 2).End(xlUp).Row + 1 j = q For Each objSheet In Worksheets With objSheet If Not objSheet Is ActiveSheet Then vR = .Range(.[B2], .Cells(.[B2].End(xlDown).Row, 21)).Value Range("B" & q).Resize(UBound(vR, 1), 20) = vR q = q + UBound(vR, 1) End If End With Next ReDim vArr(1 To q - j, 1 To 1) For k = j - 1 To q - 2: i = i + 1: vArr(i, 1) = k: Next Range("A" & j).Resize(UBound(vArr, 1)) = vArr End Sub
Задачу мне помог решить nerv. решили ее так: Все в итоге работает как я хотел! =))))
Dim q&, j&, k&, i&, vR, vArr&(), objSheet As Object q = Cells(Rows.Count, 2).End(xlUp).Row + 1 j = q For Each objSheet In Worksheets With objSheet If Not objSheet Is ActiveSheet Then vR = .Range(.[B2], .Cells(.[B2].End(xlDown).Row, 21)).Value Range("B" & q).Resize(UBound(vR, 1), 20) = vR q = q + UBound(vR, 1) End If End With Next ReDim vArr(1 To q - j, 1 To 1) For k = j - 1 To q - 2: i = i + 1: vArr(i, 1) = k: Next Range("A" & j).Resize(UBound(vArr, 1)) = vArr End SubГость (TastyCookies)