Страницы: 1 2 След.
RSS
задача: Свести 5 унифицированных таблиц в одну 6-ю, автообновляющуюся.
 
Может быть вопрос простой, но вероятно, не хватает опыта =))))  
 
Задача стоит такая:  
 
Есть пять менеджеров, каждый ведет свою таблицу клиентов, нужно что бы у начальника отдела была общая сводная таблица со всех пяти, причем, такая, что бы при добавлении новых данных или строк ГЛАВНАЯ таблица автоматически обновлялась, если добавляется новый клиент от менеджера, то в ГЛАВНОЙ таблице, должна появиться ранжированная строка по последним порядковым номером.  
 
Т.е. У Васи - это 25 клиент, а в общей базе это 96 клиент... Т.е. Главная таблица при добавлении новой строки в одной из пяти таблиц менеджеров, автоматом добавляла ее в общую базу и присваивала номер согласно общему списку (последний порядковый) и если Вася меняет какие либо данные в уже имеющихся строках, то в ГЛАВНОЙ таблице это сразу отражалось.    
 
PS Все таблицы пока не имеют данных, и все имеют одинаковое количество и название столбцов
 
Вы бы выложили конкретный пример.
 
{quote}{login=}{date=18.07.2011 11:39}{thema=}{post}Вы бы выложили конкретный пример.{/post}{/quote}  
Так нет пока примера, так как я не могу понять алгоритм решения данной задачи.  
 
1. Если схематично, то в папке отдел продаж у каждого менеджера есть свой файл (книга EXCEL), в который он будет заносить данные о контрагентах в установленной начальником форме (например: 1 столбец - порядковый номер клиента, 2 столбец - наименование клиента, 3 столбец  - телефон клиента)  
 
2. У начальника должен формироваться сводный файл (таблица) с объединенными данными со всех 5-ти таблиц менеджеров. таблица  должна иметь такой же вид как у менеджеров, но что бы данные были от всех. Т.е. у каждого в таблице по 10 клиентов, а шеф видет общую картину в 50 клиентов.    
 
Как то так =))
 
{quote}{login=}{date=18.07.2011 11:39}{thema=}{post}Вы бы выложили конкретный пример.{/post}{/quote}  
И еще она должна быть авто-обновляющаяся . те у начальника автоматически должны обновляться данные если кто то внес изменения из менеджеров, и строк это касается тоже, т.е. если менеджер добавил нового клиента (строку), то эта строка АВТОМАТИЧЕСКИ должна появить в ГЛАВНОЙ таблице. =) ВОТ!
 
Мне тоже Очень интересно какое решение у такой задачи!  
Хотя стандартными средствами, что-то не смого такого сделать...
 
{quote}{login=igorsss}{date=18.07.2011 01:19}{thema=}{post}Мне тоже Очень интересно какое решение у такой задачи!  
Хотя стандартными средствами, что-то не смого такого сделать...{/post}{/quote}  
 
Я сам уже додумался до такого пути :  
1. Установил на ГЛАВНОМ файле (книге) связи с листами на каждом менеджерском файле (5 связей соответсвенно)  
2. Прописал макрос автообновления связей при открытии ГЛАВНОГО файла (в нем 6 листов, на 5 листах таблицы от каждого менеджера)  
3. (как раз думаю как сделать) На шестом листе главного файла нужно просто собрать все данные с пяти других листов и свести их в одну табличку.
 
А для чего каждому менеджеру делать свой файл. Сделайте один файл с общим доступом. И пусть каждый менеджер в него вбивает данные на здоровье.
Редко но метко ...
 
{quote}{login=GIG_ant}{date=18.07.2011 01:55}{thema=}{post}А для чего каждому менеджеру делать свой файл. Сделайте один файл с общим доступом. И пусть каждый менеджер в него вбивает данные на здоровье.{/post}{/quote}  
в общей базе не полные данные будут. (момент конфиденциальности так сказать)
 
http://www.planetaexcel.ru/tip.php?aid=233  
 
Может так попробовать?
 
для многотабличных режимов сбора сведений, я всё больше склоняюсь к использованию Access. Но т.к. в большинстве случаев народ вообще не знает, что это такое и как им пользоваться, а руководство не спишит с выбором данного ПО, то приходиться изобретать велосипед.  
Ship  
сводная табличка это очень хорошо!
 
{quote}{login=igorsss}{date=18.07.2011 02:46}{thema=}{post}для многотабличных режимов сбора сведений, я всё больше склоняюсь к использованию Access. Но т.к. в большинстве случаев народ вообще не знает, что это такое и как им пользоваться, а руководство не спишит с выбором данного ПО, то приходиться изобретать велосипед.  
Ship  
сводная табличка это очень хорошо!{/post}{/quote}  
 
именно - "приходится изобретать велосипед" : )  
 
to TastyCookies  
"3. (как раз думаю как сделать) На шестом листе главного файла нужно просто собрать все данные с пяти других листов и свести их в одну табличку."  
 
макросом
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Самое "критичное" - "и если Вася меняет какие либо данные в уже имеющихся строках, то в ГЛАВНОЙ таблице это сразу отражалось".  
Т.е. нужен общий доступ к общему файлу. Когда новая запись - просто макрос взял строку и перенес в нужное место. А присвоение ID (нумерация) когда вдвоем будут одновременно пытаться внести данные?    
ИМХО все таки это ближе Ассеs...
 
Или у шефа в книге делать кнопку - нажав её в любой момент, он пробежится по книгам всех манагеров и соберёт обновлённые данные в свою книгу.  
 
