Страницы: 1
RSS
Как организовать экспорт из сводной средствами vba
 
Добрый день
Вопрос вот в чем:
В сводную каждый час пишутся данные с кучи приборов на предприятии.
Структура сводной: каждая строчка соответствует какому-либо прибору. В строке данные за каждый час, в конце суток сумма за сутки и среднее за сутки, в конце месяца, квартала или года такие же данные соответственно за месяц, квартал, год.
Необходимо среднее за прошедшие сутки экспортировать, желательно в другой файл, но пойдет и на соседний лист.
К исходным данным доступа нет
Прошу прощения за сумбур, не силен в терминологии и не сталкивался со сводными пока они не появились у нас на предприятии.
Пример к сожалению дать не могу, нахожусь на работе. Через несколько дней попытаюсь дома сделать что-нибудь похожее, но маленькое.
Заранее благодарен всем откликнувшимся.
Изменено: VideoAlex - 12.11.2013 12:42:21
 
неужели никто не знает?
 
Цитата
неужели никто не знает?
После того как -
Цитата
Через несколько дней попытаюсь
... ;)
ps Возьмите на заметку - http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=list&FID=7
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
Цитата
Пример... дать не могу, нахожусь на работе. Через несколько дней попытаюсь дома сделать ...
Цитата
неужели никто не знает?
Чего, простите, не знает?
Я сам - дурнее всякого примера! ...
 
неужели никто не знает ... и далее смотрим название темы где жирненьким шрифтом написано: "как организовать экспорт из сводной средствами ВБА"
Я понимаю что тут очень много жутко занятых и страшно ироничных людей, сам такой же, но, перечитывая свой малость сумбурный первый пост и принимая во внимание название темы, снова и снова убеждаюсь, что проблема описана доступным для понимания языком и, по сути, умещается в те самые 7 слов из названия темы. Мне совсем не верится, что мой пример даст толчок для понимания проблемы. Ведь, на самом деле, ни структура сводной, ни данные которые в ней содержатся ничего не меняют. Тем не менее, побывав на многих форумах, предвидел тучу вопросов одного и того же типа - "А где же пример?", от всё одного и того же для всех форумов типа людей и, дабы исключить не нужную писанину в теме, заранее написал, что пример будет позже. Последующее же моё сообщение не содержит никакой смысловой нагрузки и предназначено для, так называемого, АПа темы.
Тем не менее, спасибо за внимание к теме. Если пример всё же важен, то постараюсь дома выложить и до этого времени не поднимать зря тему.
Всем прекрасного воскресного вечера, друзья!

П.С. Зэт, спасибо за ссылку, но я не собираюсь платить за это. В конце концов, рано или поздно, когда-нибудь может быть, приедет та же подрядная организация и переделает всё сама. Я впервые столкнулся со сводной таблицей, мне она понравилась, я захотел в ней разобраться. Вот и всё :)
Изменено: VideoAlex - 10.11.2013 14:54:54
 
Ну напишут Вам сейчас макрос, так Вы скажете, например, - а у меня данные не в тех столбцах, и результат нужно выводить не сюда, или ещё что-то не так. И придётся ведь переделывать... Поэтому лучше Ваш небольшой файл-пример и желаемый результат.
Цитата
Я понимаю что тут очень много жутко занятых и страшно ироничных людей
Между прочим, эти жутко занятые и ироничные, оказали помощь очень большому количеству людей, которые ценят время помогающих.
 
Вы сначала сообщили, что покажете пример, потом появилось сообщение, но без примера. И все иронично настроенные должны были сразу догадаться, что это просто "up"?
По поводу примера: Вы всерьез полагаете, что ответ для Вас нужно показывать в файле помогающего? Ведь не всегда можно написать код без хоть каких-то данных на листе.
Вы в правила форума заглядывали перед тем, как создать тему?
 
Цитата
Если пример всё же важен, то постараюсь дома выложить ...
Какая самоотверженность! Да не утруждайте себя, ради Бога. Поберегите себя для потомков. Ща я мухой и пример за Вас сварганю и решение в нем приложу. И счастливый, буду надеяться, что угодил Вам. И данные такие же, и расположены так же и попадут туда, куда надо и в нужном виде.
Я сам - дурнее всякого примера! ...
 
Ваши претензии ясны. Спасибо.
Юрий, макрос записать я сам попробовал первым делом. Естественно его придется переделывать. Дело в том, и вы это я уверен прекрасно понимаете, что записаный макрос при экспорте не обращается к сводной как то по особенному, а ведет себя с ней как с обычной кучей ячеек. Если мне напишут макрос который будет обращаться к таблице по названию строки и названию столбца в сводной, то этого мне будет достаточно. Я не жду готового решения, мне интересно понять. Такой макрос продвинет меня на пути понимания обращения со сводными таблицами. Ну а на счёт жутко занятых и страшно ироничных могу сказать что сразу написал что и сам такой же. И кстати сам помог многим людям, правда на форумах по видеосъемке и обработке видео. :P
vikttur, ок. ваши претензии тоже ясны и обоснованы. спасибо за внимание к теме. постараюсь исправиться и как можно быстрее выложить пример. В правила заглядывал но очень давно  :)  
В дальнейшем всех желающих меня попинать приглашаю в личку дабы тема не превратилась в пустой трёп.

Ну и еще раз всем хорошего настроения!


ПС KuklP, ваш сарказм и ваш тон совсем не уместен и продиктован возможно плохим настроением. Нигде в моем тексте я не требую ни от кого, а тем более лично от вас, того о чём вы пишите. Сбавьте обороты.
Изменено: VideoAlex - 10.11.2013 15:28:53 (пока писал появилось еще одно сообщение)
 
А вот наконец-то пример. Вахта закончилась приехал домой и слепил
 
