20.07.2010, 05:13 | #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. |
|
20.07.2010, 06:01 | #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. |
|
20.07.2010, 06:09 | #3 |
Участник
|
Нашлась проблема, вручную вставляю это строку в ячейку и получаю сообщение:
"Что слишком большое значение для данного формата файла" У меня 2010 офис Только что проверил на 2007 все ОК! Во дела! Че делать? Последний раз редактировалось Proba; 20.07.2010 в 06:13. |
|
20.07.2010, 09:16 | #4 |
Участник
|
наверно 2010 Бета с глюками
а 2007 нормальная |
|
20.07.2010, 09:29 | #5 |
Участник
|
У ж не знаю к счастью или нет, 2010 офис лицензионный
|
|
20.07.2010, 09:33 | #6 |
Moderator
|
Ответ на самом деле очень прост. В Excel существует ограничение на количество аргументов функций - не более 30. Посчитайте кол-во слагаемых в ваших функциях СУММ и всё станет понятно. Если надо сложить более 30 аргументов, то делите на несколько формул по 30.
P.S. Сейчас побродил по Интернету, выяснил, что, начиная с Excel 2007, максимальное кол-во аргументов увеличено с 30 до 255. НО! Это справедливо только для нового формата файла c расширением *.xlsx. Если же вы, как и я, сплошь и рядом еще работаете с файлами предыдущих версий *.xls, то поэтому и натыкаетесь на ограничение 30. Последний раз редактировалось Gustav; 20.07.2010 в 10:04. |
|
|
За это сообщение автора поблагодарили: Alexanderrrr (1). |
20.07.2010, 10:07 | #7 |
Участник
|
Про ограничение в 30 это я понял. Но все таки надеялся на лучшее, и что не придется делить формулы.
В итоге пользуюсь вашей рекомендацией: X++: =(K16;K21; .. 30 )+ (K166;K171; .. 30 ) |
|
20.07.2010, 10:10 | #8 |
Moderator
|
Прочитайте еще мой постскриптум выше. В этом дело было с 2010 ? Файл *.xls?
|
|
20.07.2010, 10:16 | #9 |
Участник
|
Ага, верно! Мой шаблон оказывается 2003 формата! Пересохранил в .xlsx и все тип топ!!!
Спасибо |
|
Теги |
excel |
|
|