* он - макрос. Шеф бегать не должен.
 
Сводная таблица не катит, мне ненужно ничего сумировать....  
прилагаю файл макетный, надо что бы на лист "общая" содержал в себе все другие листы (5 менагеров)... Эти пять листов автообновляются макросом из личных файлов менеджеров.    
Уже моцг сломал КАК? =)))))))
 
Акс у нас не куплен, поэтому танцуем с бубном... Выбора, по крайней мере у меня нету. Задача поставлена мне до конца дня, а я вот только это сделал... Хотя бы идеи, дайте, я на все согласен уже =)))) Ахахахаха!
 
Думаю в вашем случае лучше сводную использовать без сумирования... а сотрировать по фио и дате, или дате и фио
 
{quote}{login=igorsss}{date=18.07.2011 05:47}{thema=}{post}Думаю в вашем случае лучше сводную использовать без сумирования... а сотрировать по фио и дате, или дате и фио{/post}{/quote}  
В моем случае нужно что бы общая формировалась автоматически, присваивая каждой новой строке порядковый номер. Как то так... а вот как?
 
при условии, что данные подтягиваются на листы ы этом же файле  
<EM><STRONG>Файл удален</STRONG> - велик размер - [<STRONG>МОДЕРАТОРЫ</STRONG>]</EM>
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Сделай все в одном файле. Для каждого человека отдельный лист и общую форму выбора пользователя (с паролем если нужно:))  
Листы файла подвяжи к выбранному пользователю из формы (остальные будут спрятаны, а у шефа админские права)
 
не вели казнить ^_^
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
При условии, что в разных файлах.  
Если нужно автообновление, правда независимо от изменений в файлах, раскомментируйте эту стоку:  
Application.OnTime Now + TimeValue("00:00:20"), "get_info" данные будут обновляться каждые 20 секунд.
 
У Вас при каждом нажатии кнопки все данные копируются на общий лист, а нужно, чтобы они обновлялись, а не дублировались. То есть, нужно удалять сначала, а потом уже копировать. Ну или другим способом.
 
{quote}{login=Ship}{date=18.07.2011 10:40}{thema=Re: }{post}У Вас при каждом нажатии кнопки все данные копируются на общий лист, а нужно, чтобы они обновлялись, а не дублировались. То есть, нужно удалять сначала, а потом уже копировать. Ну или другим способом.{/post}{/quote}  
 
Писал для Nerv.
 
{quote}{login=sva}{date=18.07.2011 08:58}{thema=}{post}При условии, что в разных файлах.  
Если нужно автообновление, правда независимо от изменений в файлах, раскомментируйте эту стоку:  
Application.OnTime Now + TimeValue("00:00:20"), "get_info" данные будут обновляться каждые 20 секунд.{/post}{/quote}  
 
Не знаю, важно ли это...  
Если открыты к примеру оба файла (и с кнопкой и от куда тянется инфо-и ЭТА КНИГА АКТИВНАЯ), то информация нарастающим итогом тянется с файла с кнопкой. Глюк...
 
Тогда укажем явно в какую книгу следует собирать данные.
 
{quote}{login=Ship}{date=18.07.2011 10:40}{thema=Re: }{post}У Вас при каждом нажатии кнопки все данные копируются на общий лист, а нужно, чтобы они обновлялись, а не дублировались. То есть, нужно удалять сначала, а потом уже копировать. Ну или другим способом.{/post}{/quote}
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
{quote}{login=nerv}{date=19.07.2011 09:26}{thema=}{post}{quote}{login=Ship}{date=18.07.2011 10:40}{thema=Re: }{post}У Вас при каждом нажатии кнопки все данные копируются на общий лист, а нужно, чтобы они обновлялись, а не дублировались. То есть, нужно удалять сначала, а потом уже копировать. Ну или другим способом.{/post}{/quote}{/post}{/quote}  
 
Спасибо огромное задачу решил, все работает. дополнил макрос на нажатие очисткой таблицы, и авто обновлением связей. И теперь все так как хотелось!  
нерву ОГРОМНОЕ СПАСИБО! Как всегда решение было нетривиальным, но простым и понятным! =)))))
 
Забыл залогиниться!  
еще раз огромное спасибо Нерву!  
Все работает, все счастливы! =)))))  
я немного изменил макрос нажатия кнопки, привел его в такой вид:  
'=========================================================  
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
 
Пожалуйста. Если вы скачаете последний файл, кот. я выкладывал, то обнаружите там эту строку  
 
Range([A2], Cells([B2].End(xlDown).Row, 21)).ClearContents.
 
Собственно вот этой акробатикой  
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  
можно тоже не заниматься, а использовать прогрессию.  
 
Private Sub CommandButton1_Click()  
Dim q&, vR, objSheet As Object  
ActiveWorkbook.RefreshAll  
Range([A2], Cells([B2].End(xlDown).Row, 21)).ClearContents
q = 2: [A2] = 1
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  
Range([A2], Cells(q - 1, 1)).DataSeries Rowcol:=xlColumns, Type:=xlLinear, Step:=1
End Sub
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
{quote}{login=nerv}{date=19.07.2011 12:57}{thema=}{post}  
           Range("B" & q).Resize(UBound(vR, 1), 20) = vR  
End Sub{/post}{/quote}  
 
Почемуто стал ругаться на эту строку....    
ВСе так же осталось вроде, просто очистил таблицы... и такое вот стало
Страницы: 1 2 След.
Читают тему
Loading...