Народ, помогите, пожалуйста, довести до законченного вида аналог MS Progect'a в части построения план-графиков работ (диаграмм Ганта) Сразу предупреждаю: статью "Календарный график проекта (диаграмма Ганта) версия 3.0" на http://www.planetaexcel.ru/tip.php?aid=83 я читал и файл "щупал". ИМХО, слишком сложно (по крайней мере для меня) и не гибко (если вдруг понадобимся что-то сдвинуть или добавить, то всё съедет).
В своём варианте я использую одновременно и макросы, и формулы, и именованные диапазоны, и условное форматирование... В общем - полный фарш :) Применение именованных диапазонов позволяет не лезть в код при перемещении при необходимости таблицы по листу, изменения количества столбцов до начала графиков и изменения символа-заполнителя.
Дабл-кликом в поле графика инвертируется значение конкретной ячейки в области графика (символ-заполнитель ставится/снимается). Можно просто при желании и просто стирать, вписывать, протягивать символы заполнения по области графика. УФ в ячейках строки дат закрашивает субботы, воскресенья, праздники и "чёрные выходные", назначенные из-за переноса рабочих дней. Поставив "гульку" в чек-боксе, можно выделять одновременно строки+столбцы "кликнутых" ячеек в области построения графика (за идею спасибо The_Prist, но реализовано по другому).
Почти всё уже доделал. Осталось сделать зачистку строк и добавление новых строк событий. Но это мелочи. ПРОБЛЕМА: Формулы для вычисления первой и последней дат и длительности в столбцах C-D-E не мои. А там, похоже, удобнее использовать именно формулы листа, а не макросы. Я их списал у ber$erk здесь: http://www.planetaexcel.ru/forum.php?thread_id=44584 и где смог вместо прямого указания диапазонов подставил имена вычисляемых диапазонов. Но смог не везде (я не формулист, а макрописец). Никак не могу сообразить, как реализовать ИНДЕКС(... ПОИСКПОЗ()) ТОЛЬКО на именованных диапазонах?
Alex, попробуйте: в С8 и ниже =ИНДЕКС(Даты;1;ПОИСКПОЗ(Metka;ИНДЕКС(Гант;СТРОКА()-СТРОКА(Гант)+1;);0)) в D8 и ниже =ИНДЕКС(Даты;1;ПОИСКПОЗ(СИМВОЛ(КОДСИМВ(Metka)+1);ИНДЕКС(Гант;СТРОКА()-СТРОКА(Гант)+1;);1))
спасибо большое! То, что надо. А уж про Е8 я попробую и сам сообразить по аналогии :)
Nic70y, а Вы думаете, что я этого не вижу? Я потому и попросил помощи, что именованные диапазоны у меня динамические, а в формулы не везде удалось их подставить вместо фиксированных.
А там, где нет ни одного символа Metka пусть пока так #Н/Д и выдаёт. Ведь по сути это правильно, т.к. работа записана, а времени не занимает. Ну, может быть со временем посмотрю и заменю #Н/Д на ""
С уважением, Алексей(ИМХО: Excel-2003 - THE BEST!!!)
К сожалению, я как ни пытался, а не въехал почему в поиске последней даты ищется не сам символ Metka, а следующий за ним - СИМВОЛ(КОДСИМВ(Metka)+1) ??? Но ведь работает! Жаль, что не понимаю, почему... Может быть кто-нибудь из знатоков объясним?
С уважением, Алексей(ИМХО: Excel-2003 - THE BEST!!!)
я так пробовал уже изначально - даёт ошибку на некоторых датах - пропускает последние даты. При чём не на всех, а только на состоящих из "рваных" отрезков и где-то начиная с ноября. Этот-то вариант логичный и понятный по Справке. А вот СИМВОЛ(КОДСИМВ(Metka)+1) хоть и не понятно, но работает!
К стати, не подскажете всё-таки формулу для подсчёта дней чтобы мне завтра на работе не терять время?
С уважением, Алексей(ИМХО: Excel-2003 - THE BEST!!!)
Читаем Справку: ИНДЕКС(массив;номер_строки;номер_столбца) Массив — это диапазон ячеек или массив констант. Если массив содержит только одну строку или один столбец, то соответствующий аргумент номер_строки или номер_столбца не является обязательным.
Но ведь никто и не запрещает указать номер строки в массиве-строке. А определённость мне нравится больше, чем две ; подряд. (тем более, что как я уже писал: формулы - это не мой конёк)
С уважением, Алексей(ИМХО: Excel-2003 - THE BEST!!!)