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

Вход

Регистрация

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

 

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

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Объединение формул из нескольких ячеек в одну
Russel Дата: Понедельник, 10.03.2014, 10:35 | Сообщение № 1
Группа: Друзья
Ранг: Старожил
Сообщений: 1394
Репутация: 320 ±
Замечаний: 0% ±

Excel 2010
Добрый день!

В этот солнечный нерабочий день пришла мне в голову одна мысль, которую я постараюсь сейчас изложить.
Часто, при решении поставленной задачи, большие многоэтажные формулы сложно написать сходу, поэтому я прописываю формулы поэтапно в несколько ячеек. После получения результата, все формулы "ручками" объединяю в одной ячейке (см. наглядный пример).
Вопрос в следующем: существует ли какой нибудь автоматизированный (надстройка, макрос, что-то еще) способ объединения формул в одну "многоэтажную"?

Кросс
К сообщению приложен файл: 9377687.xlsx (9.7 Kb)


QIWI 9173973973

Сообщение отредактировал Russel - Понедельник, 10.03.2014, 10:37
 
Ответить
СообщениеДобрый день!

В этот солнечный нерабочий день пришла мне в голову одна мысль, которую я постараюсь сейчас изложить.
Часто, при решении поставленной задачи, большие многоэтажные формулы сложно написать сходу, поэтому я прописываю формулы поэтапно в несколько ячеек. После получения результата, все формулы "ручками" объединяю в одной ячейке (см. наглядный пример).
Вопрос в следующем: существует ли какой нибудь автоматизированный (надстройка, макрос, что-то еще) способ объединения формул в одну "многоэтажную"?

Кросс

Автор - Russel
Дата добавления - 10.03.2014 в 10:35
Serge_007 Дата: Понедельник, 10.03.2014, 12:14 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Нет


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеНет

Автор - Serge_007
Дата добавления - 10.03.2014 в 12:14
Russel Дата: Вторник, 11.03.2014, 08:26 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1394
Репутация: 320 ±
Замечаний: 0% ±

Excel 2010
Serge_007, VBA не позволяет просматривать содержимое формул или это очень гемор сложный путь?


QIWI 9173973973
 
Ответить
СообщениеSerge_007, VBA не позволяет просматривать содержимое формул или это очень гемор сложный путь?

Автор - Russel
Дата добавления - 11.03.2014 в 08:26
Serge_007 Дата: Вторник, 11.03.2014, 20:18 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Russel, да, достаточно сложный

Для того, что бы реализовать, то что Вы хотите, необходимо, как минимум, написать алгоритм конкатенации частей итоговой формулы. Для этого формулы предварительно надо перевести в текст. При агрегировании надо учесть синтаксис формул и функций. После конкатенации надо вычислить формулы

Вобщем, какой смысл заморачиваться, если на VBA можно сразу получить результат, не используя функции листа Excel?


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеRussel, да, достаточно сложный

Для того, что бы реализовать, то что Вы хотите, необходимо, как минимум, написать алгоритм конкатенации частей итоговой формулы. Для этого формулы предварительно надо перевести в текст. При агрегировании надо учесть синтаксис формул и функций. После конкатенации надо вычислить формулы

Вобщем, какой смысл заморачиваться, если на VBA можно сразу получить результат, не используя функции листа Excel?

Автор - Serge_007
Дата добавления - 11.03.2014 в 20:18
Russel Дата: Среда, 12.03.2014, 08:28 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1394
Репутация: 320 ±
Замечаний: 0% ±

Excel 2010
Serge_007, мало чего понимаю в алгоритмах и в VBA, спасибо Вам за ликбез!
На всякий случай, если все-таки будет "спортивный" интерес, на соседнем форуме писал алгоритм:
Как на мой взгляд должен работать макрос:
1. Выделяем ячейки, участвующие в получении результата (в приложенном примере диапазон B7:B10);
2. Макрос пробегает по всем формулам и ищет ячейку, на которую не ссылается ни одна другая (В10) Макрос спрашивает, в какой из выделенных ячеек содержится окончательный результат (в приложенном примере В10);
3. Макрос просматривает формулу в найденной указанной ячейке, и подменяет ссылки на ячейки из первоначального диапазона их содержимым (естественно, без "=");
4. п.3 повторяется несколько раз (число ячеек в первоначальном диапазоне);
5. Получившуюся в результате формулу макрос записывает в какую-нибудь ячейку, например В11.

