| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			R1C1 Excel
			 
			
			Всем привет. 
		
		
		
		
		
		
		
		
			Возникла следующая проблема. Выгружаю отчет в Excel. В конце делаю строку ИТОГО по определенным кретериям(т.е. чтоб суммировались только нужные мне ечейки), на несколько столбцов. Список нужных мне ячеек я нашел. Начинаю вставлять формулу в ячеки: X++: range = _wkSheet.Range(strfmt('F%1:Q%1', _row + counter));
range.FormulaR1C1(string));X++: =(R[-204]C;R[-199]C;R[-194]C;R[-189]C;R[-184]C;R[-179]C;R[-174]C;R[-169]C; R[-164]C;R[-159]C;R[-154]C;R[-149]C;R[-144]C;R[-139]C;R[-134]C;R[-129]C;R[-124]C; R[-119]C;R[-114]C;R[-109]C;R[-99]C;R[-94]C;R[-89]C;R[-84]C;R[-79]C;R[-74]C;R[-69]C; R[-64]C;R[-59]C;R[-54]C;R[-49]C;R[-44]C;R[-39]C;R[-34]C;R[-29]C;R[-24]C;R[-19]C;R[-14]C) ![]() ВСЁ вставляется хорошо если эта строока не такая длинная. К примеру строка: X++: =(R[-204]C;R[-199]C;R[-194]C;R[-189]C;R[-184]C;R[-179]C;R[-174]C;R[-169]C; R[-164]C;R[-159]C;R[-154]C;R[-149]C;R[-144]C;R[-139]C;R[-134]C;R[-129]C;R[-124]C; R[-119]C;R[-114]C;R[-109]C;R[-99]C;R[-94]C;R[-89]C;R[-84]C;R[-79]C;R[-74]C;R[-69]C;R[-64]C;R[-59]C;R[-54]C) Но стоит добавить еще один элемент: X++: =(R[-204]C;R[-199]C;R[-194]C;R[-189]C;R[-184]C;R[-179]C;R[-174]C;R[-169]C; R[-164]C;R[-159]C;R[-154]C;R[-149]C;R[-144]C;R[-139]C;R[-134]C;R[-129]C;R[-124]C; R[-119]C;R[-114]C;R[-109]C;R[-99]C;R[-94]C;R[-89]C;R[-84]C;R[-79]C;R[-74]C;R[-69]C;R[-64]C;R[-59]C;R[-54]C;R[-49]C) Не ужели есть какоето ограничение на длину формулы R1C1. PS: Элементы в формуле менял местами, ошибка оставалась т.е. дело не в данных. ********************* Использую 2010 Офис В последствие выяснилось, что на 2007 такой ошибки нет! Последний раз редактировалось Proba; 20.07.2010 в 06:20.  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			От без исходности переписал формулу. под конкретный столбец(что не очень удобно, куча всяких циклов). 
		
		
		
		
		
		
		
		
			НО, тем не менее ошибка повторяется. Так она есть: X++: =(F17;F22;F27;F32;F37;F42;F47;F52;F57;F62;F67;F72;F77;F82;F87;F92;F97;F102; F107;F112;F122;F127;F132;F137;F142;F147;F152;F157;F162;F167;F172) X++: =(F17;F22;F27;F32;F37;F42;F47;F52;F57;F62;F67;F72;F77;F82;F87;F92;F97;F102; F107;F112;F122;F127;F132;F137;F142;F147;F152;F157;F162;F167) Что за бред???  
		Последний раз редактировалось Proba; 20.07.2010 в 06:04.  | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Нашлась проблема, вручную вставляю это строку в ячейку и получаю сообщение: 
		
		
		
		
		
		
		
		
			"Что слишком большое значение для данного формата файла" ![]() У меня 2010 офис Только что проверил на 2007 все ОК! Во дела! Че делать?  
		Последний раз редактировалось Proba; 20.07.2010 в 06:13.  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			наверно 2010 Бета  с глюками  
		
		
		
		
		
		
		
	а 2007 нормальная  | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			У ж не знаю к счастью или нет, 2010 офис лицензионный  
		
		
		
		
		
		
		
	 
		 | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Ответ на самом деле очень прост. В Excel существует ограничение на количество аргументов функций - не более 30. Посчитайте кол-во слагаемых в ваших функциях СУММ и всё станет понятно. Если надо сложить более 30 аргументов, то делите на несколько формул по 30. 
		
		
		
		
		
		
		
		
			P.S. Сейчас побродил по Интернету, выяснил, что, начиная с Excel 2007, максимальное кол-во аргументов увеличено с 30 до 255. НО! Это справедливо только для нового формата файла c расширением *.xlsx. Если же вы, как и я, сплошь и рядом еще работаете с файлами предыдущих версий *.xls, то поэтому и натыкаетесь на ограничение 30. Последний раз редактировалось Gustav; 20.07.2010 в 10:04.  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: Alexanderrrr (1). | |
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Про ограничение в 30 это я понял. Но все таки надеялся на лучшее, и что не придется делить формулы.  
		
		
		
		
		
		
		
	![]() В итоге пользуюсь вашей рекомендацией: X++: =(K16;K21; .. 30 )+ (K166;K171; .. 30 )  
		 | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Прочитайте еще мой постскриптум выше. В этом дело было с 2010 ? Файл *.xls?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Ага, верно! Мой шаблон оказывается 2003 формата!  
		
		
		
		
		
		
		
	  Пересохранил в .xlsx и все тип топ!!! ![]() Спасибо  
		 | 
| 
	
 | 
| Теги | 
| excel | 
| 
	
	 | 
	
		
  |