Данные в таблице только за одни сутки будут или надо выбирать за последние?
И обязательно ли нужна сводная, что бы потом из неё выбирать?
Уверен, что можно сделать просто формулами.
Я бы для такого написал свою ЮДФ.
Или даже макросом. (недолюбливаю сводные и формулы)
 
Дело в том что сводная уже есть, а к исходным данным доступа нет.
Данные... ну к примеру надо смотреть в ячейку где написана дата, данные за которую надо экспортировать. Данные в сводной каждый час добавляются.
Изменено: VideoAlex - 12.11.2013 13:58:05
 
может как раз формулами? получить.данные.своднойютаблицы()
Живи и дай жить..
 
получить данные сводной таблицы работает только в том случае если фильтр развернут. надо тогда его как-то программно разворачивать.
сводных у меня в документе по две штучки на листе. листов около 30-ти. в каждой сводной от 10 до 30 строк. данные добавляются каждый час. с ужасом представляю себе сколько данных будет через год. более 10-ти миллионов значений.
Изменено: VideoAlex - 12.11.2013 16:15:19
 
А макрорекордер это не пишет? Я не знаю - потому и спрашиваю.
 
макрорекордер пишет, но обращается к ячейке, как к обычной ячейке, а не как к части таблицы. через час это будет уже другая ячейка. кроме того получить.данные.сводной.таблицы не тащит данные из полей промежуточных итогов фильтра (необходимое мне среднее за день) поэтому придётся собирать все значения за день и высчитывать среднее самому.
 
Вы спрашивали про программное снятие фильтра - вопрос про макрорекордер об этом же.
 
ясно. не понял. макрорекордером проще снять фильтр через срез таблицы. надеюсь понятно выразился.
фильтруется только нужный день. затем перебором по области искать столбец со средними и от него плясать.
Пока так вижу решение. но геморно выходит. Там подводных камней тьма помоему.
Изменено: VideoAlex - 12.11.2013 16:32:11
 
макрорекордер накатал гигантский код просто на фильтрацию нужного дня. 365 дней по очереди false и один true. Интересно можно ли одной строчкой всё в false а потом другой строчкой нужный день true. )))

файлик с макросом. там ничего страшного.
Изменено: VideoAlex - 12.11.2013 16:41:15
 
Код
Sub SSC()
 Set sl = ActiveWorkbook.SlicerCaches("Срез_Время")
    For i = 1 To sl.SlicerItems.Count
      sl.SlicerItems(i).Selected = False
    Next
    sl.SlicerItems("23").Selected = True
End Sub

вот такой код частично подсмотреный в соседней темке работать не хочет. выделяет то что надо плюс всё от начала до того что выделено было. Проверено на срезе "Время"
 
Может так
Код
Sub SSC()
 Set sl = ActiveWorkbook.SlicerCaches("Срез_Время")
    For i = 1 To sl.SlicerItems.Count
      sl.SlicerItems(i).Selected = sl.SlicerItems(i)="23"
    Next
End Sub
Изменено: Михаил С. - 12.11.2013 17:48:26
 
ошибка тут - sl.SlicerItems(i).Selected = sl.SlicerItems(i) = "23"
думаю что сразу видно что работать не будет. SlicerItems(i) может быть или true или false, а никак не "23"
 
странно sl.SlicerItems(i).Selected = false не сбрасывает фильтр. то есть не работает вобще. по крайней мере визуально не заметно. НО sl.SlicerItems(i).Selected = True прекрасно работает. фильтр на нужное время ставит. проблема в том что он добавляется к уже существующему
 
Цитата
VideoAlex пишет:
ошибка тут - sl.SlicerItems(i).Selected = sl.SlicerItems(i) = "23"
Да, надо было явно прописать sl.SlicerItems(i).value=23  у должно обязательно прописываться свойство. Т.е надо было так:
Код
Sub SSC()
Dim i
 With ActiveWorkbook.SlicerCaches("Срез_Время")
 .SlicerItems("23").Selected = True
    For i = 1 To .SlicerItems.Count
      .SlicerItems(i).Selected = .SlicerItems(i).Value = "23"
    Next
 End With
End Sub
Цитата
VideoAlex пишет:
странно  sl.SlicerItems(i).Selected = false  не сбрасывает фильтр. то есть не работает вобще. по крайней мере визуально не заметно. НО  sl.SlicerItems(i).Selected = True  прекрасно работает.
Сначала нужно установить то, что должно быть True(хотя бы один), а уже потом можно ставить в False остальное. Все False в ходе выполнения макроса быть не могут.
 
Михаил С., спасибо огромное за внимание к теме.
Попробовал Ваш код. Всё работает, но я пока не понимаю как.  :)  
Честно говоря, я даже не подозревал что в коде может быть строчка с двумя знаками равенства (присвоения)
Будет ли .SlicerItems(i).Selected = .SlicerItems(i).Value = "3"
равносильно
.SlicerItems(i).Selected = "3"
.SlicerItems(i).Value = "3"

??
Изменено: VideoAlex - 13.11.2013 06:04:58
 
.SlicerItems(i).Selected  может быть только True или False;
.SlicerItems(i).Value = "3"  будет True, если равно 3, во всех других случаях = False, а запись
.SlicerItems(i).Selected = .SlicerItems(i).Value = "3"  равносильна
.SlicerItems(i).Selected = (.SlicerItems(i).Value = "3" ) - так, надеюсь, понятно.
 
Спасибо огромное. Всё понятно, всё работает.
с фильтром вроде всё ясно. остаётся поиск нужного столбца и собственно экспорт. буду копать
Кстати, срез вроде можно связать со всеми сводными в документе, правильно?
Изменено: VideoAlex - 13.11.2013 07:55:01
Страницы: 1
Читают тему
Наверх