excel. формулы. длинные формулы
Модераторы: m0p3e, edward_K, Модераторы
-
- Местный житель
- Сообщения: 1089
- Зарегистрирован: 04 сен 2008, 11:27
- Откуда: Москва
- Контактная информация:
excel. формулы. длинные формулы
Итак сабж. Есть файл excel его набиваем данными. Данных очень много .. надо очень хитро посчитать итоги и не просто посчитать, а забить формулой - типа для возможного редактирования.
Формулы будут длинные .. явно > 256 символов ... идеи?
мысли засунуть каждую вычисляемую ячейку в файл, а потом импортнуть макросом, но как потом задать тип ячейки формула .. хм . . хочется красивого решения с некоторым примером кода что-ле ..
Формулы будут длинные .. явно > 256 символов ... идеи?
мысли засунуть каждую вычисляемую ячейку в файл, а потом импортнуть макросом, но как потом задать тип ячейки формула .. хм . . хочется красивого решения с некоторым примером кода что-ле ..
Время ведет!
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: excel. формулы. длинные формулы
Я написал макрос с параметрами и им добавлял.
Формат ячеек ест. делаете общий. Поскольку вызов макроса медленная процедура, то сначала формулу задаете через xlSetCellFormula(formula_0,wexrow,2,wexrow,30) , а если длиннее чем 255 символов, то макросом. Формулы удобней задавать в RC. В идеале у вас должен быть массив строк - как только длина строки + изм.формулы превысит 250 символов, увеличиваете размерность массива и номер заполняемого элемента.
Код: Выделить всё
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)+')' )
}
}
-
- Местный житель
- Сообщения: 1089
- Зарегистрирован: 04 сен 2008, 11:27
- Откуда: Москва
- Контактная информация:
Re: excel. формулы. длинные формулы
ну поскольку хз сколько там элементов .. то будем времянку юзать .. спасибо.. будем думать ..edward_K писал(а): В идеале у вас должен быть массив строк - как только длина строки + изм.формулы превысит 250 символов, увеличиваете размерность массива и номер заполняемого элемента.
ЗЫ.Выстрел в воздух... когда уже будет поддержка длинных строк ((
Время ведет!
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: excel. формулы. длинные формулы
Поддержка длинных строк есть, но не для формул и не для матричного вывода - xlAddCellStringValue и xlGetCellSubStringValue. А переменные с типом строка в галке - да не более 255 символов. Могли бы кончено сделать с типом variant и для длинных строк писать из мемо-поля.
-
- Местный житель
- Сообщения: 1089
- Зарегистрирован: 04 сен 2008, 11:27
- Откуда: Москва
- Контактная информация:
Re: excel. формулы. длинные формулы
ну да я знаю .. запросы вон в longint пишут .. раз уж движок не держит string over 255 давно уже надо было вводить понятие типа longstring и потихоньку вводить его в функционал ... (ожидаем финансирования ыыыыыы)edward_K писал(а):Поддержка длинных строк есть, но не для формул и не для матричного вывода - xlAddCellStringValue и xlGetCellSubStringValue. А переменные с типом строка в галке - да не более 255 символов. Могли бы кончено сделать с типом variant и для длинных строк писать из мемо-поля.
Время ведет!
-
- Местный житель
- Сообщения: 2896
- Зарегистрирован: 24 июн 2005, 12:12
- Откуда: Иркутская область
Re: excel. формулы. длинные формулы
Ну вот и я приплыл к значению количества символов в формуле больше 255...ничего нового там не напридумывали? Не хочется макросом пользоваться.
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: excel. формулы. длинные формулы
Надо подумать. чтобы формула не была больше. И зачем именно формула - вы же можете и значение подставить.
Вообще длинные формулы лучше держать в шаблонах. И попробуйте = добавить в первую строку - а вдруг прокатит?
Вообще длинные формулы лучше держать в шаблонах. И попробуйте = добавить в первую строку - а вдруг прокатит?
-
- Местный житель
- Сообщения: 2896
- Зарегистрирован: 24 июн 2005, 12:12
- Откуда: Иркутская область
Re: excel. формулы. длинные формулы
Обошелся формулой СУММЕСЛИМН
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: excel. формулы. длинные формулы
Вообще наверное прокатит первую строку записать как формулу, а последующие через функцию добавления подстрок.
-
- Местный житель
- Сообщения: 2896
- Зарегистрирован: 24 июн 2005, 12:12
- Откуда: Иркутская область
Re: excel. формулы. длинные формулы
Тоже думал над этим вариантом, но пока думал и искал доку по экселю, натолкнулся на эту формулу Формула получается в разы короче.
Хотя на будущее учту, что есть функция добавления подстроки в ячейку. Вопрос, можно ли этой функция корректировать формулу, т.к. она звучит как xlAddCellStringValue
Хотя на будущее учту, что есть функция добавления подстроки в ячейку. Вопрос, можно ли этой функция корректировать формулу, т.к. она звучит как xlAddCellStringValue