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

Вход

Регистрация

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

 

= Мир MS Excel/нужно свести 5 эдентичных таблиц в одну 6-ю - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
нужно свести 5 эдентичных таблиц в одну 6-ю
Гость (TastyCookies) Дата: Понедельник, 18.07.2011, 11:49 | Сообщение № 1
Группа: Гости
Может быть вопрос простой, но вероятно, не хватает опыта =))))

Задача стоит такая:

Есть пять менеджеров, каждый ведет свою таблицу клиентов, нужно что бы у начальника отдела была общая сводная таблица со всех пяти, причем, такая, что бы при добавлении новых данных или строк ГЛАВНАЯ таблица автоматически обновлялась, если добавляется новый клиент от менеджера, то в ГЛАВНОЙ таблице, должна появиться ранжированная строка с последним порядковым номером.

Т.е. У Васи - это 25 клиент, а в общей базе это 96 клиент... Т.е. Главная таблица при добавлении новой строки в одной из пяти таблиц менеджеров, автоматом добавляла ее и присваивала номер согласно общему списку (последний порядковый) и если Вася меняет какие либо данные в уже имеющихся строках, то в ГЛАВНОЙ таблице это сразу отражалось.

PS Все таблицы пока не имеют данных, и все имеют одинаковое количество и название столбцов и это разные книги (файл у каждого свой)
 
Ответить
СообщениеМожет быть вопрос простой, но вероятно, не хватает опыта =))))

Задача стоит такая:

Есть пять менеджеров, каждый ведет свою таблицу клиентов, нужно что бы у начальника отдела была общая сводная таблица со всех пяти, причем, такая, что бы при добавлении новых данных или строк ГЛАВНАЯ таблица автоматически обновлялась, если добавляется новый клиент от менеджера, то в ГЛАВНОЙ таблице, должна появиться ранжированная строка с последним порядковым номером.

Т.е. У Васи - это 25 клиент, а в общей базе это 96 клиент... Т.е. Главная таблица при добавлении новой строки в одной из пяти таблиц менеджеров, автоматом добавляла ее и присваивала номер согласно общему списку (последний порядковый) и если Вася меняет какие либо данные в уже имеющихся строках, то в ГЛАВНОЙ таблице это сразу отражалось.

PS Все таблицы пока не имеют данных, и все имеют одинаковое количество и название столбцов и это разные книги (файл у каждого свой)

Автор - Гость (TastyCookies)
Дата добавления - 18.07.2011 в 11:49
Serge_007 Дата: Понедельник, 18.07.2011, 12:08 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Видел Ваш вопрос на паре форумов...
Можно сделать - лучше макросами.


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеВидел Ваш вопрос на паре форумов...
Можно сделать - лучше макросами.

Автор - Serge_007
Дата добавления - 18.07.2011 в 12:08
Гость (TastyCookies) Дата: Понедельник, 18.07.2011, 12:23 | Сообщение № 3
Группа: Гости
этот момент мне интуитивно понятен, мне не понятен вектор решения =)))) Понять бы алгоритм решения.
 
Ответить
Сообщениеэтот момент мне интуитивно понятен, мне не понятен вектор решения =)))) Понять бы алгоритм решения.

Автор - Гость (TastyCookies)
Дата добавления - 18.07.2011 в 12:23
Serge_007 Дата: Понедельник, 18.07.2011, 12:26 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Алгоритм прост - при изменении на любом из листов добавляем данные в кэш, и из него строим сводную.


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеАлгоритм прост - при изменении на любом из листов добавляем данные в кэш, и из него строим сводную.

Автор - Serge_007
Дата добавления - 18.07.2011 в 12:26
Саня Дата: Понедельник, 18.07.2011, 12:32 | Сообщение № 5
Группа: Друзья
Ранг: Ветеран
Сообщений: 1068
Репутация: 560 ±
Замечаний: 0% ±

