Страницы: 1
RSS
Макрос экстраполяции по двум соседним значениям, Необходимо рассчитать несколько файлов по 30-40тыс строк, оптимально макросом с наибольшей точностью.
 
Здравствуйте.
Есть файл со значениями, 5 столбцов. Название, порядковый номер, координата Х, У, и значение Z
В файле есть пропуски значений. То есть, например, есть значения для 2, 21, 36 порядкового номера, а между ними пропуск.
Надо восстановить эти номера и к ним рассчитать значения х, у, z относительно двух ближайших для наибольшей точности.
Для того, чтобы получить пропущенные номера использовал формулу, найденную на просторах интернета "=ЕСЛИ(ЕНД(ПОИСКПОЗ(СТРОКА(1:773);$B$1:B11;0));СТРОКА(1:1);"")", необходимые значения получал, путём сортировки расставлял их по порядку.
Далее через "=ПРЕДСКАЗ(G1;C1:C71;B1:B71)" рассчитывал значения в нужных ячейках относительно заданных ячеек, но(!) это не дало нужных результатов, т.к вышло очень неточно и разброс получался не удовлетворяющим задание, так как "предсказ" был относительно случайного кол-ва значений (в данном случае от 1 до 71), а нужно было рассчитывать относительно двух ближайших. Так как вручную рассчитывать данным образом крайне долго прошу помочь с написанием макроса для данной операции. В идеале - для расчета всего документа, но можно также и для каждого профиля (столбец А) по отдельности, а потом уже сам сохраню в один документ. В некоторых случаях надо отсортировать по порядку значения в пределах каждого профиля по столбцу В.
Резюмирую: необходим макрос для экстраполяции пропущенных значений по двум соседним в пределах каждого профиля, а не в целом по профилю.

Документ-задание сокращенный из-за лимита прикрепил.
 
up
 
как-то так
 
Цитата
МатросНаЗебре написал:
как-то так
Попробовал у себя - в оригинальном файле с 38ью профилями дает ошибку 9, аут оф рэндж. Не нашел в макросе где указаны пределы.
Плюс хотелось бы, чтобы расчёт начинался на каждом профиле с того числа, с которого он начинается (столб В), а не с единицы. Возможно так сделать?
 
Цитата
Nameless950 написал:
Не нашел в макросе где указаны пределы.
Код
For iY = 2 To .Cells(Rows.Count, 1).End(xlUp).Row - 1 'перебор со второй до предпоследней строки
           
                
For iX = 3 To 5 'перебор с 3 по 5 столбец
 
МатросНаЗебре,
Цитата
Nameless950 написал:
Плюс хотелось бы, чтобы расчёт начинался на каждом профиле с того числа, с которого он начинается (столб В), а не с единицы. Возможно так сделать?
А на этот вопрос ответить?
 
РОБОТ_РОБИН, посмотрел Ваши сообщения - в основном флуд. Не старый ли знакомый пришел?
 
vikttur,
Какой? Ок сторонних постов писать не буду.
 
Котэ, флуд - это плохо.
БАН.
Страницы: 1
Читают тему
Наверх