![]() |
![]() |
![]() |
|
Как в Excel вычислить значение формулы в ячейке, не меняя формулу. | ☑ | ||
---|---|---|---|---|
0
Гений 1С
гуру
06.02.09
✎
21:12
|
Конкретно, в Excel в ячейке А1 есть такая формула:
=CHOOSE(1,1234.14,"Подразделение",C1) Мне нужно вычислить, чему равно в этой же ячейке значение формулы: =CHOOSE(2,1234.14,"Подразделение",C1) Я делаю так - запоминаю формулу из Formula, меняю ее на нужную, считываю Value потом откатываю обратно. Но если не дай бог чего прервется, лист будет испорчен. Можно ли не деструктивно вычислять значение в ячейке? |
|||
1
asady
06.02.09
✎
21:50
|
(0)
trigVariable = Evaluate("SIN(45)") |
|||
2
Гений 1С
гуру
06.02.09
✎
21:52
|
(1) Асади, в контексте какой ячейки будет вычисляться выражение, тут не синус надо вычислить, в формуле есть C1!!!
|
|||
3
Гений 1С
гуру
06.02.09
✎
21:52
|
Вот это через Evaluate не вычислишь:
=CHOOSE(4,1234.14,"Подразделение",C1) |
|||
4
Torquader
06.02.09
✎
22:20
|
Просто надо сначала ссылки привести в листонезависимому виду, а потом вычислять.
|
|||
5
Torquader
06.02.09
✎
22:26
|
Evaluate("=CHOOSE(2,2,Лист1!B2)")
Так работает! |
|||
6
vde69
06.02.09
✎
23:09
|
есть для листа метод "calculate()"
|
|||
7
Гений 1С
гуру
06.02.09
✎
23:39
|
(4)(5) какой ты умный. Может мне транслятор написать, который будет приводить формулы? Кто его знает, что за ссылку там юзверь укажет...
|
|||
8
Гений 1С
гуру
06.02.09
✎
23:40
|
(6) И как мне это поможет решить мою проблему...
Мда, похоже это единственный способ, который я юзаю - деструктивный... |
|||
9
Гений 1С
гуру
06.02.09
✎
23:41
|
Сформулирую задачу еще раз.
В ячейках листа есть формулы вида =CHOOSE(А, Б, В, Г, Д, ...). Мне нужно для каждой ячейки, в которой есть такая формула, получить значения А, Б, В, Г, Д, ... Нужно учесть, что вместо А, Б, В, Г, Д может стоять формула со ссылкой на другую ячейку!!! |
|||
10
Господин ПЖ
06.02.09
✎
23:45
|
да нас.ать собственно... сиди да делай. нефиг тут истерики устраивать...
|
|||
11
Гений 1С
гуру
06.02.09
✎
23:52
|
(10) 0 бит информации
|
|||
12
vde69
06.02.09
✎
23:54
|
у ячейки есть недокументированое свойство "Text"
calculate - пересчитывает все формулы на листе |
|||
13
Гений 1С
гуру
07.02.09
✎
00:58
|
(12) И что дает текст?
Вде, калькулейт мне никак не поможет. |
|||
14
vde69
07.02.09
✎
01:14
|
(13) я не понимаю зачем тебе считать ДВЕ формулы в одной ячейки, куда тебе результат нужен?
вообще можно все считать через макрос, без ячеек вообще |
|||
15
Гений 1С
гуру
07.02.09
✎
01:54
|
(14) Чувак, мне не результат нужен, мне нужно знать все параметры, переданные в выбор
|
|||
16
Гений 1С
гуру
07.02.09
✎
01:55
|
Если НЕ ЛЕВ(ВРЕГ(Формула),10) = "=CHOOSE(1," Тогда
Продолжить; КонецЕсли; //Сообщить(Формула); //Получаем массив параметров Инд = 2; Хвост = Сред(Формула, 10); //Хвост начинается с запятой после единицы М = Новый Массив(); ИсходнаяФормула = Формула; Пока Истина Цикл //Вычисляем и получаем значение формулы Попытка //Проверяем, есть ли параметр //=ISERROR(CHOOSE(1,1234.14,"СКД","УС:Счет.Код = ""01"", ","У:Субконто1.Наименование=""Жилое здание""")) Ячейка.Formula = "=ISERROR(CHOOSE(" + Формат(Инд, "ЧГ=") + Хвост + ")"; Если Ячейка.Value Тогда Прервать; КонецЕсли; //Если есть, то вычисляем Ячейка.Formula = "=CHOOSE(" + Формат(Инд, "ЧГ=") + Хвост; Инд = Инд + 1; М.Добавить(Ячейка.Value); Исключение Прервать; КонецПопытки; КонецЦикла; Ячейка.Formula = ИсходнаяФормула; |
|||
17
dk
07.02.09
✎
06:06
|
(0) Genij, что мешает баловаться на копии листа или даже в другой книге?
|
|||
18
Гений 1С
гуру
07.02.09
✎
09:16
|
(17) Оперативность, батенька, оперативность... К тому же лист может быть здоровым, пока он скопируется во временный файл... Это не одноразовая, а постоянная операция. Контекст задачи здесь:
http://infostart.ru/projects/3381/ |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |