На просторах интернета нашел как сделать интерполяцию внутри vba, чтобы и значения тоже были внутри. Вот ссылка на оригинал.
Сделал под себя и обнаружил, что дальше 3 значения расчет ведется неверный. Формула интерполяции верная. Проверил на бумаге и подсчитал при 1.3, получил -0.1761, написал ход расчета в функцию, получил -0.1684. Подскажите, где ошибка в трех соснах?
i я добавил от себя. В оригинале в строке (r2, r(i), g(i), r(i + 1), g(i + 1)) были (r2, r(0), g(0), r(1), g(1)). Я заметил, что если поменять эти 0 и 1 на, скажем, 12 и 13, то значения будут другие. Было предположение, что ошибка в этом, потому заменил на i? чтобы не было привязки к определенному числу.
То что делается на листе с формулами мне известно. Именно там реализован расчет. Суть его следующая: Планируется построить здание с размерами сторон B и L. Внутри здания размещаются комнаты, как ячейки, со сторонами b и l. Размеры сторон этих ячеек кратны размерам сторон здания (не может размещаться половина комнаты или какая то часть, только целая). Но, вариаций размеров сторон ячеек может быть великое множество. Например, для здания размером 100×120м могут быть ячейки 1х1, 1х2, 1х4, 1х5....20х30, ...50х60 и так далее.
Какие стороны получаются кратными для данных длин здания решается на листе и получаются строка значений l и столбец значений b. Внутри этого диапазона программа ищет массу здания. Получается табличка из масс для каждой длины и ширины комнаты. То есть расчет идет перебором по всем значениям и по этому он записан в функцию, где исходные данные только длина и ширина комнаты, а итог - масса здания. И в эту функцию мне нужно вставить интерполяцию, потому и не делаю её на листе.