Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 04.03.2018
Сообщений: 11
.NET 4.x

Ошибка при вставки формулы в Excel

05.10.2022, 10:26. Показов 1023. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
Вопрос в следующем, не получается вставить формулу в книгу excel. Т.е. простая формула сложения,вычития и т.п. работают, но чуть дальше у меня выскачила ошибка.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
workSheet2.Cells[2, list[1]].Formula = "Петя";
workSheet2.Cells[3, list[1]].Formula = "Ваня";
workSheet2.Cells[4, list[1]].Formula = "Петя";
workSheet2.Cells[5, list[1]].Formula = "Леша";
 
workSheet2.Cells[2, list[2]].Formula = 20;
workSheet2.Cells[3, list[2]].Formula = 30;
workSheet2.Cells[4, list[2]].Formula = 40;
workSheet2.Cells[5, list[2]].Formula = 50;
 
string Formul = "=SUMIFS(C2:C5;B2:B5;"Петя";D2:D5;"")";
 
workSheet2.Cells[7, list[2]].Formula = Formul;
При выполнении кода получается ошибка:

System.Runtime.InteropServices.COMExcept ion: "Исключение из HRESULT: 0x800A03EC"

Если написать формулу C2 + C3 то она сработает

Да, если использовать workSheet2.Cells[7, list[2]].FormulaLocal = Formul; то формула вставиться, но такой вариант не интересует. Я сначала формирую двумерный массив с формулами и потом его передю для вставки на лист книги ( данных много, и дабы ускорить ввод данных в книгу был выбран вариант с вставкой массивом)

C#
1
range.Value = arr2;
Может быть есть способ который заменяет вставку формул с Formula на FormulaLocal. Или есть ли другой вариант передачи двумерного массива одной строкой. Заполнение построчно долго

app.WorksheetFunction.SumIfs использовать не вариант, он так же обращается к ячейкам
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.10.2022, 10:26
Ответы с готовыми решениями:

Excel: не работают формулы после вставки данных.
После написания макроса, вставляющего скопированные из других книг данные в одну таблицу, столкнулась с проблемой: не работают формулы,...

Ошибка при записи Excel-формулы через скрипт
Здравствуйте ! У меня проблема Пишу в скрипте формулу в ячейку Excel-а в виде ActiveSheet.Range('B3').Formula = '=сумм(A2:D2)' ...

Ошибка при записи Excel-формулы через скрипт
Здравствуйте ! У меня проблема. Пишу в скрипте формулу в ячейку Excel-а в виде ActiveSheet.Range('B3').Formula = '=сумм(A2:D2)' или ...

8
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16142 / 11265 / 2888
Регистрация: 21.04.2018
Сообщений: 33,127
Записей в блоге: 2
05.10.2022, 10:55
Цитата Сообщение от medlexa Посмотреть сообщение
C#
11
string Formul = "=SUMIFS(C2:C5;B2:B5;"Петя";D2:D5;"")";
Давно не работал с Excel, но что-то эта формула вызывает у меня сомнения.
Вы пробовали "в ручную" вставить её в Лист?
Если да, то выложите правильно заполненный лист.
0
0 / 0 / 0
Регистрация: 04.03.2018
Сообщений: 11
05.10.2022, 11:11  [ТС]
C#
1
"string Formul = СУММЕСЛИМН(C2:C5;B2:B5;\"Петя\";D2:D5;\"\")";
это в русской локализации.
Но заметил особенность, что если я массивом заполняю формулы типа =СУММ(C2:C5) то в екселе в этих ячейках появляется желтый треугольник, что мол ошибка в формуле, и отказывается считать. Необходимо было войти в ячейку, и нажать Enter ничего не меняя, и формула сразу считалась. НО если массивом передать =SUM(C2:C5) то при вставке в ексель она сразу переводилась в =СУММ(C2:C5) и считалась сразу без вхождения в ячейку. От сюда я сделал вывод что для вставки формул массивом в екселья необходима английская интерпретация формулы, но даже если заполнить массив СУММЕСЛИМН(…) то при вставке произойдет ошибка
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16142 / 11265 / 2888
Регистрация: 21.04.2018
Сообщений: 33,127
Записей в блоге: 2
05.10.2022, 11:24
medlexa, выложите правильно заполненный Лист.
Без этого ничего не могу сам ответить.

Добавлено через 54 секунды
Что такое "Петя"? Почему последний параметр пустая строка?
0
0 / 0 / 0
Регистрация: 04.03.2018
Сообщений: 11
05.10.2022, 11:35  [ТС]
В екселе все верно. Вопрос имеено как передать массив с C# в ексель
Вложения
Тип файла: xlsx test.xlsx (8.4 Кб, 3 просмотров)
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16142 / 11265 / 2888
Регистрация: 21.04.2018
Сообщений: 33,127
Записей в блоге: 2
05.10.2022, 11:55
Цитата Сообщение от medlexa Посмотреть сообщение
В екселе все верно.
Нет, неверно.

Прежде чем делаете что-то на Шарпе, сначала отлаживайте на VBA в Excel.

1
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16142 / 11265 / 2888
Регистрация: 21.04.2018
Сообщений: 33,127
Записей в блоге: 2
05.10.2022, 11:57
medlexa, по интерфейсу Форума:
 Комментарий модератора 
При обращении к другому пользователю указывайте его ник в тегах [NICK][/NICK] или цитируйте часть сообщения на которое отвечаете.
В противном случае ему не придёт уведомление о вашем обращении и вы можете не дождаться ответа на своё сообщение.

Для вставки ника: введите ник, выделите его и нажмите кнопку "Динамик" на панели редактора сообщений.
Или кликните по нику автора сообщения в панели слева от текста его сообщения.

Для вставки цитаты: выделите нужную цитату, должна появиться всплывающая кнопка "Цитировать", нажмите её.
0
0 / 0 / 0
Регистрация: 04.03.2018
Сообщений: 11
05.10.2022, 12:58  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Нет, неверно.
Прежде чем делаете что-то на Шарпе, сначала отлаживайте на VBA в Excel.
Хорошо, понял.
Изменил формулу и доп " поставил

Visual Basic
1
2
3
Range("D8").Select
ActiveCell.Formula = "=SUMIFS(C2:C5,B2:B5,""Петя"",D2:D5,"""")"
Range("D8").Select
В отладчике макросов в екселе все отлично, вставляет, то что нужно, но в шарпе не хочет.

Для этой формулы получается поодерживается только FormulaR1C1? Как я понял R1C1 использует адресацию относительно ячейки в которой находиться формула, что не очень удобно

Добавлено через 28 минут
Все, вопрос решился

Вместо
C#
1
range.Value = arr2;
Поставил
C#
1
range.FormulaLocal= arr2;
И все заработало
Формулу кстати использовал СУММЕСЛИМН
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16142 / 11265 / 2888
Регистрация: 21.04.2018
Сообщений: 33,127
Записей в блоге: 2
05.10.2022, 13:29
Цитата Сообщение от medlexa Посмотреть сообщение
Для этой формулы получается поддерживается только FormulaR1C1?
Не могу сказать.
Я давно уже не использовал VBA и подзабыл уже.
Надо сидеть разбираться, а времени сейчас нет.

Цитата Сообщение от medlexa Посмотреть сообщение
Формулу кстати использовал СУММЕСЛИМН
По идее инвариантное название должно принимать в любой локализации.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.10.2022, 13:29
Помогаю со студенческими работами здесь

Как создать макрос для копирования, вставки, формулы и двойной вставки одних и тех же значений
Привет, сторонники Excel. Я благодарен за поддержку, которую вы мне оказываете. Я действительно так делаю... Меня беспокоит одна...

Ошибка #ЗНАЧ! Перевод математической формулы в Excel
Ошибка#ЗНАЧ! уже надоела... что не так с моей формулой?:cry: Кто может сказать? вот формула, ячейки все верно указаны ...

Применение формулы при выгрузке в Excel
Есть столбцы H,I,J. после того как string получена и результат лежит в dt, перед помещением данных в Excel, нужно применить формулу. ...

Проблема при вставке формулы в Excel
Программно перетаскиваю данные из другой книги, используя формулу(элементарно суммирую предыдущие месяцы с текущим). Беру их как Value....

Формулы в excel при выгрузке из datagridview
В datagridview есть данные, нужно посчитать их сумму. Выгружаю его в Excel. Формулу написать в сами ячейки datagridview до выгрузки или...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru