Скажу честно, поиском не пользовался, но не из лени, а потому что даже не знаю как правильно сформулировать вопрос. Искал в яше. Но ответа не нашёл.
Итак, есть файл (вложен). В файле несколько листов. Например, берём лист "1 блок Интернет". В нём содержатся данные по эффективности рекламных интернет каналов. Статистика собирается каждую неделю. Таблица сделана сразу на год. Соответственно есть около 60 столбцов с датами окончания недель, т.е. датами сбора и занесения данных в таблицу. На основе данных, содержащихся на этом (и не только этом листе) на первый лист под названием "Сводные графически" будут вынесены графики, которые будут показывать изменения трендов. Т.е. упала эффективность рекламы или наоборот возросла.
Если создать график сразу на 60 недель он получается очень длинным и большая его часть просто бессмысленна на данный момент, т.к. данные будут постепенно добавляться в течении годаю Эта одна проблема. Вторая проблема в том, что если заранее занести формулы расчёта в таблицу на основе которой строится график, то следующую неделю (данные за которую ещё просто не внесены) и все последующие недели, график понимает как нулевые значения и тупо всегда падает на ноль.
Выход, который я вижу - не заносить заранее формулы в таблицу и скрывать столбцы с "очень старыми" неделями и "не скоро предстоящими" неделями. Реально для работы необходимы данные за последние 1,5 месяца (т.е. 5 столбцов) и 2-3 предстоящие недели (пустые). Как известно, график по умолчанию не отображает данные в скрытых ячейках. По этому размер графика нормализуется.
Допустим мы скрыли всё ненужное. И вот пришла пора заносить данные за новую неделю. Например сейчас идёт неделя, которая кончится 20.12.103. (в пятницу) и мы начнём заносить данные по ней. Что нужно сделать? Нужно скрыть совсем старую неделю (за 08 ноя), открыть новую неделю (10 янв) и протянуть формулы из недели 13 дек на неделю 20 дек. Таким образом, мы как бы двигаем вправо область с данными на некоей шкале. Оставляя скрытой совсем уж старую информацию и постепенно открывая новые недели. График, построенный на основе этой таблице, естественно движется вслед за данными. Вроде всё хорошо. Но таких данных планируется очень много. Заносить их будет в таблицу не создатель файла. По этому, планируется защитить лист паролем (оставив возможность редактирования только конкретных ячеек) по этому нужно автоматизировать процесс. Сделать кнопку на листе и назначить на неё макрос.
Итак, что должен делать макрос? 1. Скрыть совсем старую неделю 2. Открыть одну новую неделю из будущих (в данный момент они скрыты) 3. протянуть формулы из текущей недели в следующую.
Вроде просто, но тут я въехал в пень. Получается, что макросам пофигу на то, скрыт столбец в данный момент или нет. Например, я записываю макрос, который скрывает столбец "С". Всё работает, но только один раз. Когда столбец "С" скрыт, на его месте оказывается столбец "D", и надо бы скрыть теперь уже столбец "D". Но макросу пофиг он снова пытается скрыть и без того уже скрытый столбец "С". пробовал записывать макросы с нажатой кнопкой "Относительные ссылки", но всё то же самое. Да, теперь он скрывает столбцы не по их названию, а просто как бы считая "Третий столбец слева". Но тот факт, что на месте третьего слева столбца уже оказался четвёртый, и вроде как он теперь является третьим слева и теперь бы его надо скрыть - не вкатывает. Макрос по прежнему пытается скрыть третий слева столбец, который и без того скрыт уже. Но т.к. он в принципе существует (не важно скрыт или не скрыт) он считается третьим слева и капец.
Естественно, с открытием новых недель и протяжкой формул - та же проблема.
Кто виноват и что делать?)))
Скажу честно, поиском не пользовался, но не из лени, а потому что даже не знаю как правильно сформулировать вопрос. Искал в яше. Но ответа не нашёл.
Итак, есть файл (вложен). В файле несколько листов. Например, берём лист "1 блок Интернет". В нём содержатся данные по эффективности рекламных интернет каналов. Статистика собирается каждую неделю. Таблица сделана сразу на год. Соответственно есть около 60 столбцов с датами окончания недель, т.е. датами сбора и занесения данных в таблицу. На основе данных, содержащихся на этом (и не только этом листе) на первый лист под названием "Сводные графически" будут вынесены графики, которые будут показывать изменения трендов. Т.е. упала эффективность рекламы или наоборот возросла.
Если создать график сразу на 60 недель он получается очень длинным и большая его часть просто бессмысленна на данный момент, т.к. данные будут постепенно добавляться в течении годаю Эта одна проблема. Вторая проблема в том, что если заранее занести формулы расчёта в таблицу на основе которой строится график, то следующую неделю (данные за которую ещё просто не внесены) и все последующие недели, график понимает как нулевые значения и тупо всегда падает на ноль.
Выход, который я вижу - не заносить заранее формулы в таблицу и скрывать столбцы с "очень старыми" неделями и "не скоро предстоящими" неделями. Реально для работы необходимы данные за последние 1,5 месяца (т.е. 5 столбцов) и 2-3 предстоящие недели (пустые). Как известно, график по умолчанию не отображает данные в скрытых ячейках. По этому размер графика нормализуется.
Допустим мы скрыли всё ненужное. И вот пришла пора заносить данные за новую неделю. Например сейчас идёт неделя, которая кончится 20.12.103. (в пятницу) и мы начнём заносить данные по ней. Что нужно сделать? Нужно скрыть совсем старую неделю (за 08 ноя), открыть новую неделю (10 янв) и протянуть формулы из недели 13 дек на неделю 20 дек. Таким образом, мы как бы двигаем вправо область с данными на некоей шкале. Оставляя скрытой совсем уж старую информацию и постепенно открывая новые недели. График, построенный на основе этой таблице, естественно движется вслед за данными. Вроде всё хорошо. Но таких данных планируется очень много. Заносить их будет в таблицу не создатель файла. По этому, планируется защитить лист паролем (оставив возможность редактирования только конкретных ячеек) по этому нужно автоматизировать процесс. Сделать кнопку на листе и назначить на неё макрос.
Итак, что должен делать макрос? 1. Скрыть совсем старую неделю 2. Открыть одну новую неделю из будущих (в данный момент они скрыты) 3. протянуть формулы из текущей недели в следующую.
Вроде просто, но тут я въехал в пень. Получается, что макросам пофигу на то, скрыт столбец в данный момент или нет. Например, я записываю макрос, который скрывает столбец "С". Всё работает, но только один раз. Когда столбец "С" скрыт, на его месте оказывается столбец "D", и надо бы скрыть теперь уже столбец "D". Но макросу пофиг он снова пытается скрыть и без того уже скрытый столбец "С". пробовал записывать макросы с нажатой кнопкой "Относительные ссылки", но всё то же самое. Да, теперь он скрывает столбцы не по их названию, а просто как бы считая "Третий столбец слева". Но тот факт, что на месте третьего слева столбца уже оказался четвёртый, и вроде как он теперь является третьим слева и теперь бы его надо скрыть - не вкатывает. Макрос по прежнему пытается скрыть третий слева столбец, который и без того скрыт уже. Но т.к. он в принципе существует (не важно скрыт или не скрыт) он считается третьим слева и капец.
Естественно, с открытием новых недель и протяжкой формул - та же проблема.
Вариант без макроса. Можно регулировать количество недель вперед от прошедшей пятницы и количество пятниц на диаграмме Предваряя вопрос "Как?" - жмите Контрл F3, там именованные диапазоны. Далее, смотрите на источник данных для каждого ряда диаграммы.
Вариант без макроса. Можно регулировать количество недель вперед от прошедшей пятницы и количество пятниц на диаграмме Предваряя вопрос "Как?" - жмите Контрл F3, там именованные диапазоны. Далее, смотрите на источник данных для каждого ряда диаграммы._Boroda_
Спасибо за предложение. Я не до конца понял тонкости того, как это работает, но общий принцип понятен. Однако он не решает вопроса скрытия ненужных на данный момент самих столбцов с данными, в самой таблице со значениями.
Спасибо за предложение. Я не до конца понял тонкости того, как это работает, но общий принцип понятен. Однако он не решает вопроса скрытия ненужных на данный момент самих столбцов с данными, в самой таблице со значениями.Asdvin
Сообщение отредактировал Asdvin - Понедельник, 16.12.2013, 21:32
И кстати, непонятно как протягивать формулы таким способом. По сути, изначально я хотел узнать, как заставить макрос работать только с видимыми ячейками. Т.е., грубо говоря, как объяснить макросу "Скрой мне третий столбец слева, при этом УЖЕ СКРЫТЫЕ не считаются". Вот типа того. Можно ли? Остальное я сам доделаю)))
И кстати, непонятно как протягивать формулы таким способом. По сути, изначально я хотел узнать, как заставить макрос работать только с видимыми ячейками. Т.е., грубо говоря, как объяснить макросу "Скрой мне третий столбец слева, при этом УЖЕ СКРЫТЫЕ не считаются". Вот типа того. Можно ли? Остальное я сам доделаю)))Asdvin
Если создать график сразу на 60 недель он получается очень длинным и большая его часть просто бессмысленна на данный момент, т.к. данные будут постепенно добавляться в течении годаю Эта одна проблема. Вторая проблема в том, что если заранее занести формулы расчёта в таблицу на основе которой строится график, то следующую неделю (данные за которую ещё просто не внесены) и все последующие недели, график понимает как нулевые значения и тупо всегда падает на ноль.
Выход, который я вижу - не заносить заранее формулы в таблицу и скрывать столбцы с "очень старыми" неделями и "не скоро предстоящими" неделями. Реально для работы необходимы данные за последние 1,5 месяца (т.е. 5 столбцов) и 2-3 предстоящие недели (пустые). Как известно, график по умолчанию не отображает данные в скрытых ячейках. По этому размер графика нормализуется.
График получился даже удобнее, чем Вы хотели (удобнее потому, что его размер настраивается на лету). Так зачем теперь Вы хотите повесить на себя то, что Вы поправить потом (в случае сбоя) не сможете?
Если создать график сразу на 60 недель он получается очень длинным и большая его часть просто бессмысленна на данный момент, т.к. данные будут постепенно добавляться в течении годаю Эта одна проблема. Вторая проблема в том, что если заранее занести формулы расчёта в таблицу на основе которой строится график, то следующую неделю (данные за которую ещё просто не внесены) и все последующие недели, график понимает как нулевые значения и тупо всегда падает на ноль.
Выход, который я вижу - не заносить заранее формулы в таблицу и скрывать столбцы с "очень старыми" неделями и "не скоро предстоящими" неделями. Реально для работы необходимы данные за последние 1,5 месяца (т.е. 5 столбцов) и 2-3 предстоящие недели (пустые). Как известно, график по умолчанию не отображает данные в скрытых ячейках. По этому размер графика нормализуется.
График получился даже удобнее, чем Вы хотели (удобнее потому, что его размер настраивается на лету). Так зачем теперь Вы хотите повесить на себя то, что Вы поправить потом (в случае сбоя) не сможете?_Boroda_
Sub qq() For i = 1 To Columns.Count If Columns(i).Hidden = False Then j = j + 1 If j = 3 Then Columns(i).Hidden = True Exit Sub End If End If Next End Sub
[/vba]
[vba]
Код
Sub qq() For i = 1 To Columns.Count If Columns(i).Hidden = False Then j = j + 1 If j = 3 Then Columns(i).Hidden = True Exit Sub End If End If Next End Sub
А теперь-то зачем? Нужно было что? Нужно было, чтобы график был красивым и читаемым.
Нужно было и то и другое. Когда пойдёт 32 неделя года заносить данные в таблицу будет тяжко. Да и (надеемся), что годом всё не ограничится. А когда 75 неделя сбора данных пойдет?))) Мотать страницу вправо, пока колесо на мышке скрипеть не начнёт?))
Sub qq() For i = 1 To Columns.Count If Columns(i).Hidden = False Then j = j + 1 If j = 3 Then Columns(i).Hidden = True Exit Sub End If End If Next End Sub
Уважаемый, вот это именно то, что мне было нужно. Всё чётко работает. Могли бы вы мне написать ещё пример как по той же логике отобразить столбец один из скрытых. Например столбцов всего имеется 30. (естественно в буквенных обозначениях) т.е. столбцы от А до AC, причём скрыты столбцы от 3 до 10 и от 20 до 30. Т.е. в данный момент мы имеем 30 столбцов но видим только A,B,C, K-T, AD-до конца файла. Задача: открыть столбец номер 21 (столбец V) это если считать все столбцы в принципе (скрытые и не скрытые) и задача превращается в "Открыть столбец 14" если считать только те, что выдны на данный момент. (13 мы видим, а тот 14ый, который надо открыть, в данный момент он скрыт и станет 14ым видимым когда откроется)
А так же есть третья задача, которая завершит процесс: "Протянуть" формулы из 16ого в 17ый столбец. Т.е. из столбца Q в столбец R. Или, если перефразировать: нужно протянуть формулы из 8ого в 9ый ВИДИМЫХ столбцов. Вот так правильнее будет сказать. Именно из 8ого видимого в 9ый видимый. А какие они там в реальности по счёту идут - не имеет значения. Хоть трёхсотые.
Естественно, вся эта богодельня должна работать после каждого смещения. Ну, я в стартовом топе описывал в чём проблема. Т.е. вся логика не должна жёстко привязываться к именам столбцов и не должна считать скрытые за столбец.
Я, просто как та собака - понимать понимаю, но сказать не могу. Типа великий бейсик программист))) Как работает код - я понимаю. В приведённом вами примере я вижу логику работы программы, но так как не знаком с синтаксисом и операторами конкретно этого языка макросов, то мне очень нужны примеры, чтоб поправить их под себя. Не было бы вам сложным показать мне примеры написания тех действий которые мне нужны?? А уж в один целый макрос я помучаюсь да сам всё это соберу.
А теперь-то зачем? Нужно было что? Нужно было, чтобы график был красивым и читаемым.
Нужно было и то и другое. Когда пойдёт 32 неделя года заносить данные в таблицу будет тяжко. Да и (надеемся), что годом всё не ограничится. А когда 75 неделя сбора данных пойдет?))) Мотать страницу вправо, пока колесо на мышке скрипеть не начнёт?))
Sub qq() For i = 1 To Columns.Count If Columns(i).Hidden = False Then j = j + 1 If j = 3 Then Columns(i).Hidden = True Exit Sub End If End If Next End Sub
Уважаемый, вот это именно то, что мне было нужно. Всё чётко работает. Могли бы вы мне написать ещё пример как по той же логике отобразить столбец один из скрытых. Например столбцов всего имеется 30. (естественно в буквенных обозначениях) т.е. столбцы от А до AC, причём скрыты столбцы от 3 до 10 и от 20 до 30. Т.е. в данный момент мы имеем 30 столбцов но видим только A,B,C, K-T, AD-до конца файла. Задача: открыть столбец номер 21 (столбец V) это если считать все столбцы в принципе (скрытые и не скрытые) и задача превращается в "Открыть столбец 14" если считать только те, что выдны на данный момент. (13 мы видим, а тот 14ый, который надо открыть, в данный момент он скрыт и станет 14ым видимым когда откроется)
А так же есть третья задача, которая завершит процесс: "Протянуть" формулы из 16ого в 17ый столбец. Т.е. из столбца Q в столбец R. Или, если перефразировать: нужно протянуть формулы из 8ого в 9ый ВИДИМЫХ столбцов. Вот так правильнее будет сказать. Именно из 8ого видимого в 9ый видимый. А какие они там в реальности по счёту идут - не имеет значения. Хоть трёхсотые.
Естественно, вся эта богодельня должна работать после каждого смещения. Ну, я в стартовом топе описывал в чём проблема. Т.е. вся логика не должна жёстко привязываться к именам столбцов и не должна считать скрытые за столбец.
Я, просто как та собака - понимать понимаю, но сказать не могу. Типа великий бейсик программист))) Как работает код - я понимаю. В приведённом вами примере я вижу логику работы программы, но так как не знаком с синтаксисом и операторами конкретно этого языка макросов, то мне очень нужны примеры, чтоб поправить их под себя. Не было бы вам сложным показать мне примеры написания тех действий которые мне нужны?? А уж в один целый макрос я помучаюсь да сам всё это соберу.Asdvin
Сообщение отредактировал Asdvin - Понедельник, 16.12.2013, 22:29
Читал я правила. Ну, если приятнее - давайте обзовём её подзадачей. Ибо она является составной частью общей задачи, которую нужно решить и, подозреваю, что выполняется по общему похожему принципу, с незначительными, чисто техническими, изменениями. К чему создавать 38 тем, если задачи идентичны. Обзываются кратко "Как не считать скрытые столбцы", а задачи и подзадачи приведены только для полее полного понимания ситуации и цели.
Давайте создадим одну тему-помойку под названием "Работа в Excel" и будем постить туда все вопросы и ответы по Excel. Ведь все они являются всего лишь подзадачами темы "Работа в Excel"
Да, и если задачи идентичны - то зачем дублировать вопросы? Решения в таком случае тоже идентичны будут. А если нет - значит задачи все же разные
[p.s.]Свои правила будете устанавливать где-нибудь в другом месте, на этом форуме правила уже есть. Либо соблюдайте их, либо не ждите помощи. Тема закрыта, Вам замечание. Пока устное[/p.s.][/admin]
Читал я правила. Ну, если приятнее - давайте обзовём её подзадачей. Ибо она является составной частью общей задачи, которую нужно решить и, подозреваю, что выполняется по общему похожему принципу, с незначительными, чисто техническими, изменениями. К чему создавать 38 тем, если задачи идентичны. Обзываются кратко "Как не считать скрытые столбцы", а задачи и подзадачи приведены только для полее полного понимания ситуации и цели.
Давайте создадим одну тему-помойку под названием "Работа в Excel" и будем постить туда все вопросы и ответы по Excel. Ведь все они являются всего лишь подзадачами темы "Работа в Excel"
Да, и если задачи идентичны - то зачем дублировать вопросы? Решения в таком случае тоже идентичны будут. А если нет - значит задачи все же разные
[p.s.]Свои правила будете устанавливать где-нибудь в другом месте, на этом форуме правила уже есть. Либо соблюдайте их, либо не ждите помощи. Тема закрыта, Вам замечание. Пока устное[/p.s.][/admin]Asdvin