Макрос для расчета нагрузки квартир в OpenOffice Calc

Автор KSumatokhin, Вчера в 22:51

0 Пользователи и 1 гость просматривают эту тему.

KSumatokhin

Здравствуйте!

Подскажите макрос для такой функции:

Есть таблица по определенному пути, например:
"G:\Работа\LISP\BD\Удельная_нагрузка_квартир.ods"
В таблице есть диапазоны данных например: "$Газ.$A$1:$D$17", "$Элк.$A$1:$D$17"
Сами данные подобного рода:
0    0    4,500    0
1    4,5    0,000    4,5
5    4,5    -1,700    13
6    2,8    -0,167    3,8
9    2,3    -0,100    3,2
12    2    -0,067    2,8
15    1,8    -0,050    2,55
...
Пример:
Нужно получить мощность для 13 квартир с газовыми плитами,
для этого нужно обратится к диапазону "$Газ.$A$1:$D$17",
далее найти в первом столбце ближайшее меньшее к 13 -
это значение 12, определить строку для этой позиции -
это строка №6, далее определить такие переменные для этой строки:
k = -0,067 (для столбца 3)
b = 2,8 (для столбца 4)
на выходе функции получить значение k*13+b

Если нужно получить мощность для 13 квартир с электроплитами,
то диапазон меняется на "$Элк.$A$1:$D$17"
Соответственно две функции gasflat() и elecflat()

bigor

А формулой не устроит?
=IF(D2="Газовые плиты";VLOOKUP(B2;$Газ.A1:D17;3;1)*B2+VLOOKUP(B2;$Газ.A1:D17;4;1);VLOOKUP(B2;$Элк.A1:D17;3;1)*B2+VLOOKUP(B2;$Элк.A1:D17;4;1))
Поддержать наш форум можно здесь

KSumatokhin

#2
bigor,
нет формулой не устроит,
потому что я это делаю в целях оптимизации, у меня сейчас все это делается формулой.
Проблема вот в чем, я бы хотел иметь отдельный файл с базой, с подобными таблицами,
таких табличек с данными предостаточно для моей работы, так вот, отдельный файл с базой,
и рабочий файл с расчетами, таких рабочих файлов может быть очень много, несколько файлов
для каждого проекта.
Поэтому было бы замечательно иметь возможность иметь единую формулу,
которую использовать во всех своих файлах, макрос мог бы как раз обращаться к конкретному файлу
и извлекать из него информацию, которую ели надо, можно менять!
Сейчас же уменя все мои "базы таблички"  проименнованы и лежат на отдельном листе каждого
рабочего файла. Все работает, но нет единого источника, и если нужно внести изменения, то возникает
путаница.
Ну и потом, согласитесь, что формула "=GASFLAT(B2)" куда лучше смотрится и применяется, еще ее
можно копировать из листа в лист, из файла в файл, и указывать всего одну ячейку для расчета.
В общем, я попытался объяснить почему мне надо так, это развитие моей таблицы, за формулу спасибо,
но мне нужно другое.