XL 2016
вектор решения:
1) открывается 1-ый файл (можно сделать без открытия)
2) забирается блок информации из него (копируется, считывается в массив,...)
3) в главном файле определяется первая пустая строка
4) блок информации вставляется в главную книгу
5) закрывается 1-ый файл

6) открывается 2-ой файл...

ps
ты менеджер или начальник или ...?
 
Ответить
Сообщениевектор решения:
1) открывается 1-ый файл (можно сделать без открытия)
2) забирается блок информации из него (копируется, считывается в массив,...)
3) в главном файле определяется первая пустая строка
4) блок информации вставляется в главную книгу
5) закрывается 1-ый файл

6) открывается 2-ой файл...

ps
ты менеджер или начальник или ...?

Автор - Саня
Дата добавления - 18.07.2011 в 12:32
Serge_007 Дата: Понедельник, 18.07.2011, 12:36 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Quote (Саня)
ты менеджер или начальник?

Саня, менеджер может быть как начальником (Топ-менеджер), так и исполнителем (Менеджер по уборке территории).
wink


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Quote (Саня)
ты менеджер или начальник?

Саня, менеджер может быть как начальником (Топ-менеджер), так и исполнителем (Менеджер по уборке территории).
wink

Автор - Serge_007
Дата добавления - 18.07.2011 в 12:36
Гость (TastyCookies) Дата: Понедельник, 18.07.2011, 13:22 | Сообщение № 7
Группа: Гости
Я менеджер. начальница попросила реализовать эту табличку ей.
Я пошел другим путем.
1. Установил на ГЛАВНОМ файле (книге) связи с листами на каждом менеджерском файле (5 связей соответсвенно)
2. Прописал макрос автообновления связей при открытии ГЛАВНОГО файла (в нем 6 листов, на 5 листах таблицы от каждого менеджера)
3. (как раз думаю как сделать) На шестом листе главного файла нужно просто собрать все данные с пяти других листов и свести их в одну табличку.
 
Ответить
СообщениеЯ менеджер. начальница попросила реализовать эту табличку ей.
Я пошел другим путем.
1. Установил на ГЛАВНОМ файле (книге) связи с листами на каждом менеджерском файле (5 связей соответсвенно)
2. Прописал макрос автообновления связей при открытии ГЛАВНОГО файла (в нем 6 листов, на 5 листах таблицы от каждого менеджера)
3. (как раз думаю как сделать) На шестом листе главного файла нужно просто собрать все данные с пяти других листов и свести их в одну табличку.

Автор - Гость (TastyCookies)
Дата добавления - 18.07.2011 в 13:22
Саня Дата: Понедельник, 18.07.2011, 13:29 | Сообщение № 8
Группа: Друзья
Ранг: Ветеран
Сообщений: 1068
Репутация: 560 ±
Замечаний: 0% ±

XL 2016
цикл не по файлам (см. выше), а по листам.
Quote (Гость (TastyCookies))
2. Прописал макрос автообновления связей при открытии ГЛАВНОГО файла (в нем 6 листов, на 5 листах таблицы от каждого менеджера)

можно поинтересоваться - что это за макрос?
 
Ответить
Сообщениецикл не по файлам (см. выше), а по листам.
Quote (Гость (TastyCookies))
2. Прописал макрос автообновления связей при открытии ГЛАВНОГО файла (в нем 6 листов, на 5 листах таблицы от каждого менеджера)

можно поинтересоваться - что это за макрос?

Автор - Саня
Дата добавления - 18.07.2011 в 13:29
Гость (TastyCookies) Дата: Понедельник, 18.07.2011, 13:40 | Сообщение № 9
Группа: Гости
соответсвенно, когда я все приведу в рабочее состояние, то я пропишу в адресе не рабочий стол, а место хранения файла в сетевой папке.
 
Ответить
Сообщениесоответсвенно, когда я все приведу в рабочее состояние, то я пропишу в адресе не рабочий стол, а место хранения файла в сетевой папке.

