devilkurs_now Спасибо! Чуть изменил диаграмму - привёл к тому виду, как она выглядела в Excel 2016 + ввёл имена. Работает ли в Excel 2007/2010? Как у вас выглядят оси? Также, как на скриншоте? Сразу ли масштабируется график? Как заменить оставшиеся ссылки на имена и убрать расчёты в код?
Может кто-нибудь подскажет, как написать покороче?
Upd: выкладываю то, что у меня пока вышло. Загнал все расчёты в VBA-код, не смог пока избавиться только от C6:C13 и E6:E13. Вообще хотелось бы всё загнать в модуль, оставив в листе только имена Graph1_Area, Graph1_Data и Graph1_Type. Т.е что-то типа post_236530.xls, но с этим нужна помощь. В общем, оставшиеся проблемы - в файле.
devilkurs_now Вечер добрый! Или не очень, не знаю, я с оставшимися пунктами совсем застрял. Получилось ли у Вас как-то решить вопрос с осями и масштабированием графика при переключении данных?
Доброй ночи Acid Burn, полный завал на работе, не успел сегодня ничего посмотреть. Еще снег выпал в Краснодаре, срочно переобувал машину. Но чисто теоретически придумал как масшабировать. Немного изменится алгоритм расчета, за счет чего на ось вылезут нужные цифры. На вспомогательной оси у меня еще вчера все получилось, а с основной Y времени не хватило. Завтра если дадут продохнуть на работе - напишу.
Добрый день, devilkurs_now! Было бы отлично, но проблема глубже. Вы можете добавить Ваш код в мой из поста 35? Там также были 3 проблемы, с которыми я с ходу не справился - может у Вас будут идеи. Я бы завтра поковырял на свежую голову на работе.
devilkurs_now У меня вообще не работает - разделитель есть всегда, для блока 1 вообще только он и есть (самого графика нет). Ещё и вспомогательная ось пропала. Вот скрин. Беда в общем. Наверное, надо до выходных отложить - тут за час-другой не разобраться... Во всяком случае мне. )))
devilkurs_now Посмотрел Диаграмма4 (4).xlsm (35.37 КБ). Если Вы об этом файле, то там всё страшно. В течении часа пытался переделать, пока результат отрицательный. Продолжу скорее всего в воскресенье. Увидимся!
devilkurs_now Спасибо! В целом лучше, но не перестраивается при наведении на стрелку и, как Вы и написали, "иногда с первого раза строит график неверно!". В Excel 2010 выглядит лучше, в 2016 - вот так. Доберусь домой, попробую что-то сделать. Может оси кратно чему-то округлить?
Acid Burn, По скринам: - На втором скрине в оси Y2 черточки "-". Это остаток от отрицательного числа. Я так и не понял почему они остаются. Формат чисел задан в виде " [>=0.072]0.000; " .Так Эксель скрывает значения меньше 0,072 (это к примеру), а вот знак отрицательно числа (минус) почему то остается. Как от этого избавиться я не знаю. - Что касается подписей осей Y1 и Y2 где нулями показывает - поиграйтесь в кодах формата числа на оси Y с разделителем дробной части "," и ".". Это точно из за этого! Во время отработки .TickLabels.NumberFormat = Y1form Эксель принимает только понятные ему символы, а остальное отбрасывает или пропускает. У меня была такая проблема, когда я на 2010 тестил, после 2007.
И еще ошибку нашел у себя небольшую. Замените часть кода:
Код
' Задаём источник и начальный тип диаграммы
If Y2step >= Y1step * 3 Then 'проверка на необходимость разделителя
Set dsource = [X_1,Y_11,E6:E13]
Set Y = [Y_11]
Else
Set dsource = [X_1,Y_1,E6:E13]
Set Y = [Y_1]
' Set dsource = [X_1,Y_1]
' Set Y = [Y_1]
Y1max = Y2max
Y1step = WF.Round(Y2_rnd / 10, Precision + 1) 'Y2step
Y1form = Y2iFormat
End If
devilkurs_now Пока не могу найти достаточно времени, чтобы вникнуть и доработать наш "прожект". Код по-прежнему глючит - проблемы с обновлением графика при переключении, построением осей, удалением лишних имён с листа всё ещё остаются. Надо привести код в порядок, м.б. использовать .UseSystemSeparators или .DecimalSeparator = "."/"," в зависимости от Application.Version. Вообще таких графиков на листе будет несколько, массив данных и его расположение будут другими... Всё сложно... В общем, ковыряюсь минут по 30 в день. Если у Вас будут мысли или новые версии - пишите. До выходных я точно до этого не доберусь. Увидимся!