Новости:

Прикрепить к сообщению можно только файлы xls, gif, jpg, rar, zip,7z, bas, frm, cls, doc размером до 150 Кб.

Главное меню

построчное добавление с разных листов на один

Автор missttv, 30.05.2011, 19:06

« назад - далее »

missttv

Подскажите, может была такая тема, но я ее на нашла, уже все перерыла.
Задача в следующем: Книга с общим доступом в ней n-ное количество листов, допустим 10-12 и на них совершенно одинаковые таблицы. Каждый лист ведется отдельным человеком (Ивановым, Петровым, Сидоровым). первый лист это сводная таблица. так вот необходимо, что бы при заполнении кем-либо из сотрудников своей таблицы строка автоматом копировалась в сводную, например при сохранении документа, и так по-порядку.
Заранее спасибо!

Serge 007

Исходник сводной делаете на динамически именованом диапазоне (или на таблице, для хlsx), а на Before Save вешаете обновление:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
PivotTables("Сводная таблица").PivotCache.Refresh
End Sub
   
Имя сводной задайте своё. Или используйте RefreshAll.
Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390

missttv

Цитата: Serge 007 от 30.05.2011, 19:52
Исходник сводной делаете на динамически именованом диапазоне (или на таблице, для хlsx), а на Before Save вешаете обновление:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
PivotTables("Сводная таблица").PivotCache.Refresh
End Sub
   
Имя сводной задайте своё. Или используйте RefreshAll.

я насколько поняла, файл должен быть в формате хlsx, а то такое Before Save  :o

missttv

Выложила пример, так, наверно,  нагляднее будет.
а предыдущий ответ я, к сожилению, блондинка, не поняла, а очень нужно сделать!..  :'(

_Boroda_

А прелестная блондиночка сама свой пример смотрела?
Скажи мне, кудесник, любимец ба'гов...



Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995

missttv

#5
ладно, забыли о примере, но я правда не знаю как сделать то, нужно...

_Boroda_

Цитироватьладно, забыли о примере
Почему забыли? Пример нужен. А у Вас там пустой файл лежит. Я ж писал - посмотрите, что положили. Вы, видимо, просто промахнулись, когда его выкладывали и не тот файл положили.
Давайте попробуем еще разочек.
Вы выложите пример, в котором будут 2 листа для сорудников (допустим, для Петрова и Сидорова) и сводный лист. На листах для сотрудников нужно заполнить данными по 3-4 строки на каждом, а на сводном ручками заполнить так, как Вы хотите, чтобы заполнялось автоматически.
Без этого нам будет сложно Вам помочь. Не совсем ясно, что Вы хотите получить. Например, есть несколько возможных интерпретаций фразы
Цитироватьстрока автоматом копировалась в сводную
Плюс к этому - возможные "радости" несовпадения форматов, взаимного расположения и прочее.  Именно для этого пример и необходим.
Скажи мне, кудесник, любимец ба'гов...



Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995

missttv

не понимаю как я могла выложить пустой файл. ну да ладно...  :-\
суть в том, что файл с общим оступом - это раз, поэтому одновременно информацию могут вносить 3, 5, 10 и т.д. сотрудников.
мне необходимо, в идеале, что бы как только кто-то из них внес информацию на свой лист (к примеру добавил новое предприятие) данная строка автоматом попадала на сводный лист, аналогично по всем сотрудникам. Однако, насколько я понимаю, сделать данное давольно сложно, поэтому мне будет вполне достаточно если информация будет копироваться на сводный лист, допустим, при сохранении.
Так же я вижу следующие сложности выполнения:
1) что-бы информация не дублировалась т.е. если строка один раз была скопирована второй раз ее копировать не нужно
2) если Иванов, Сидоров и т.д. внесет изменения в ранее созданную строку, желательно что бы данные изменения отображались в сводной.
Надеюсь, на этот раз не лохонусь   ::)

missttv


iron priest


missttv

что значит нет примера?  >:( а выше! все там есть!
нашла еще на другом сайте тему http://programmersforum.ru/showthread.php?t=104137 вот если бы обозвать кнопку "обновить"  и что что бы лист "Consolidated" не создавался а был постоянно, а еще при нажатии кнопки "обновить" лист "Consolidated" сначала чистился, потом сводил данные  :) было бы уже классно!

Prist

Посмотрите эту статью. Я там выкладывал макрос, который как раз сбором данных с листов и книг и занимается.
Одно не понимаю: зачем лист не добавлять, а делать постоянным? Чтобы лишний раз жать кнопку Очистить и придти к тому же результату?
В коде по ссылке для добавления данных на фиксированный лист надо заменить строки:
ThisWorkbook.Sheets.Add After:=Sheets(Sheets.Count)
Set wsDataSheet = ThisWorkbook.ActiveSheet

на такую:
Set wsDataSheet = ThisWorkbook.Sheets("Consolidated")
Лист "Consolidated" должен уже существовать в книге.
Чтобы была возможность очистить, сразу после этой строки добавляете такую:
If MsgBox("Очистить итоговый лист перед сбором данных?", vbYesNo, "Запрос подтверждения") = vbYes Then
   wsDataSheet.UsedRange.Clear
End If


И до кучи ссылочка
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
www.excel-vba.ru
Просто СПАСИБО [+оказать+]
Считаешь СПАСИБО мало? Яндекс.Деньги: 41001332272872; WM: R298726502453

missttv

#12
как-то не совсем корректно получилось...
точнее не красиво

Prist

В Вашем конкретном случае можно заменить эту строку:
lLastRowMyBook = wsDataSheet.Cells.SpecialCells(xlLastCell).Row + 1

на такую:
lLastRowMyBook = wsDataSheet.Cells(wsDataSheet.Rows.Count,1).End(xlUp).Row+1

Что зачем и почему именно так, читайте в этой статье.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
www.excel-vba.ru
Просто СПАСИБО [+оказать+]
Считаешь СПАСИБО мало? Яндекс.Деньги: 41001332272872; WM: R298726502453

aristoff

А зачем так круто? Может вот так сойдёт?