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