Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / помощь в Excel (вычислять результат текстовой формулы) / 16 сообщений из 16, страница 1 из 1
22.07.2006, 08:11:30
    #33871603
Zoya2006
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помощь в Excel (вычислять результат текстовой формулы)
подскажите, с помощью какой функции Excel можно вычислять результат текстовой формулы, введенной в другую ячейку. например в А1 ввожу "1+5-14*48" и хочу чтобы в В1 вычислялся результат "-246" (без ввода "=1+5-14*48"
т.е моя задача, что бы в А1 был текс формулы, а в В1 - результат вычислений
...
Рейтинг: 0 / 0
24.07.2006, 06:28:04
    #33872679
Трурль
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помощь в Excel (вычислять результат текстовой формулы)
Может быть, есть что-нибудь встроенное (Вы ведь смотрели в справочном руководстве?). А так - надо все ручками.

Написать собственную VBA-функцию и - вперед.
...
Рейтинг: 0 / 0
24.07.2006, 08:09:12
    #33872725
Valll
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помощь в Excel (вычислять результат текстовой формулы)
Когда был макроязык в Экселе, была функция "ВЫЧИСЛИТЬ" - она решала именно эти задачи. Найди ее аналог в VBA или сделай ее сам. Достаточно простая задача. А вообще, я думаю, применительно к конкретной задачи, можно обойтись изменив структуру таблицы.
...
Рейтинг: 0 / 0
24.07.2006, 08:28:24
    #33872749
Ashton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помощь в Excel (вычислять результат текстовой формулы)
Правильно говорят про формулу ВЫЧИСЛИТЬ. Как ее использовать, я писал здесь .

Либо написать аналог функции на VBA.

Код: plaintext
1.
2.
3.
Public Function fnEvaluate( _
  ByRef rng As Range)
    fnEvaluate = Application.Evaluate(rng.Value)
End Function

A1 = "1+5-14*48"
B1 = =fnEvaluate(A1)
...
Рейтинг: 0 / 0
25.07.2006, 20:37:56
    #33878044
Zoya2006
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помощь в Excel (вычислять результат текстовой формулы)
а как написать аналог функции на VBA? через макросы?
...
Рейтинг: 0 / 0
25.07.2006, 20:40:19
    #33878047
Zoya2006
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помощь в Excel (вычислять результат текстовой формулы)
и как можно преобазовать формулу в ячейке А1 в текст формулы в ячейку В1
...
Рейтинг: 0 / 0
25.07.2006, 21:41:48
    #33878086
Valll
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помощь в Excel (вычислять результат текстовой формулы)
Блин, так тебе ж написал Ashton!
...
Рейтинг: 0 / 0
26.07.2006, 08:33:21
    #33878339
Ashton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помощь в Excel (вычислять результат текстовой формулы)
Zoya2006а как написать аналог функции на VBA? через макросы?
См. мой пост выше.

Zoya2006и как можно преобазовать формулу в ячейке А1 в текст формулы в ячейку В1
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Public Function fnFormulaToText( _
  rng As Range) As String
    If rng.HasFormula Then
        fnFormulaToText = rng.Formula
    Else
        fnFormulaToText = ""
    End If
End Function
...
Рейтинг: 0 / 0
26.07.2006, 09:04:26
    #33878393
sergeyvg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помощь в Excel (вычислять результат текстовой формулы)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Private Sub Worksheet_Change(ByVal Target As Range)
  On Error Resume Next
  Application.EnableEvents = False
  Range("B1").FormulaLocal = "=" & Range("A1").Value
  If Err.Number <>  0  Or IsError(Range("B1")) Then _
    Range("B1") = "Опаньки, плохи дела с формулой в A1"
  Application.EnableEvents = True
End Sub
...
Рейтинг: 0 / 0
26.07.2006, 09:08:25
    #33878400
sergeyvg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помощь в Excel (вычислять результат текстовой формулы)
если в B1 нужно значение формулы, то так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Private Sub Worksheet_Change(ByVal Target As Range)
  On Error Resume Next
  Application.EnableEvents = False
  Range("B1").FormulaLocal = "=" & Range("A1").Value
  Range("B1") = Evaluate(Range("B1").Formula)
  If Err.Number <>  0  Or IsError(Range("B1")) Then _
    Range("B1") = "Опаньки, плохи дела с формулой в A1"
  Application.EnableEvents = True
End Sub
...
Рейтинг: 0 / 0
26.07.2006, 21:15:54
    #33880834
Zoya2006
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помощь в Excel (вычислять результат текстовой формулы)
ВЫ ИЗВИНИТЕ МЕНЯ, Я ПЛОХО В ЭТОМ РАЗБИРАЮСЬ!
делала так:
Создание макроса с использованием Microsoft Visual Basic
1. В меню Сервис Microsoft Excel выберите команду Макрос, а затем — Редактор Visual Basic.
2. В меню Insert выберите команду Module.
3. Введите или скопируйте программу в окно программы модуля.
4. Чтобы запустить данный макрос из окна модуля, нажмите кнопку F5.
5. Когда макрос будет создан, выберите команду Close and Return to Microsoft Excel в меню File.
получилось в Visual Basic:

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Application.EnableEvents = False
Range("B1").FormulaLocal = "=" & Range("A1").Value
Range("B1") = Evaluate(Range("B1").Formula)
If Err.Number <> 0 Or IsError(Range("B1")) Then _
Range("B1") = "Опаньки, плохи дела с формулой в A1"
Application.EnableEvents = True
End Sub
Sub мой()

End Sub

НЕ РАБОТАЕТ (ЧТО НЕ ТАК?)
...
Рейтинг: 0 / 0
27.07.2006, 20:12:10
    #33883501
Zoya2006
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помощь в Excel (вычислять результат текстовой формулы)
БОЛЬШОЕ СПАСИБО, У МЕНЯ ПОЛУЧИЛОСЬ!!!
...
Рейтинг: 0 / 0
27.07.2006, 20:53:59
    #33883594
Zoya2006
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помощь в Excel (вычислять результат текстовой формулы)
Я написала аналог функции на VBA.


Public Function fnEvaluate( _
ByRef rng As Range)
fnEvaluate = Application.Evaluate(rng.Value)
End Function

Работает только с простыми вычислениями (10-8+2),а (0,33*0,95) не вычисляет... Почему? и что делать?
...
Рейтинг: 0 / 0
27.07.2006, 23:11:14
    #33883755
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помощь в Excel (вычислять результат текстовой формулы)
Zoya2006Работает только с простыми вычислениями (10-8+2),а (0,33*0,95) не вычисляет... Почему? и что делать?Замени запятые на точки.
...
Рейтинг: 0 / 0
28.07.2006, 08:55:21
    #33884051
Ashton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помощь в Excel (вычислять результат текстовой формулы)
Код: plaintext
1.
2.
3.
Public Function fnEvaluate( _
  ByRef rng As Range)
    fnEvaluate = Application.Evaluate(Replace(rng.Value, ",", "."))
End Function
...
Рейтинг: 0 / 0
28.07.2006, 21:28:58
    #33886478
Zoya2006
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помощь в Excel (вычислять результат текстовой формулы)
Спасибо, все получилось! Удачи Вам во всем!
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / помощь в Excel (вычислять результат текстовой формулы) / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]