Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Вопрос к Deggasad про именованные диапазоны при построении диаграммы. / 22 сообщений из 22, страница 1 из 1
15.11.2007, 15:57:32
    #34942552
Вопрос к Deggasad про именованные диапазоны при построении диаграммы.
Вот тут была тема ...
А можно ли теперь добавить, кроме списка отбора по месяцам, еще и список отбора по годам?
Моего умения хватило только на создание самого поля "Год" с выпадающим списком. А как его учитывать в выражениях не знаю.
...
Рейтинг: 0 / 0
15.11.2007, 21:23:28
    #34943365
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос к Deggasad про именованные диапазоны при построении диаграммы.
...
Рейтинг: 0 / 0
15.11.2007, 21:32:52
    #34943373
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос к Deggasad про именованные диапазоны при построении диаграммы.
Deggasad

Это я для примера. может пригодится Что - то родить я сейчас не в состоянии, поэтому взял один из своих графиков. А так вообще не по ссылки не увидел вопроса, там просто мне что-то нужно никто не подскажет как мне это сделать: Извините, но сделать что?
...
Рейтинг: 0 / 0
16.11.2007, 14:06:41
    #34945045
Вопрос к Deggasad про именованные диапазоны при построении диаграммы.
Я дал ссылку на ветку в соседнем форуме, где Вы мне показали как использовать именованные диапазоны при построении диаграммы, и где я привел процедуру, которая в итоге у меня получилась (сообщение за 2 июл 07, 12:10). Вот в ней я и пытаюсь добавить отбор еще и по годам.
Как я понял, все сводится к изменению выражений MinRow, которая сейчас такая:
Код: plaintext
1.
"=ЕСЛИ(Прогноз!R" & intRow & "C1=""Все"";3;МИН(ЕСЛИ((table!R1C4:R5000C4=Прогноз!R" & intRow & 
"C1);СТРОКА(table!R1C4:R5000C4))))"
и MaxRow:
Код: plaintext
1.
"=ЕСЛИ(Прогноз!R" & intRow & "C1=""Все"";ПОИСКПОЗ(""яяяяя"";table!R1C4:R5000C4);МАКС(ЕСЛИ((table!R1C4:R5000C4=Прогноз!R" &
 intRow & "C1);СТРОКА(table!R1C4:R5000C4))))"
или словами: если выбран конкретный месяц, то MinRow равно первой, а MaxRow - последней строке диапазона, где таковой встречается, если выбрано "Все", то MinRow =3, а MaxRow- последней строке всего диапазона.
А теперь надо обыграть еще 2 ситуации: "выбран конкретный год" и "выбраны все года".
Пытался в приведенные выражения вложить еще ЕСЛИ...ЕСЛИ - запутался, плюнул...
Создал, по аналогии с MinRow и MaxRow, еще 2 параметра MinRowYear и MaxRowYear, но теперь проблема с тем, как их использовать в именованных диапазонах. Сейчас, например, один из диапазонов выглядит так:
Код: plaintext
"=ИНДЕКС(table!R1C2:R5000C2;MinRow):ИНДЕКС(table!R1C2:R5000C2;MaxRow)"
пара новых параметров тут ни к селу, ни к городу.
...
Рейтинг: 0 / 0
16.11.2007, 14:50:47
    #34945237
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос к Deggasad про именованные диапазоны при построении диаграммы.
Понимаете! Это для вас в памяти свежо - что и как мы там делали и где это там искать.
А я про это ничего не помню.
Если хотите чтобы я вам помог, так пожалейте моё (а в результате и своё время).
Выложите файл с тем что уже есть, а также с какими-то намётками на то что должно получиться.
Тока не подумайте что я пытаюсь грубить, но я правда не телепат, а читать 4 страницы форума по ссылке.....
...
Рейтинг: 0 / 0
16.11.2007, 14:51:07
    #34945240
Вопрос к Deggasad про именованные диапазоны при построении диаграммы.
Продолжаю пытаться с вложенными ЕСЛИ. Вот такая конструкция хотя бы правильная:
Код: plaintext
1.
2.
3.
MinRow "= ЕСЛИ(СписокГод ="Все" И СписокМесяц = "Все";3;
ЕСЛИ(СписокГод ="Все" И СписокМесяц = "Март"; ПерваяСтрока с Мартом;
ЕСЛИ(СписокГод ="2007" И СписокМесяц = "Все";ПерваяСтрока с 2007;
ЕСЛИ(СписокГод ="2007" И СписокМесяц = "Май";ПерваяСтрока с 2007 И ПерваяСтрока с Маем;))))"    
Имею ввиду общий смысл выражения. Или я в принципе не то делаю?
...
Рейтинг: 0 / 0
16.11.2007, 15:10:03
    #34945317
Вопрос к Deggasad про именованные диапазоны при построении диаграммы.
Там не надо 4 страницы читать...
Вот Ваше сообщение: DeggasadСначала нашёл минимальную строку. Если всё, то 3. Если месяц то минимальная строка в которой встречается месяц
MinRow =ЕСЛИ(Лист1!$F$1="Все";3;МИН(ЕСЛИ((Лист1!$D$1:$D$4985=Лист1!$F$1);СТРОКА(Лист1!$D$1:$D$4985))))
Потом нашёл максимальную строку. Если все, то последняя заполненная строка. Если месяц то максимальная строка в которой встреяается месяц
MaxRow =ЕСЛИ(Лист1!$F$1="Все";ПОИСКПОЗ("яяяяя";Лист1!$D$1:$D$5000);МАКС(ЕСЛИ((Лист1!$D$1:$D$5000=Лист1!$F$1);СТРОКА(Лист1!$D$1:$D$5000))))
А потом присваиваю трём именованным диапазонам значение в зависимости от значений MinRow и MaxRow.
Промежут =ИНДЕКС(Лист1!$A$1:$A$4985;MinRow):ИНДЕКС(Лист1!$A$1:$A$4985;MaxRow)
общий =ИНДЕКС(Лист1!$B$1:$B$4985;MinRow):ИНДЕКС(Лист1!$B$1:$B$4985;MaxRow)
Дата =ИНДЕКС(Лист1!$C$1:$C$4985;MinRow):ИНДЕКС(Лист1!$C$1:$C$4985;MaxRow)а это кусок моего кода:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
xlsApp.ActiveWorkbook.Names.Add Name:="MinRow", RefersToR1C1:= _
"=ЕСЛИ(Прогноз!R" & intRow & "C1=""Все"";3;МИН(ЕСЛИ((table!R1C4:R5000C4=Прогноз!R" & intRow & "C1);СТРОКА(table!R1C4:R5000C4))))"
xlsApp.ActiveWorkbook.Names.Add Name:="MaxRow", RefersToR1C1:= _
"=ЕСЛИ(Прогноз!R" & intRow & "C1=""Все"";ПОИСКПОЗ(""яяяяя"";table!R1C4:R5000C4);МАКС(ЕСЛИ((table!R1C4:R5000C4=Прогноз!R" & intRow & "C1);СТРОКА(table!R1C4:R5000C4))))"
xlsApp.ActiveWorkbook.Names.Add Name:="DataOtchet", RefersToR1C1:= _
"=ИНДЕКС(table!R1C3:R5000C3;MinRow):ИНДЕКС(table!R1C3:R5000C3;MaxRow)"
xlsApp.ActiveWorkbook.Names.Add Name:="VsegoOtshet", RefersToR1C1:= _
"=ИНДЕКС(table!R1C2:R5000C2;MinRow):ИНДЕКС(table!R1C2:R5000C2;MaxRow)"
xlsApp.ActiveWorkbook.Names.Add Name:="промежут", RefersToR1C1:= _
"=ИНДЕКС(table!R1C1:R5000C1;MinRow):ИНДЕКС(table!R1C1:R5000C1;MaxRow)"
На данные диаграммы сейчас влияет выбор в списке ячейки Прогноз!R" & intRow & "C1, хочу добавить еще и зависимость от списка ячейки Прогноз!R" & intRow-1 & "C1, в котором выводятся года.
Общий алгоритм своих попыток я описал в предыдущем посте. Я "верной дорогой" иду?
...
Рейтинг: 0 / 0
16.11.2007, 15:16:10
    #34945355
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос к Deggasad про именованные диапазоны при построении диаграммы.
Ну хорошо
ну хотя бы структуру исходных данных с которыми вы работаете можно увидеть (файл Эксель имеется ввиду после выгрузки). И ещё бы чтобы были имена эти уже забиты. И чтобы там уже было видно как год выбирать будем.
...
Рейтинг: 0 / 0
16.11.2007, 15:47:30
    #34945535
Вопрос к Deggasad про именованные диапазоны при построении диаграммы.
Выкладываю. Только в исх.таблице поле Year пока пустое
...
Рейтинг: 0 / 0
17.11.2007, 10:56:55
    #34946595
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос к Deggasad про именованные диапазоны при построении диаграммы.
Сегодня вечером обязательно посмотрю, пока некогда было, там за 5 мин не разберёшься
...
Рейтинг: 0 / 0
19.11.2007, 11:25:23
    #34948236
