Имя: Пароль:
1C
1С v8
Пересчет формулы в Excel
0 pv94384
 
27.10.21
14:34
Добрый день.

Из 1С передаю формулу в Excel и обратно хочу получить результат этой формулы. Формула передается, вроде бы всё хорошо, но вот результат не высчитывается. Пытаюсь сделать пересчет - всё равно результат 0. Хотя если вбить эту формулу в эксель, то отрабатывает и результат отличен от 0. Что я делаю не так?


Excel.Cells(1, 1).FormulaR1C1 = "=SUM(R[4805]C[16]:R[4963]C[16])";
Excel.Sheets(1).Calculate();

Сообщить(Excel.Cells(1, 1).value);
1 Кирпич
 
27.10.21
14:45
Мож так

Excel.Sheets(1).Range(1, 1).FormulaR1C1 = "=SUM(R[4805]C[16]:R[4963]C[16])";
2 pv94384
 
27.10.21
14:48
(1) Ошибка при вызове метода контекста (Range)
3 Кирпич
 
27.10.21
14:54
ну Cells(1,1) попробуй
4 garantNo4x
 
27.10.21
14:55
ну включи на листе авторасчет и посмотри что будет ...
5 SSSSS_AAAAA
 
27.10.21
14:55
(0) "Excel.Cells(1, 1)" - а теперь вопрос: а на каком листе эта ячейка?
То есть для пересчета таки указывается на каком листе пересчитывать (Excel.Sheets(1).Calculate();), а для ячейки не надо?
6 pv94384
 
27.10.21
15:03
(3) Результат 0
(4) если речь об этом

Excel.Sheets(1).Calculate();

то результат тоже 0.
(5)
Excel.Sheets(1).Cells(1, 1).FormulaR1C1 = "=SUM(R[4805]C[16]:R[4963]C[16])";

результат 0.
7 SSSSS_AAAAA
 
27.10.21
15:06
(6) ВЕЗДЕ должно быть Excel.Sheets(1).Cells(1, 1), а не только в каких-отдельных строках.
8 pv94384
 
27.10.21
15:09
(7) Везде по-разному, т.к. пробую разные варианты. Изначально везде было

    Excel.Sheets(1).Cells(1, 1).FormulaR1C1 = "=SUM(R[4805]C[16]:R[4963]C[16])";
    Excel.Sheets(1).Cells(1, 1).Calculate();

    Сообщить(Excel.Sheets(1).Cells(1, 1).value);
результат 0.
9 SSSSS_AAAAA
 
27.10.21
15:13
(8) Что говорит Сообщить(Excel.Sheets(1).Cells(1, 1).FormulaR1C1); ?
10 pv94384
 
27.10.21
15:17
(9) =SUM(R[4805]C[16]:R[4963]C[16])
11 pv94384
 
27.10.21
15:22
Разобрался. Всем спасибо.
Сделал через FormulaLocal = "=СУММ(...)"
12 Кирпич
 
27.10.21
15:27
У меня так работает

Sheet.Range("A1").Value = 100;
Sheet.Range("B1").Value = 500;
Sheet.Range("C1").Formula = "=SUM(A1:B1)";

и так

Sheet.Range("C1").FormulaLocal = "=СУММ(A1:B1)";
13 unknown181538
 
28.10.21
00:34
(11) а у меня наоборот русский вариант не работал
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn