Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.01.2010, 01:34   #1
soulfree
 
Регистрация: 27.01.2010
Сообщений: 4
Восклицание генерация таблицы фильтром, перенос данных в исходную

коллеги, как можно решить такую задачку:

1. макрос генерящий по фильтру (в частности по фамилии) таблицу
2. после того как человек заполнит графу, данные макросом нужно перенести обратно, в исходную табличку опираясь на номер nom и его фамилию

табличка и пример в аттаче

http://cgvfx.ru/tab.xlsx

Последний раз редактировалось soulfree; 27.01.2010 в 01:35. Причина: не пойму, как аттачить
soulfree вне форума Ответить с цитированием
Старый 27.01.2010, 01:56   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

А зачем тут все эти макросы и переносы таблиц?

Мешаются строки, не относящиеся к Иванову? Так скройте их автофильтром (одно нажатие кнопки)
EducatedFool вне форума Ответить с цитированием
Старый 27.01.2010, 18:21   #3
soulfree
 
Регистрация: 27.01.2010
Сообщений: 4
По умолчанию

цель:
каждый участник видит только ту область таблицы, к которой он принадлежит. т.е. не видит данные остальных
soulfree вне форума Ответить с цитированием
Старый 27.01.2010, 18:31   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Цитата:
каждый участник видит только ту область таблицы, к которой он принадлежит
То же самое решение + защита листа макросом.

Запишите действия макрорекордером - получите готовый макрос из 2 строк:

Код:
Sub ПоставитьЗащиту()
    On Error Resume Next
    [a1].AutoFilter Field:=2, Criteria1:="иванов"
    ActiveSheet.Protect "МойПароль"
End Sub

Sub СнятьЗащиту()
    On Error Resume Next
    ActiveSheet.Unprotect "МойПароль"
    ActiveSheet.AutoFilterMode = False
End Sub
Пример файла:

EducatedFool вне форума Ответить с цитированием
Старый 28.01.2010, 16:44   #5
soulfree
 
Регистрация: 27.01.2010
Сообщений: 4
По умолчанию

идея хорошая,
но в этом случае excel не знает, кто редактирует таблицу, ее придется привести в определенный вид и выдать путь к ней исполнителю.

а как быть с остальными, и с их данными.
в конечном итоге должна быть единая таблица с данными всех участников с их индивидуальными ограничениями на редактирование и просмотр.
soulfree вне форума Ответить с цитированием
Старый 28.01.2010, 17:27   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Цитата:
идея хорошая,
но в этом случае excel не знает, кто редактирует таблицу
А как же тогда Вы планировали осуществить это:
Цитата:
как можно решить такую задачку:

1. макрос генерящий по фильтру (в частности по фамилии) таблицу
Если макрос сможет как-то распознать, кто из сотрудников работает с файлом - тогда и мой вариант подойдёт (с небольшими переделками)

Если фамилию пользователя никак не узнать - то макросы тут бессильны.
EducatedFool вне форума Ответить с цитированием
Старый 28.01.2010, 18:07   #7
soulfree
 
Регистрация: 27.01.2010
Сообщений: 4
По умолчанию

очень просто.

1.табличку иванову готовлю я,например в сводной табличке фильтрую иванова по его фамилии, прячу не нужные столбцы и экспортирую при помощи макроса.

2. иванов вносит данные

3. далее, кнопкой импорта ранее экспортированный фрагмент таблицы с редакцией иванова дополняется в основную - сводную таблицу.
soulfree вне форума Ответить с цитированием
Старый 28.01.2010, 18:19   #8
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Теперь понял, что требуется.
Код писать не буду (по крайней мере, бесплатно), но объяснить постараюсь.

Для начала, надо определиться с тем, в каком виде будет возвращаться файл от Иванова
(я так понял, вы макросом намерены экспортировать ОДИН лист в файл XLS)

Если от Иванова вернется книга с тем же листом, и на листе будет сохранена структура данных, то все просто:

1) Отображаем диалоговое окно выбора файла
2) Открываем выбранный файл, и на 1-м листе в цикле перебираем все заполненные строки
3) Для каждой строки ищем подходящую в сводной таблице (сравнивая значения в столбцах 1 и 2), и если значения совпадают (такая строка нашлась в сводной), копируем поверх неё данные из файла Иванова.

Чтобы не усложнять код, я бы рекомендовал в макрос экспорта добавить опцию установки защиты на лист - не на все ячейки, а только на первых 2 столбца.

Если номера в столбце 1 будут уникальными
(Вы не будете восстанавливать нумерацию на листе перед отправкой выборки Иванову, т.е. в файле Иванова останется нумерация типа 1,2,3,5,6,7,16,...)
то макрос импорта упрощается - достаточно будет сравнивать только значения в столбце 1. (точнее, не сравнивать - это медленно работает, а искать через Find)
EducatedFool вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выборка строк с определенной меткой из одной таблицы и автоматический перенос в новую таблицу. dk01 Microsoft Office Excel 28 30.01.2011 18:16
авт. перенос данных из нескольких столбцов одной таблицы в один столбец другой таблицы A_ALL Microsoft Office Access 7 24.08.2009 21:13
сортировка данных (пересчет возможных вариантов комбинаций, перенос данных в таблицу) Vitalik85 Microsoft Office Excel 4 12.08.2009 00:30
Копирование данных при работе с фильтром knahrn Microsoft Office Excel 5 08.05.2009 13:22
перенос данных из таблицы 1 в таблицу 2 AndreyZeus Microsoft Office Excel 1 20.03.2009 16:02