VetCAD

Интерполяция таблиц и по строкам и по столбцам одновременно. экстраполяция Excel vba

    1 оценка

Петр-и-Алекс

размещено: 31 Января 2021
обновлено: 31 Января 2021
Excel vba
Линейная интерполяция и экстраполяция таблицы (прямоугольного набора ячеек Excel).
Приложен стандартный модуль vba Excel, содержащий функцию интерполяции interpol_sc (и еще две дополнительных).
Особенности функции:
- таблица может содержать и числовые, и текстовые поля. Но при этом "тексты" должны иметь возможность интерпретации как числа
- десятичным разделителем в записи может служить и точка, и запятая
- порядок возрастания\убывания строк\столбцов в таблице для функций значения не имеет
- минимальное количество аргументов. По умолчанию - их всего три: "число в строке", "число в столбце" и "таблица"
- функции позволяют искать "число" и в первой и в последней строках\столбцах таблицы
- функции представлены в текстах vba, не запаролены, не компилированы.

Функции интерполяции только в строке и только в столбце, опубликованы тут
https://forum.dwg.ru/showthread.php?t=160479

Комментарии

Комментарии могут оставлять только зарегистрированные участники
Авторизоваться
Комментарии 1-10 из 27
Сергей812 , 01 февраля 2021 в 03:49
#1
Если в качестве аргумента tabl укажете одну ячейку - то словите runtime error на первой же LBound )
И зачем три символа признака комментария подряд?
Петр-и-Алекс , 01 февраля 2021 в 10:43
#2
Вы правы. так же должна быть ошибка и при задании в качестве "таблицы" одной строки или одного столбца.
Три метки "коммент" подряд сложилось исторически, можно сказать "почерк авторов". Особого смысла нет.
Изначально бывало что один случайно стирался. Позднее было замечено удобство: что три знака - это постоянный коммент, один - отладочное состояние текста. Соответственно комменты с одним знаком вычищаются не думая. Как то так
Сергей812 , 01 февраля 2021 в 11:13
#3
Так должна быть не просто ошибка, а пользовательская ошибка с конкретным сообщением типа: Задана ячейка вместо таблицы!

И если в какой то ячейке не число - тоже нужно сообщить об этом пользователю. Этим и отличаются нормальные библиотеки функций от просто нагромождения кода - документирование (пример показывал с теми же аргументами), выдача осмысленных ошибок пользователю и т.д. Иными словами, пользователь не должен лазать с отладчиком еще и по библиотеке функций без крайней на то необходимости.
Петр-и-Алекс , 01 февраля 2021 в 12:09
#4
Вы начинаете с критики, вместо того чтобы похвалить хотя бы за инициативу...
Сергей812 , 01 февраля 2021 в 13:18
#5
инициатива по увеличению количества "слепого" кода на просторах инета?) Ребята, хотите выйти на заказ макросов - на здоровье... только с чего вы решили, что вам при этом будет красная дорожка выстлана?)
Петр-и-Алекс , 01 февраля 2021 в 17:03
#6
Сергей, не городите чушь. Я запостил 4 функции, которых лично мне не хватало по жизни. Я филантроп в данном случае.
А вы сразу пишите дичь дикую, типа "а что будет, если вместо "таблицы" подставить не "таблицу?" - ошибка будет, дураку ясно.
Петр-и-Алекс , 01 февраля 2021 в 17:05
#7
Между прочим, мои посты не имеют аналогов на этом сайте. хотя правду сказать, кроме ваших придирок иных откликов нет вообще...
andriadi , 02 февраля 2021 в 10:22
#8
Было бы замечательно привести пример, как пользоваться функцией. =interpol_sc(5;3;B4:G7)? Строка 5, столбец 3, диапазон таблицы поиска, а где искомый аргумент?
Петр-и-Алекс , 02 февраля 2021 в 11:35
#9
Цитата:
Сообщение #8 от andriadi

Было бы замечательно привести пример, как пользоваться функцией. =interpol_sc(5;3;B4:G7)? Строка 5, столбец 3, диапазон таблицы поиска, а где искомый аргумент?

Понятно. Ваша запись расшифровывается так:
найти значение на пересечении значения 5 в первой строке и значения 3 в первом столбце таблицы B4:G7.
запись =interpol_sc(5;3;"massa";-1;-1)будет означать:
найти значение на пересечении значения 5 в последней строке и значения 3 в последнем столбце таблицы, названной "massa".
Петр-и-Алекс , 02 февраля 2021 в 11:44
#10
Забыл добавить:
… с интерполяцией. А в случае выхода за пределы определения - с экстраполяцией.
Это лайт версия функции. Здесь нет контроля, выхода за пределы определения. На этот случай - только экстраполяция.
Но. думаю, и в таком виде будет польза.
zip

0.1 МБ

СКАЧАТЬ