Модераторы: mihanik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Группы строк в Эксэле, Получить коллекцию групп 
:(
    Опции темы
Kaboom
Дата 2.5.2009, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 25.5.2007

Репутация: нет
Всего: нет



Еслть ли в Эксэле коллекция группированых строк? Посредсвом записи макроса выяснил как добавить группу:
Код

Rows.Group();

Тепер нужно эти группы считывать. Имеется файл с иерархическими группами (прайс товаров), нужно этот файл считывать и в соответствии с иерархией записывать товары во внешнем формате. Никак не могу найти как определить к какой группе принадлежит строка файла. 

Это сообщение отредактировал(а) Kaboom - 2.5.2009, 15:09
PM MAIL   Вверх
FINANSIST
Дата 3.5.2009, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Статус: Жив
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 11.4.2008
Где: Москва

Репутация: 13
Всего: 23



Kaboom, Я  даже работая в Экселе, стараюсь не забывать про первую нормальную форму  правил нормализации данных. 
Конкретно в твоём примере для корректного формирования структуры прайса или не важно чего ещё не забывай про вертикальную атомарность объекта (то бишь записи). Это значит что если запись предполагает иерархическую группировку (не важно скольких уровней) она должна обязательно иметь данные по всем аналитикам структуры. То есть никаких объединённых ячеек в поле группы на две и более номенклатуры!
На примере группировки год-месяц это должно выглядеть так
user posted image
При такой структуре у тебя появится возможность не только програмного создания группировок(что очень удобно), но и возможность работы таких функций как ВПР, ГПР, СУММЕСЛИ, СЧЁТЕСЛИ  и тд по сложным ключам "....сцепить(уровень1;......УровеньN)....."
Кстати и функционал сводных таблиц при такой структуре появится.
А для конечных пользователей специально отмеченный красным шрифт я просто програмно крашу белым

Добавлено @ 15:58
На случай если прайсов у тебя миллион и переделывать их по каким то причинам тебе ну никак не хочется, советую для получения в код значениения родителя (или родителей, т.к. ты не указал - тебе только 1 группу иерархией выше надо получить или всю ветку группировок каждой номенклатуры) пользоваться пустыми ячейками аналитик, то есть задекларировать в коде несколько текстовых переменных, которые будут держать в памяти последнее значение непустой ячейки группы, и обновлять эти значения при появлении новых непустых ячеек структурных аналитик.
Это конечно приемлемо если у тебя примерно такая структура
user posted image
Ну а если такая
user posted image
То та же работа с переменными, но перезапись по признаку пустой ячейки с цифровыми данными (в прайсе - она скорее всего будет в поле "Цена")
Код

 if isempty(activecell.offset(0,n).value) then
let strgrup = activecell.offset(0,n).value
end if

Как то так.




Это сообщение отредактировал(а) FINANSIST - 3.5.2009, 16:20


--------------------
“...Брали корову рыжую одну, отдавать будем корову рыжую одну, чтобы не нарушать отчетности”
Эдуард Успенский, “Каникулы в Простоквашино”
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.0566 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.