Автор - Гость (TastyCookies)
Дата добавления - 18.07.2011 в 13:40
Гость (TastyCookies) Дата: Понедельник, 18.07.2011, 13:44 | Сообщение № 10
Группа: Гости
ChDir "C:\Users\бла-бла\Desktop"
Workbooks.Open Filename:="C:\Users\бла-бла\Desktop\общаябаза.xlsx"
ActiveWorkbook.RefreshAll
Sheets("лист1").Select
 
Ответить
СообщениеChDir "C:\Users\бла-бла\Desktop"
Workbooks.Open Filename:="C:\Users\бла-бла\Desktop\общаябаза.xlsx"
ActiveWorkbook.RefreshAll
Sheets("лист1").Select

Автор - Гость (TastyCookies)
Дата добавления - 18.07.2011 в 13:44
Саня Дата: Понедельник, 18.07.2011, 14:10 | Сообщение № 11
Группа: Друзья
Ранг: Ветеран
Сообщений: 1068
Репутация: 560 ±
Замечаний: 0% ±

XL 2016
на главном листе пропиши формулы связи с пятью листами (а можно с оригиналами) с запасом, т.е. с пустыми строками (на будущее) - в сводной пустышки убьешь...
 
Ответить
Сообщениена главном листе пропиши формулы связи с пятью листами (а можно с оригиналами) с запасом, т.е. с пустыми строками (на будущее) - в сводной пустышки убьешь...

Автор - Саня
Дата добавления - 18.07.2011 в 14:10
Гость Дата: Понедельник, 18.07.2011, 15:07 | Сообщение № 12
Группа: Гости
Quote (Саня)
на главном листе пропиши формулы связи с пятью листами (а можно с оригиналами) с запасом, т.е. с пустыми строками (на будущее) - в сводной пустышки убьешь...

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

не совсем понял, каким образом пять таблиц превратятся в одну таблицу, да еще которая обновляться автоматически будет, ранжируя по параметру общий список? (((

Автор - Гость
Дата добавления - 18.07.2011 в 15:07
Саня Дата: Понедельник, 18.07.2011, 15:20 | Сообщение № 13
Группа: Друзья
Ранг: Ветеран
Сообщений: 1068
Репутация: 560 ±
Замечаний: 0% ±

XL 2016
вот так:
К сообщению приложен файл: 8885075.xls (40.0 Kb)
 
Ответить
Сообщениевот так:

Автор - Саня
Дата добавления - 18.07.2011 в 15:20
Гость Дата: Понедельник, 18.07.2011, 16:40 | Сообщение № 14
Группа: Гости
http://www.sendspace.com/file/iwh52x
у меня такие строчки ... там ненужно суммировать =))
 
Ответить
Сообщениеhttp://www.sendspace.com/file/iwh52x
у меня такие строчки ... там ненужно суммировать =))

Автор - Гость
Дата добавления - 18.07.2011 в 16:40
Саня Дата: Понедельник, 18.07.2011, 18:07 | Сообщение № 15
Группа: Друзья
Ранг: Ветеран
Сообщений: 1068
Репутация: 560 ±
Замечаний: 0% ±

XL 2016
посмотри

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

         '----------------------------------------------------

         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
К сообщению приложен файл: 00__test.rar (45.7 Kb)
 
Ответить
Сообщениепосмотри

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

         '----------------------------------------------------

         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

Автор - Саня
Дата добавления - 18.07.2011 в 18:07
Гость (TastyCookies) Дата: Вторник, 19.07.2011, 11:28 | Сообщение № 16
Группа: Гости
Задачу мне помог решить nerv. решили ее так:
Все в итоге работает как я хотел! =))))

Private Sub CommandButton1_Click()
ActiveWorkbook.RefreshAll
Range("A2").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
Range("A2").Select

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. решили ее так:
Все в итоге работает как я хотел! =))))

Private Sub CommandButton1_Click()
ActiveWorkbook.RefreshAll
Range("A2").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
Range("A2").Select

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)
Дата добавления - 19.07.2011 в 11:28
  • Страница 1 из 1
  • 1
Поиск:

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