ИМХО, синтаксис формул и функций не важен, так как в текстовой строке формулы нужно искать конкретные ссылки В7, В8, В9.


QIWI 9173973973
 
Ответить
СообщениеSerge_007, мало чего понимаю в алгоритмах и в VBA, спасибо Вам за ликбез!
На всякий случай, если все-таки будет "спортивный" интерес, на соседнем форуме писал алгоритм:
Как на мой взгляд должен работать макрос:
1. Выделяем ячейки, участвующие в получении результата (в приложенном примере диапазон B7:B10);
2. Макрос пробегает по всем формулам и ищет ячейку, на которую не ссылается ни одна другая (В10) Макрос спрашивает, в какой из выделенных ячеек содержится окончательный результат (в приложенном примере В10);
3. Макрос просматривает формулу в найденной указанной ячейке, и подменяет ссылки на ячейки из первоначального диапазона их содержимым (естественно, без "=");
4. п.3 повторяется несколько раз (число ячеек в первоначальном диапазоне);
5. Получившуюся в результате формулу макрос записывает в какую-нибудь ячейку, например В11.

ИМХО, синтаксис формул и функций не важен, так как в текстовой строке формулы нужно искать конкретные ссылки В7, В8, В9.

Автор - Russel
Дата добавления - 12.03.2014 в 08:28
Serge_007 Дата: Среда, 12.03.2014, 21:19 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Макрос просматривает формулу в найденной указанной ячейке, и подменяет ссылки на ячейки из первоначального диапазона их содержимым
Теоретически это возможно. Только какой в этом смысл?


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Макрос просматривает формулу в найденной указанной ячейке, и подменяет ссылки на ячейки из первоначального диапазона их содержимым
Теоретически это возможно. Только какой в этом смысл?

Автор - Serge_007
Дата добавления - 12.03.2014 в 21:19
Russel Дата: Четверг, 13.03.2014, 08:08 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 1394
Репутация: 320 ±
Замечаний: 0% ±

Excel 2010
Теоретически это возможно.

Отлично, будем читать литературу :D
Только какой в этом смысл?

Про смысл я писал в первом сообщении. Мне удобно большие формулы разбивать на куски-этапы вычислений, которые я потом объединяю в общую формулу, вот и хотелось как-то автоматизировать этот процесс.
Спасибо за консультацию!


QIWI 9173973973
 
Ответить
Сообщение
Теоретически это возможно.

Отлично, будем читать литературу :D
Только какой в этом смысл?

Про смысл я писал в первом сообщении. Мне удобно большие формулы разбивать на куски-этапы вычислений, которые я потом объединяю в общую формулу, вот и хотелось как-то автоматизировать этот процесс.
Спасибо за консультацию!

Автор - Russel
Дата добавления - 13.03.2014 в 08:08
Serge_007 Дата: Четверг, 13.03.2014, 21:03 | Сообщение № 8
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
большие формулы разбивать на куски-этапы вычислений, которые я потом объединяю в общую формулу
какой смысл заморачиваться, если на VBA можно сразу получить результат, не используя функции листа Excel?
Вы не ответили на вопрос ;)


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
большие формулы разбивать на куски-этапы вычислений, которые я потом объединяю в общую формулу
какой смысл заморачиваться, если на VBA можно сразу получить результат, не используя функции листа Excel?
Вы не ответили на вопрос ;)

Автор - Serge_007
Дата добавления - 13.03.2014 в 21:03
ShAM Дата: Пятница, 14.03.2014, 04:33 | Сообщение № 9
Группа: Друзья
Ранг: Старожил
Сообщений: 1347
Репутация: 249 ±
Замечаний: 0% ±

