excel. формулы. длинные формулы

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

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

Ответить
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

excel. формулы. длинные формулы

Сообщение Masygreen »

Итак сабж. Есть файл excel его набиваем данными. Данных очень много .. надо очень хитро посчитать итоги и не просто посчитать, а забить формулой - типа для возможного редактирования.
Формулы будут длинные .. явно > 256 символов ... идеи?
мысли засунуть каждую вычисляемую ячейку в файл, а потом импортнуть макросом, но как потом задать тип ячейки формула .. хм . . хочется красивого решения с некоторым примером кода что-ле ..
Время ведет!
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: excel. формулы. длинные формулы

Сообщение edward_K »

Я написал макрос с параметрами и им добавлял.

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

    if formula_0<>'='
    {  xlSetCellFormula(formula_0,wexrow,2,wexrow,30)
    
       if formula_01<>''
       { var ww_bas :string;
         ww_bas:=GetStringParameter('Files','OutputFilesDirectory',0)
           +'\!tmp.bas'
         if fileExist(ww_bas) deletefile(ww_bas)
         logstrtofile(ww_bas,'')
         logstrtofile(ww_bas,'Sub AddFormula(ss As String, row As Integer, col As Integer)')
         logstrtofile(ww_bas,'  Cells(row, col).FormulaR1C1 = Cells(row, col).FormulaR1C1 & ss')
         logstrtofile(ww_bas,'End Sub')

         xlImportModule(ww_bas)
         for(wexcol:=2;wexcol<=30;wexcol++)
           xlRunMacro('AddFormula'+    '('+formula_01+','+string(wexrow)+','+string(wexcol)+')' )
       }    
    }
Формат ячеек ест. делаете общий. Поскольку вызов макроса медленная процедура, то сначала формулу задаете через xlSetCellFormula(formula_0,wexrow,2,wexrow,30) , а если длиннее чем 255 символов, то макросом. Формулы удобней задавать в RC. В идеале у вас должен быть массив строк - как только длина строки + изм.формулы превысит 250 символов, увеличиваете размерность массива и номер заполняемого элемента.
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Re: excel. формулы. длинные формулы

Сообщение Masygreen »

edward_K писал(а): В идеале у вас должен быть массив строк - как только длина строки + изм.формулы превысит 250 символов, увеличиваете размерность массива и номер заполняемого элемента.
ну поскольку хз сколько там элементов .. то будем времянку юзать .. спасибо.. будем думать ..
ЗЫ.Выстрел в воздух... когда уже будет поддержка длинных строк ((
Время ведет!
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: excel. формулы. длинные формулы

Сообщение edward_K »

Поддержка длинных строк есть, но не для формул и не для матричного вывода - xlAddCellStringValue и xlGetCellSubStringValue. А переменные с типом строка в галке - да не более 255 символов. Могли бы кончено сделать с типом variant и для длинных строк писать из мемо-поля.
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Re: excel. формулы. длинные формулы

Сообщение Masygreen »

edward_K писал(а):Поддержка длинных строк есть, но не для формул и не для матричного вывода - xlAddCellStringValue и xlGetCellSubStringValue. А переменные с типом строка в галке - да не более 255 символов. Могли бы кончено сделать с типом variant и для длинных строк писать из мемо-поля.
ну да я знаю .. запросы вон в longint пишут .. раз уж движок не держит string over 255 давно уже надо было вводить понятие типа longstring и потихоньку вводить его в функционал ... (ожидаем финансирования ыыыыыы)
Время ведет!
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Re: excel. формулы. длинные формулы

Сообщение Алексей »

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

Re: excel. формулы. длинные формулы

Сообщение edward_K »

Надо подумать. чтобы формула не была больше. И зачем именно формула - вы же можете и значение подставить.
Вообще длинные формулы лучше держать в шаблонах. И попробуйте = добавить в первую строку - а вдруг прокатит?
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Re: excel. формулы. длинные формулы

Сообщение Алексей »

Обошелся формулой СУММЕСЛИМН
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: excel. формулы. длинные формулы

Сообщение edward_K »

Вообще наверное прокатит первую строку записать как формулу, а последующие через функцию добавления подстрок.
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Re: excel. формулы. длинные формулы

Сообщение Алексей »

Тоже думал над этим вариантом, но пока думал и искал доку по экселю, натолкнулся на эту формулу :) Формула получается в разы короче.
Хотя на будущее учту, что есть функция добавления подстроки в ячейку. Вопрос, можно ли этой функция корректировать формулу, т.к. она звучит как xlAddCellStringValue
Ответить