Вопрос к Deggasad про именованные диапазоны при построении диаграммы.
Попробовал сам сделать.
1. Кто-ж знал, что общая длина ссылки ограничена...
2. Пришлось разбивать выражение на несколько:
MinRowMonthNotOll (минимальная строка, если указан конкретный месяц):
=МИН(ЕСЛИ((table!$G$1:$G$4999=Прогноз!$A$4);СТРОКА(table!$G$1:$G$4999)))
MinRowYearNotOll (минимальная строка, если указан конкретный год):
=МИН(ЕСЛИ((table!$F$1:$F$4999=Прогноз!$A$3);СТРОКА(table!$F$1:$F$4999)))
MinRowYearMonthNotOll (минимальная строка, если указаны и год, и месяц):
=МИН(ЕСЛИ(И(table!$F$1:$F$4999=Прогноз!$A$3;table!$G$1:$G$4999=Прогноз!$A$4);ИНДЕКС(СТРОКА(table!$F$1:$F$4999);СТРОКА(table!$G$1:$G$4999))))
MinRowYearMonth(общее выражение минимальной строки):
=ЕСЛИ(И(Прогноз!$A$3="Все";Прогноз!$A$4="Все");3;ЕСЛИ(И(Прогноз!$A$3="Все";Прогноз!$A$4<>"Все");MinRowMonthNotOll;ЕСЛИ(И(Прогноз!$A$3<>"Все";Прогноз!$A$4="Все");MinRowYearNotOll;ЕСЛИ(И(Прогноз!$A$3<>"Все";Прогноз!$A$4<>"Все");MinRowYearMonthNotOll))))
MP (максимальная строка, если не указан ни конкретный месяц, ни год):
=ПОИСКПОЗ("яяяяя";table!$F$1:$F$4999)
MaxRMNO (максимальная строка, если указан конкретный месяц):
=МАКС(ЕСЛИ((table!$G$1:$G$4999=Прогноз!$A$4);СТРОКА(table!$G$1:$G$4999)))
MaxRYNO (максимальная строка, если указан конкретный год):
=МАКС(ЕСЛИ((table!$F$1:$F$4999=Прогноз!$A$3);СТРОКА(table!$F$1:$F$4999)))
MaxRYMNO (максимальная строка, если указаны и год, и месяц):
=МАКС(ЕСЛИ(И(table!$F$1:$F$4999=Прогноз!$A$3;table!$G$1:$G$4999=Прогноз!$A$4);ИНДЕКС(СТРОКА(table!$F$1:$F$4999);СТРОКА(table!$G$1:$G$4999))))
MaxRowYearMonth(общее выражение максимальной строки):
=ЕСЛИ(И(Прогноз!$A$3="Все";Прогноз!$A$4="Все");MP;ЕСЛИ(И(Прогноз!$A$3="Все";Прогноз!$A$4<>"Все");MaxRMNO;ЕСЛИ(И(Прогноз!$A$3<>"Все";Прогноз!$A$4="Все");MaxRYNO;ЕСЛИ(И(Прогноз!$A$3<>"Все";Прогноз!$A$4<>"Все");MaxRYMNO))))
В результате получилась какая-то хрень(но ведь получилась, все-таки!)
...
Рейтинг: 0 / 0
19.11.2007, 12:53:47
    #34948626
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос к Deggasad про именованные диапазоны при построении диаграммы.
Извини, что не выложил, времени всё нет, сегодня вечером свой вариант скину. Дома у меня лежит.
...
Рейтинг: 0 / 0
19.11.2007, 12:55:55
    #34948635
Вопрос к Deggasad про именованные диапазоны при построении диаграммы.
А мои попытки, хоть какой-то здравый смысл в них есть или полная хня?
...
Рейтинг: 0 / 0
20.11.2007, 01:44:29
    #34950473
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос к Deggasad про именованные диапазоны при построении диаграммы.
Извини, но нет времени смотреть, то что ты выложил. Только и смог что свой вариант по быстрому набросать, ведь обещал.
Так как тебе нужнее, то пожалуй тебе и сопоставлять.

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

Удачи, пиши если что.
...
Рейтинг: 0 / 0
20.11.2007, 18:36:56
    #34953216
Вопрос к Deggasad про именованные диапазоны при построении диаграммы.
(С грустной завистью) Да, у тебя все проще получилось...
Вот только при выборе Год = "Все", в списке Месяц тоже только "Все" можно выбрать. И посмотреть графики за, например, январь по обоим годам не получится...
...
Рейтинг: 0 / 0
21.11.2007, 09:00:07
    #34953980
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос к Deggasad про именованные диапазоны при построении диаграммы.
Очень нужноВот только при выборе Год = "Все", в списке Месяц тоже только "Все" можно выбрать. И посмотреть графики за, например, январь по обоим годам не получится...
Сделано специально, т.к. из конкретной задачи даты идут друг за другом и построить график из двух несвязных диапазонов не получится. Если всё же нужно, то есть 2 пути:
- использовать в файле макросы (что накладывает ряд ограничений). Самый простой пример использования макросов это наверное фильтровать исходный диапазон расширенным фильтром в зависимости от выбранной ячейки.
- всё таки не использовать макросы, а формулами пересортировывать диапазон с выбором только требуемых ячеек. Впринципе тоже ничего сложного я делал неоднократно, но размер файла и время выполнения увеличиваются. Если нужно будет пиши попробуем примерчик состряпать, просто сначала подумай насколько нужно смореть январь за есколько лет, а то файл то придётся усложнить.
...
Рейтинг: 0 / 0
21.11.2007, 18:30:39
    #34956416
Вопрос к Deggasad про именованные диапазоны при построении диаграммы.
Начинаю разбираться с кодом...
Вопрос 1:
Можно ли сотворить выражение возвращающее в поле Прогноз!$A$2 список месяцев, которые встречаются в выбранном в поле Прогноз!$A$1 годе. Т.е. если в таблице данные за 2007 год начинаются с марта, а за 2008 год заканчиваются июнем, то при выборе 2007 - список месяцев ограничен март-декабрь, при 2008 - январь-июнь?
Сейчас перечень месяцев храниться в диапазоне ячеек и всегда постоянен. И при выборе конкретного года и месяца, на который нет данных, - вываливается ошибка.
Вопрос 2:
Если список месяцев будет содержать перечень названий, то летит выражение MONTH...
Функции типа МЕСЯЦИМЯ(МЕСЯЦНОМЕР) или обратной ведь в Excel нет?
Дело в том, что в исходном варианте выражение MONTH возвращало порядковый номер месяца (равный номеру позиции названия), а после переделки MONTH возвращает название месяца, блин!
DeggasadЧто точно считаю нужным сделать, так это избавиться от дополнительных столбцов,Ой,чой-то я чувствую, что теперь придется добавлять столбец Месяц в исходную таблицу, и создавать еще выражени MonthRng, чтоб заменить выражение МЕСЯЦ(DataRng)=MONTH (в MinRow и MaxRow) на MonthRng=MONTH
...
Рейтинг: 0 / 0
21.11.2007, 19:00:05
    #34956522
Вопрос к Deggasad про именованные диапазоны при построении диаграммы.
Очень нужноМожно ли сотворить выражение возвращающее в поле Прогноз!$A$2 список месяцевПросто попробовал: Создал выражение ASD = ИНДЕКС(table!$F:$F;3):ИНДЕКС(table!$F:$F;40) и указал его как источник списка (Данные-Проверка) для поля Прогноз!$A$2. Поле F таблицы содержит название месяцев, взял первые 40 записей (от балды)...получил список, где первая 31 строка содержит Январь, остальные - Февраль.
Функция типа ИСКЛЮЧИТЬПОВТОРЫ ( ~группировка) в Exel есть?
...
Рейтинг: 0 / 0
22.11.2007, 11:53:16
    #34957676
Вопрос к Deggasad про именованные диапазоны при построении диаграммы.
Так и не найдя в Excel функций типа МЕСЯЦИМЯ(МЕСЯЦНОМЕР) и ИСКЛЮЧИТЬПОВТОРЫ, пошел другим путем:
1. Вернул в основную таблицу столбец Month
2. Создал дополнительный диапазон (столбцы I и J), в котором содержатся месяцы по годам из основной таблицы (это из Access заполняется, используя группировку исключающую повторы)
3. Создал еще выражение MonthRng.
Теперь выпадающий список ячейки Прогноз!$A$2 содержит перечень месяцев только встречающихся в выбранном году в ячейке Прогноз!$A$1.
Одна неувязка: если выбрать в 2007 году месяц (например, Сентябрь), которого нет в 2008, то при переходе на 2008 год поле Прогноз!$A$2 по прежнему содержит значение Сентябрь(хотя в списке этого месяца нет) и возникает ошибка "про 32000 точек".
Подскажи, как это убрать?
...
Рейтинг: 0 / 0
24.11.2007, 01:09:34
    #34962668
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос к Deggasad про именованные диапазоны при построении диаграммы.
Очень нужно
Подскажи, как это убрать?
Месяц не сменить никак без макросов, можно просто в формулах указать что ничего не показывать если месяц не найден, а также большими красными буквами выводить надпись не забудте сменить месяц.
...
Рейтинг: 0 / 0
26.11.2007, 11:34:12
    #34964564
Вопрос к Deggasad про именованные диапазоны при построении диаграммы.
Deggasadможно просто в формулах указать...хм, может кому и "просто"...
...
Рейтинг: 0 / 0
28.11.2007, 01:23:40
    #34970384
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос к Deggasad про именованные диапазоны при построении диаграммы.
какое-то навязчевое чувство ответственности (неплохо будет направить его в нужное русло).
жертвовать собственным сном, но всё же продолжить тему (всю неделю некогда было)

Посидел, покумекал и исправил некоторые недочёты, а также учёл основные пожелания. Смотрите файл!
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Вопрос к Deggasad про именованные диапазоны при построении диаграммы. / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]