Excel 2010
Сергей, так вычисления же на листе, а не на VBA. Я тоже так часто делаю, разбиваю вычисление на этапы, как в файле у Russel-а.
Чудо-кнопка была бы очень кстати :)
 
Ответить
СообщениеСергей, так вычисления же на листе, а не на VBA. Я тоже так часто делаю, разбиваю вычисление на этапы, как в файле у Russel-а.
Чудо-кнопка была бы очень кстати :)

Автор - ShAM
Дата добавления - 14.03.2014 в 04:33
Russel Дата: Пятница, 14.03.2014, 08:42 | Сообщение № 10
Группа: Друзья
Ранг: Старожил
Сообщений: 1394
Репутация: 320 ±
Замечаний: 0% ±

Excel 2010
Вы не ответили на вопрос

Я не знаю VBA


QIWI 9173973973
 
Ответить
Сообщение
Вы не ответили на вопрос

Я не знаю VBA

Автор - Russel
Дата добавления - 14.03.2014 в 08:42
Serge_007 Дата: Пятница, 14.03.2014, 20:55 | Сообщение № 11
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
вычисления же на листе, а не на VBA
Что мешает их перенести с листа в оперативку? ;)

Чудо-кнопка была бы очень кстати
Алишер, ты VBA лучше меня знаешь, написать нужный код сможешь и сам :)

Я не знаю VBA
Понятно...


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
вычисления же на листе, а не на VBA
Что мешает их перенести с листа в оперативку? ;)

Чудо-кнопка была бы очень кстати
Алишер, ты VBA лучше меня знаешь, написать нужный код сможешь и сам :)

Я не знаю VBA
Понятно...

Автор - Serge_007
Дата добавления - 14.03.2014 в 20:55
AlexM Дата: Пятница, 14.03.2014, 23:23 | Сообщение № 12
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1129 ±
Замечаний: 0% ±

Excel 2003
Проверил только на задаче из первого сообщения
Код[vba]
Код
Sub Formula()
Dim i As Long, iFormula As String
Set rg = Selection
For i = rg.Count To 1 Step -1
        With rg.Item(i)
            iFormula = IIf(i = rg.Count, .Formula, Replace(iFormula, .Address(0, 0), Mid(.Formula, 2)))
        End With
Next i
rg.Item(rg.Count + 1).Formula = iFormula
End Sub
[/vba]
К сообщению приложен файл: 9377687_new.xls (34.0 Kb)



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.


Сообщение отредактировал AlexM - Суббота, 15.03.2014, 13:27
 
Ответить
СообщениеПроверил только на задаче из первого сообщения
Код[vba]
Код
Sub Formula()
Dim i As Long, iFormula As String
Set rg = Selection
For i = rg.Count To 1 Step -1
        With rg.Item(i)
            iFormula = IIf(i = rg.Count, .Formula, Replace(iFormula, .Address(0, 0), Mid(.Formula, 2)))
        End With
Next i
rg.Item(rg.Count + 1).Formula = iFormula
End Sub
[/vba]

Автор - AlexM
Дата добавления - 14.03.2014 в 23:23
AlexM Дата: Суббота, 15.03.2014, 20:14 | Сообщение № 13
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1129 ±
Замечаний: 0% ±

Excel 2003
Изменил код. Теперь формулу можно объединить с константами
[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]
К сообщению приложен файл: 9377687_new1.xls (39.0 Kb)



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеИзменил код. Теперь формулу можно объединить с константами
[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
Дата добавления - 15.03.2014 в 20:14
Russel Дата: Понедельник, 17.03.2014, 08:52 | Сообщение № 14
Группа: Друзья
Ранг: Старожил
Сообщений: 1394
Репутация: 320 ±
Замечаний: 0% ±

Excel 2010
AlexM, это божественно! respect
Буду тестировать, но сейчас все просто отлично hands


QIWI 9173973973
 
Ответить
СообщениеAlexM, это божественно! respect
Буду тестировать, но сейчас все просто отлично hands

Автор - Russel
Дата добавления - 17.03.2014 в 08:52
  • Страница 1 из 1
  • 1
Поиск:

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