Во вложении пример результата работы команды СЦЕПИТЬ. Она в нужной мне ячейке (Р15) создаёт правильную текстовую последовательность, которая в последующем должна использоваться для переноса в другую программу. При переносе в другую программу копируется не её значение, а только формула, и чтобы всё сработало правильно нужно копировать ячейку, использовать специальную вставку значения формулы, например в ячейку (Р16), и уже из неё сделать перенос текстовой строки в другую программу. Это неудобно, т.к. данных в таблице будет много и они будут часто динамически меняться. Можно ли автоматизировать процесс перевода результата работы формулы в его значение? Спасибо
Во вложении пример результата работы команды СЦЕПИТЬ. Она в нужной мне ячейке (Р15) создаёт правильную текстовую последовательность, которая в последующем должна использоваться для переноса в другую программу. При переносе в другую программу копируется не её значение, а только формула, и чтобы всё сработало правильно нужно копировать ячейку, использовать специальную вставку значения формулы, например в ячейку (Р16), и уже из неё сделать перенос текстовой строки в другую программу. Это неудобно, т.к. данных в таблице будет много и они будут часто динамически меняться. Можно ли автоматизировать процесс перевода результата работы формулы в его значение? Спасибоalex_tm
Предлагаю вариант с макросом. Повесила его на клавиши ctrl+shift+Z Переводит формулы выделенного диапазона в значения. [vba]
Код
Sub ValueFromFormula() Application.ScreenUpdating = False Dim rRng As Range, rArea As Range i = 1 If Selection.Count = 1 Then Set rRng = ActiveCell Else Set rRng = Selection.SpecialCells(12) End If For Each rArea In rRng.Areas rArea.Value = rArea.Value i = i + 1 Next rArea Application.ScreenUpdating = True End Sub
[/vba]
Предлагаю вариант с макросом. Повесила его на клавиши ctrl+shift+Z Переводит формулы выделенного диапазона в значения. [vba]
Код
Sub ValueFromFormula() Application.ScreenUpdating = False Dim rRng As Range, rArea As Range i = 1 If Selection.Count = 1 Then Set rRng = ActiveCell Else Set rRng = Selection.SpecialCells(12) End If For Each rArea In rRng.Areas rArea.Value = rArea.Value i = i + 1 Next rArea Application.ScreenUpdating = True End Sub
Manyasha! Спасибо за быстрый ответ! Макрос работает, но он забивает своим результатом строку с формулой, которая ещё будет нужна для работы в последующем. К тому же, в примере только одна строка, а на самом деле - таблица будет намного больше и данных в ней тоже будет много. Я готов потратить время на выделение нужной ячейки, нажатие комбинации клавиш, которая переведёт значение в нужный мне текстовый формат, но уже после нескольких десятков таких манипуляций (а их может быть сотни) процесс окажется слишком утомительным. Может быть есть что-то более автоматизированное? Спасибо.
Manyasha! Спасибо за быстрый ответ! Макрос работает, но он забивает своим результатом строку с формулой, которая ещё будет нужна для работы в последующем. К тому же, в примере только одна строка, а на самом деле - таблица будет намного больше и данных в ней тоже будет много. Я готов потратить время на выделение нужной ячейки, нажатие комбинации клавиш, которая переведёт значение в нужный мне текстовый формат, но уже после нескольких десятков таких манипуляций (а их может быть сотни) процесс окажется слишком утомительным. Может быть есть что-то более автоматизированное? Спасибо.alex_tm
Sub ValueFromFormula() Application.ScreenUpdating = False Dim rRng As Range 'копируем вправо Selection.Offset(0, Selection.Columns.Count + 2).Value = Selection.Value 'копируем вниз 'Selection.Offset(Selection.Rows.Count+2).Value = Selection.Value Application.ScreenUpdating = True End Sub
[/vba] Работает только на смежных диапазонах, в отличие от предыдущего макроса, копирует значения со сдвигом на 2 ячейки вправо (или вниз - под комментами)
[p.s.]Кстати, i=1, i=i+1 в предыдущем макросе можно убрать, они остались от каких-то переделок[/p.s.]
Sub ValueFromFormula() Application.ScreenUpdating = False Dim rRng As Range 'копируем вправо Selection.Offset(0, Selection.Columns.Count + 2).Value = Selection.Value 'копируем вниз 'Selection.Offset(Selection.Rows.Count+2).Value = Selection.Value Application.ScreenUpdating = True End Sub
[/vba] Работает только на смежных диапазонах, в отличие от предыдущего макроса, копирует значения со сдвигом на 2 ячейки вправо (или вниз - под комментами)
[p.s.]Кстати, i=1, i=i+1 в предыдущем макросе можно убрать, они остались от каких-то переделок[/p.s.]Manyasha