Делаю программу расчета параметров в соответствии с ГОСТом: "... В этом случае значение оптимальной влажности принимают на 1,0 % - 1,5 % менее влажности wi, при которой происходит отжатие воды. Значение максимальной плотности принимают по соответствующей ей ординате." Значение влажности -1% получить не проблема, а вот как получить соответствующее ей значение плотности не знаю. Догадываюсь что формулы коэффициентов тренда от ZVI могли бы помочь - http://www.planetaexcel.ru/forum.php?thread_id=14149 Однако есть случаи: 1) Когда линия тренда далека от графика; 2) При расчете координат по формулам тренда результат на совпадает с графиком. Голову сломал а как реализовать не придумал...
Пример, для выполнения запустите процедуру GetChart в Module1. При щелчке в области диаграммы будут меняться значения в ячейках H2, I2. Думаю, пересчёт из пространства координат Chart в пространство PlotArea (реальных координат) сделаете самостоятельно.
Можно также поискать в итернете и как вычислять параметры кубического сплайна для получения координат (сглаженная линия, проходящая через точки данных на него похожа).
Anvg, благодарю за отзывчивость! Только при запуске процедуры GetChart в Module1 возникает ошибка '438' "Object doesn't support this property or method"
Попробуйте в качестве инициализирующей процедуры Public Sub GetChart2003() If ActiveSheet.ChartObjects.Count > 0 Then Set FChartHandler = New ChartHandler FChartHandler.Create ActiveSheet.ChartObjects(1).Chart, ActiveSheet End If End Sub
Что там сложного? FChart_MouseDown x, y идёт в экранных координатах (pixel) от левого верхнего угла ChartObject. Лучше для этого передавать ChartObject в ChartHandler. Используя PointsToScreenPixelsX, PointsToScreenPixelsY объекта ActiveWindow пересчитываем координаты ChartObject из point в pixel. Находим ширину высоту в пикселах, пересчитываем щелчёк в point. По данным положения PlotArea находим относительные координаты щелчка в PlotArea в point. По данным минимума и максимума требуемых значений находим коэффициенты пересчёта из координат в point в требуемые. Вот и всё. Успехов!
(О_О) Не подумайте что хочу садиться на шею... Только в VBA я не силен и попытки написать подобный код займут неделю если не две. Прошу пример... Если не сложно!