|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
05.06.2012, 19:54 | #1 |
Новичок
Джуниор
Регистрация: 05.06.2012
Сообщений: 2
|
Изменение первой таблицы на основе данных второй
Доброго дня!
Внезапно объявилась некоторая проблема, которую своими силами на данный момент решить не получается. Есть некоторая таблица-носитель, 15-20 столбцов, большое количество строк. Первый столбец - ключ, по своей сути идентификатор/артикул, возможность повторов в строках исключена, все остальные могут быть и пустыми, и повторяться. С этой таблицей взаимодействуют несколько людей, основные три группы: 1. Из одного человека, таблицу-носитель редактирует только он (на основе деятельности других групп + свои изменения); 2. Больше, чем один. Единовременно работают с копиями таблицы-носителя, добавляя в неё (в разные её части) новые строки. Каждый работает в своём диапазоне идентификаторов (первый столбец), пересечения между ними исключены; 3. Много больше, чем один. Единовременно работают с копиями таблицы-носителя, изменяя существующие данные (под редакцию могут попасть все строки кроме шапки, все столбцы кроме первого (идентификатора). В конце определенного периода результат работы второй и третьей групп передается в первую, задача первой - найти и добавить все новые строки от второй группы, также найти и добавить/изменить данные в строках от третьей группы; то есть по сути собрать все данные воедино, исключив повторы. Пока таблица была небольшой - справлялись кустарными методами: выделениями, формулами, отчетами, сносками. Сейчас она разрослась очень сильно и кустарные методы не то, что отнимают много времени, а просто не справляются с количеством данных. То есть для решения этих задач нужно 2 макроса: 1. Сравнивающий таблицу-носитель и её копию, сопоставляющий их строки по первому столбцу (ключу) и добавляющий только новые строки из второй таблицы в первую. Этот макрос я нашел, пошуршав форум, огромное спасибо создателю: PHP код:
2. Сравнивающий таблицу-носитель и её копию, сопоставляющий данные во всех ячейках двух таблиц по первому столбцу (ключу) и добавляющий/изменяющий данные из ячеек второй таблицы в ячейки первой (носителя). С этим возникли проблемы, своей головы не хватает, поиск пока что тоже не помог. Буду благодарен любым советам, может быть потом кому тоже пригодится. |
06.06.2012, 10:52 | #2 |
Старожил
Регистрация: 02.05.2009
Сообщений: 3,907
|
Идеи есть,проверить нет возможности в связи с наличием отсутствия файла.
Анализ,обработка данных Недорого
|
06.06.2012, 21:16 | #3 |
Новичок
Джуниор
Регистрация: 05.06.2012
Сообщений: 2
|
Виноват, мой косяк.
Во вложении книга на 3 листа, 1 - носитель, 2 - пример работы второй группы, 3 - пример работы третьей группы. Второй лист по сути и не нужен, вопрос решен уже, но в описании присутствует, пусть будет и в книге вместе с работающим макросом. Изменения между 1 и 2 листами - во второй появились новые записи. Изменения между 1 и 3 листами - в третьем некоторые ячейки некоторых строк изменились, эти изменения и нужно перенести в 1 таблицу. Учитывая что количество таких изменений от каждого человека исчисляется сотнями, то ручная (или полуавтоматическая) обработка несколько утомляет. Нашел немного корявый вариант - добавлять весь 3 лист в 1 лист, а затем удалять повторы по ключу. Как временное решение вариант, но в любом случае буду дальше ковырять. PHP код:
upd: хотя скрипт в этом посте немного косячный, он либо сносит шапку (если в первом столбце первой строки не цифры), либо отжирает одну из нужных строчек (если в первом столбце первой строки стоит числовое значение). upd2: совершенно случайно в 2010 офисе наткнулся на функцию удаления дубликатов, забавно И ведь работает! Последний раз редактировалось paaa; 06.06.2012 в 22:37. |
07.06.2012, 02:21 | #4 |
Старожил
Регистрация: 02.05.2009
Сообщений: 3,907
|
Например так
Шик отменяется.
Анализ,обработка данных Недорого
Последний раз редактировалось doober; 07.06.2012 в 12:13. |
21.09.2012, 11:10 | #5 |
Форумчанин
Регистрация: 16.04.2010
Сообщений: 695
|
doober, подскажите пожалуйста как вы сделали такую панель инструментов?
Как добавить подпункты в панель макросом я знаю, как сделать такую панель да еще и открывается без макросов... Как???
Единственный способ стать умнее, играть с более умным противником...
Последний раз редактировалось staniiislav; 21.09.2012 в 11:18. |
21.09.2012, 11:25 | #6 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Аналогичная задача, код без файла (т.е. для любых экселей ):
http://forum.ixbt.com/topic.cgi?id=23:32362-47#1347 Да и думаю попроще - там алгоритм прозрачный, анализ изменений только чуть накручен - но тут похоже изменения анализировать не нужно, т.е. эту часть можно убрать.
webmoney: E265281470651 Z422237915069 R418926282008
Последний раз редактировалось Hugo121; 21.09.2012 в 11:28. |
21.09.2012, 11:31 | #7 | |
Форумчанин
Регистрация: 16.04.2010
Сообщений: 695
|
Цитата:
Единственный способ стать умнее, играть с более умным противником...
|
|
21.09.2012, 11:36 | #8 | |
Форумчанин
Регистрация: 16.04.2010
Сообщений: 695
|
Цитата:
Интересует панель инструментов в примере doober (пример называется тест.xlms)
Единственный способ стать умнее, играть с более умным противником...
|
|
21.09.2012, 11:36 | #9 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
У меня на работе нет 2007, так что не могу оценить всю прелесть решения
Но хотел спросить с практической стороны - Сергей, эти кнопки/код на панель рисуете индивидуально, или используете уже заранее заготовленный шаблон? Мне кажется - делать индивидуально хлопотно, я пока даже не брался... да мне самому никуда и не нужно.
webmoney: E265281470651 Z422237915069 R418926282008
|
21.09.2012, 13:37 | #10 |
Старожил
Регистрация: 02.05.2009
Сообщений: 3,907
|
Первоисточник для меня ЗДЕСЬ
Плюс нухна программа RibbonXMLEditor Поверте,это не постое дело Пример одной надстройки,она создавалась в течении 2 месяцев,по мере поступления добавлений в техзадание staniiislav,если у вас есть скайп,свяжитесь,мне легче показать весь процесс,чем описать http://film1.pochta.ru/1060.jpg
Анализ,обработка данных Недорого
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вытащить данные с второй таблицы если в первой таблице в колонке X значение равно пустой строке | Vistar | SQL, базы данных | 3 | 14.10.2011 00:48 |
Запуск второй формы с деактивацией первой | Byurrer | Общие вопросы C/C++ | 2 | 18.04.2011 20:40 |
Выполнить метод первой формы во второй | maryan.vetrov | C# (си шарп) | 13 | 18.02.2011 02:37 |
Формирование таблицы на основе данных с другого листа | Машуля | Microsoft Office Excel | 15 | 10.03.2010 20:38 |
Создание новой таблицы на основе данных | koda | Microsoft Office Excel | 2 | 06.08.2008 18:53 |