xlSetCellFormula помощь расчете

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
rozum
Посетитель
Сообщения: 49
Зарегистрирован: 18 янв 2013, 13:23

xlSetCellFormula помощь расчете

Сообщение rozum »

Добрый день! Подскажите пожалуйста как правильно прописать формулу в Vip
loop TPRN
{
есть 3 поля по которым надо произвести расчет( 6+7-9 столбцы)
......
xlDoWriteToMatrix(CurMatrixRow, 6, Round(TPRN.BegOst,2));
xlDoWriteToMatrix(CurMatrixRow, 7, TPRN.Prihod);
xlDoWriteToMatrix(CurMatrixRow, 9, TPRN.SumOpl);
....
если прописываю вот так то, считает первые три строки , а матрица начинается с 4 строки на 3 выводит шапку
xlSetCellFormula('=ОКРУГЛ(RC[-4]+RC[-3]-RC[-1];2)', CurMatrixRow, 10, CurMatrixRow , 10);

а если добавляю сдвиг то не отрабатывает вообще
xlSetCellFormula('=ОКРУГЛ(RC[-4]+RC[-3]-RC[-1];2)', CurMatrixRow + StartMatrixR, 10, CurMatrixRow + StartMatrixR , 10);
...
}

пыталась добавить расчет после
xlFreeMatrix;
xlSetCellFormula('=ОКРУГЛ(RC[-4]+RC[-3]-RC[-1];2)', CurMatrixRow + StartMatrixR-2, 10, CurMatrixRow + StartMatrixR -2 , 10); // выводит формулу на последнюю строку матрицы
а как мне добиться чтобы расчет формулы был от начала( то есть 4 строки ) и до конца последней строки вывода матрицы?
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: xlSetCellFormula помощь расчете

Сообщение Den »

Самое простое, еще раз "пробежать" цикл от строки начала вывода матрицы до размера высчитанного CurMatrixRow, где внутри делать ваше xlSetCellFormula. Не ?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: xlSetCellFormula помощь расчете

Сообщение edward_K »

1. Запись матрицы затирает все формулы. Поэтому либо ограничьте вашу матрицу по ширине до столбца с формулой, либо формулу нужно задавать после вывода матрицы.
2. Если будет какое то объединение ячеек при групповом изменении формулы, то тоже будет проблема.
По хорошему вы должны вести две переменных - строку начала таблицы, строку окончания таблицы.
Выведите их в лог. Тогда вы можете практически во всех функциях писать как .... строка_начала, столбец , строка_окончания, столбец )
отсчет идет 1. Ну а можно и в цикле позадавать.
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Re: xlSetCellFormula помощь расчете

Сообщение RAJAH »

Нельзя разве в матрицу сразу написать что-то вроде

Код: Выделить всё

xlStWriteToMatrix(i, 6, '=sum(R[-'+string(i+1)+']C:R[-2]C)');
Почему xlSetCellFormula потом делать?
rozum
Посетитель
Сообщения: 49
Зарегистрирован: 18 янв 2013, 13:23

Re: xlSetCellFormula помощь расчете

Сообщение rozum »

Спасибо! попробовала задать в vip MaxMatrixCol := 9 а формулу прописала на 10 , дальше думаю в макросе буду чего нибудь придумывать :)
rozum
Посетитель
Сообщения: 49
Зарегистрирован: 18 янв 2013, 13:23

Re: xlSetCellFormula помощь расчете

Сообщение rozum »

xlStWriteToMatrix(CurMatrixRow, 10, '=sum(RC[-4]+RC[-3]-RC[-1])');
по этой сроке отработало
не могли бы вы ещё помочь. Можно ли нелету и в расчете округлять значение?
то есть xlStWriteToMatrix(CurMatrixRow, 10, '=ОКРУГЛ(sum(RC[-4]+RC[-3]-RC[-1]);2)'); так не хочет отрабатывать :x
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: xlSetCellFormula помощь расчете

Сообщение edward_K »

все таки xlSetCellFormula<> xlStWriteToMatrix. Хотя пробуйте. Проверьте, что тип ячейки в отчете общий или числовой.
По мне так лучше держать формулы в шаблоне, либо рассчитывать сразу при выводе.
Irina_
Местный житель
Сообщения: 554
Зарегистрирован: 17 июл 2012, 11:56
Откуда: Республика Беларусь, г.Могилев

Re: xlSetCellFormula помощь расчете

Сообщение Irina_ »

Здравствуйте.
1.
xlDoWriteToMatrix(CurMatrixRow, 6, Round(TPRN.BegOst,2));
xlDoWriteToMatrix(CurMatrixRow, 7, Round(TPRN.Prihod,2));
xlDoWriteToMatrix(CurMatrixRow, 9, Round(TPRN.SumOpl,2)); 
2.
Установите нужный формат вывода для нужного столбца
3.
Вместо
 xlStWriteToMatrix(CurMatrixRow, 10, '=ОКРУГЛ(sum(RC[-4]+RC[-3]-RC[-1]);2)');
попробуйте:
 xlStWriteToMatrix(CurMatrixRow, 10, '=ОКРУГЛ(СУММ(RC[-4]+RC[-3]-RC[-1]);2)');
rozum
Посетитель
Сообщения: 49
Зарегистрирован: 18 янв 2013, 13:23

Re: xlSetCellFormula помощь расчете

Сообщение rozum »

Спасибо всем за помощь расчет формулы прошел по
xlStWriteToMatrix(CurMatrixRow, 10, '=sum(ROUND(RC[-4]+RC[-3]-RC[-1],2))');
Ответить