- В этой теме 1 ответ, 2 участника, последнее обновление 1 час, 38 минут назад сделано .
Просмотр 1 ветки ответов
Просмотр 1 ветки ответов
- Для ответа в этой теме необходимо авторизоваться.
Программирование и администрирование в 1С
База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как вставить формулу в Excel через 1С для динамического пересчета?
можно ли при формировании листа Excel из 1с вставить в ячейку1 формулу, например колонку 2 умножить на колонку 3, чтобы потом при ручном изменении колонки пересчитывалась ячейка1
Да, при формировании листа Excel из 1С через COM-объект можно вставить в ячейку формулу, например, чтобы значение в первой колонке было произведением значений из второй и третьей колонок. Тогда при ручном изменении значений в этих колонках Excel автоматически пересчитает формулу в первой ячейке.
Пример записи формулы с использованием R1C1-стиля адресации:
|
1 2 3 4 5 6 7 8 9 10 |
// Получаем ссылку на лист Excel Лист = Книга.Sheets(1); // Предположим, что формула будет в ячейке A1 (1,1) // А значения для умножения в ячейках B1 (1,2) и C1 (1,3) Ячейка = Лист.Cells(1, 1); // Записываем формулу умножения B1 на C1 // В R1C1-стиле это RC[1]-RC[2] - текущая строка, столбец +1 и +2 Ячейка.FormulaR1C1 = "=RC[1]*RC[2]"; |
Если предпочитаете использовать A1-стиль, формула будет выглядеть так:
|
1 |
Ячейка.Formula = "=B1*C1"; |
Для вставки таких формул в несколько строк (например, с 1 по N) можно использовать цикл:
|
1 2 3 |
Для НомерСтроки = 1 По N Цикл Лист.Cells(НомерСтроки, 1).FormulaR1C1 = "=RC[1]*RC[2]"; КонецЦикла; |
Таким образом, формулы будут динамически ссылаться на соседние ячейки в каждой строке, и при изменении пользователем исходных значений пересчет будет происходить автоматически.