Итак, есть большая книга Excel в которой более 1000 строк, во многих из них содержаться формулы типа: =СУММ(F19;F20;F37;F38) или =СУММ(F40:F59). Необходимо их преобразовать к простому виду: =F19+F20+F37+F38 или =F40+F41+F42+...+F59 Т.е. необходимо "развернуть" диапазоны, чтобы в формуле были перечислены ВСЕ ячейки без, сокращений (ну в моем случае ещё и без перечисления через ; ) Какие есть варианты решения данной проблемы? (средствами самого Excel или при помощи макроса) p.s. вручную все переделывать не вариант(
Итак, есть большая книга Excel в которой более 1000 строк, во многих из них содержаться формулы типа: =СУММ(F19;F20;F37;F38) или =СУММ(F40:F59). Необходимо их преобразовать к простому виду: =F19+F20+F37+F38 или =F40+F41+F42+...+F59 Т.е. необходимо "развернуть" диапазоны, чтобы в формуле были перечислены ВСЕ ячейки без, сокращений (ну в моем случае ещё и без перечисления через ; ) Какие есть варианты решения данной проблемы? (средствами самого Excel или при помощи макроса) p.s. вручную все переделывать не вариант(der_loony
Serge_007, В моём случае необходимо решение только функции СУММ.
Michael_S, Отчёт из Excel будет в дальнейшем конвертироваться в xml с учётом определённой схемы данных, но проблема в том что ковертор не понимает сложные формулы, где используются функции и знаки : ;
Serge_007, В моём случае необходимо решение только функции СУММ.
Michael_S, Отчёт из Excel будет в дальнейшем конвертироваться в xml с учётом определённой схемы данных, но проблема в том что ковертор не понимает сложные формулы, где используются функции и знаки : ;der_loony
Что это значит? Если макросы разрешены - то всё работать будет
Quote (der_loony)
получается перед всеми формулами надо одинарную ковычку ставить?
Вообще не понял о чём речь... Зачем?! Я кавычку (на самом деле это апостроф) поставил, что б Вы видели какая формула преобразуется ( текст в С1 можно вообще удалить, он не принимает участия в вычислениях)
ЗЫ
Quote (der_loony)
перед всеми формулами надо одинарную ковычку ставить? Оо
Кстати, даже если бы это было необходимо, то заняло бы это не более пары секунд. Ctrl+H, найти "=", заменить на "'=", заменить все, ОК
Quote (der_loony)
Открыл файл, макросов там не обнаружил
Неудивительно, их и нет в файле
Quote (der_loony)
то что есть работать отказывается
Что это значит? Если макросы разрешены - то всё работать будет
Quote (der_loony)
получается перед всеми формулами надо одинарную ковычку ставить?
Вообще не понял о чём речь... Зачем?! Я кавычку (на самом деле это апостроф) поставил, что б Вы видели какая формула преобразуется ( текст в С1 можно вообще удалить, он не принимает участия в вычислениях)
ЗЫ
Quote (der_loony)
перед всеми формулами надо одинарную ковычку ставить? Оо
Кстати, даже если бы это было необходимо, то заняло бы это не более пары секунд. Ctrl+H, найти "=", заменить на "'=", заменить все, ОКSerge_007
Спасибо, вроде разобрался Но вот не понял: что значит в тексте значение "формула", т.е. что оно ссылается на ячейку А1, но как этот шайтан механизм притянуть ко всем остальным случаям?
Спасибо, вроде разобрался Но вот не понял: что значит в тексте значение "формула", т.е. что оно ссылается на ячейку А1, но как этот шайтан механизм притянуть ко всем остальным случаям?der_loony
решить эту задачу формулами можно только при условии конкретного вида "СУММ", причем только с несвязанными одиночными ячейками. можно сделать макросами, но, навскидку, не совсем просто - имеется ввиду макрос, который бы обрабатывал абсолютно любой вид "СУММ".
решить эту задачу формулами можно только при условии конкретного вида "СУММ", причем только с несвязанными одиночными ячейками. можно сделать макросами, но, навскидку, не совсем просто - имеется ввиду макрос, который бы обрабатывал абсолютно любой вид "СУММ".Саня
Sub Macros() For Each cell In Range("A1:A10") 'A1:A10 диапазон с формулами aa = cell.Formula s1 = InStr(aa, "(") + 1 s2 = InStr(aa, ")") IRange = Mid(aa, s1, s2 - s1) rr = "" If InStr(aa, ":") Then For Each icell In Range(IRange) rr = rr & "+" & Application.ConvertFormula(icell.Address, xlA1, xlA1, xlRelative) Next Else rr = "+" & Replace(IRange, ",", "+") End If cell.Formula = "=" & Mid(rr, 2) Next End Sub
[/vba]
Мне на гугло-ответах предложили такой вариант, только либо он не рабочий, либо у меня его отладить не получается(
Quote (Саня)
можно сделать макросами
[vba]
Code
Sub Macros() For Each cell In Range("A1:A10") 'A1:A10 диапазон с формулами aa = cell.Formula s1 = InStr(aa, "(") + 1 s2 = InStr(aa, ")") IRange = Mid(aa, s1, s2 - s1) rr = "" If InStr(aa, ":") Then For Each icell In Range(IRange) rr = rr & "+" & Application.ConvertFormula(icell.Address, xlA1, xlA1, xlRelative) Next Else rr = "+" & Replace(IRange, ",", "+") End If cell.Formula = "=" & Mid(rr, 2) Next End Sub
[/vba]
Мне на гугло-ответах предложили такой вариант, только либо он не рабочий, либо у меня его отладить не получается(der_loony
К сожалению не могу выложить исходный файл из-за вопроса его конфиденциальности До этого решал проблему тем, что руками в коде задавал просматриваемый диапазон ячеек и диапазон их замены) (коряво конечно, но как способ) ЗЫ. Сорри за долгое молчание и корявые формулировки
Вообще отлично)
К сожалению не могу выложить исходный файл из-за вопроса его конфиденциальности До этого решал проблему тем, что руками в коде задавал просматриваемый диапазон ячеек и диапазон их замены) (коряво конечно, но как способ) ЗЫ. Сорри за долгое молчание и корявые формулировкиder_loony