Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Объединение формул из нескольких ячеек в одну - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
Объединение формул из нескольких ячеек в одну
AlexM Дата: Вторник, 18.03.2014, 10:55 | Сообщение № 1
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1129 ±
Замечаний: 0% ±

Excel 2003
Честно скажу, что автоматизировать такую задачу никогда не было желания.
Сложные формулы писал небольшими фрагментами, включающие одну или две функции. Так проще проверить их работу. Потом эти фрагменты объединял в одну формулу. Думаю, так делает большинство.
Желание автоматизировать объединение фрагментов формул пришло Руслану (Russel).
Свой вопрос он разместил на форуме “МИР MS EXCEL” и “ПЛАНЕТА EXCEL”. Почитав темы, увидел, что представленный на форумах алгоритм очень сложный, совсем не такой, какой использую при объединении. Я объединяю “с конца”, последовательно меняя ссылки на фрагменты формул.
Задача заинтересовала (спасибо Руслану), и захотелось реализовать этот алгоритм в коде VBA.
Вот что получилось. Макрос собирает фрагменты, а также константы (числовые и текстовые), если это необходимо, в одну формулу.
[vba]
Код
Sub Formula()
Dim i As Long, iFormula As String
Set rg = Selection
For i = rg.Count To 1 Step -1
     iFormula = IIf(i = rg.Count, rg.Item(i).Formula, Replace(iFormula, rg.Item(i).Address(0, 0), _
         IIf(Left(rg.Item(i).Formula, 1) = "=", Mid(rg.Item(i).Formula, 2), _
         IIf(IsNumeric(rg.Item(i)), rg.Item(i), """" & rg.Item(i) & """"))))
Next i
rg.Item(rg.Count + 1).Formula = iFormula
End Sub
[/vba]
Как работает. Надо выделить все ячейки, содержащие фрагменты формулы и запустить макрос. Объединенная формула будет вставлена в первой строке под выделенным диапазоном.
Тема с описанием идеи
К сообщению приложен файл: Formula.xls (22.5 Kb)



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеЧестно скажу, что автоматизировать такую задачу никогда не было желания.
Сложные формулы писал небольшими фрагментами, включающие одну или две функции. Так проще проверить их работу. Потом эти фрагменты объединял в одну формулу. Думаю, так делает большинство.
Желание автоматизировать объединение фрагментов формул пришло Руслану (Russel).
Свой вопрос он разместил на форуме “МИР MS EXCEL” и “ПЛАНЕТА EXCEL”. Почитав темы, увидел, что представленный на форумах алгоритм очень сложный, совсем не такой, какой использую при объединении. Я объединяю “с конца”, последовательно меняя ссылки на фрагменты формул.
Задача заинтересовала (спасибо Руслану), и захотелось реализовать этот алгоритм в коде VBA.
Вот что получилось. Макрос собирает фрагменты, а также константы (числовые и текстовые), если это необходимо, в одну формулу.
[vba]
Код
Sub Formula()
Dim i As Long, iFormula As String
Set rg = Selection
For i = rg.Count To 1 Step -1
     iFormula = IIf(i = rg.Count, rg.Item(i).Formula, Replace(iFormula, rg.Item(i).Address(0, 0), _
         IIf(Left(rg.Item(i).Formula, 1) = "=", Mid(rg.Item(i).Formula, 2), _
         IIf(IsNumeric(rg.Item(i)), rg.Item(i), """" & rg.Item(i) & """"))))
Next i
rg.Item(rg.Count + 1).Formula = iFormula
End Sub
[/vba]
Как работает. Надо выделить все ячейки, содержащие фрагменты формулы и запустить макрос. Объединенная формула будет вставлена в первой строке под выделенным диапазоном.
Тема с описанием идеи

Автор - AlexM
Дата добавления - 18.03.2014 в 10:55
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!