Использование функции из библиотеки Excel - C#

Узнай цену своей работы

Формулировка задачи:

Всем доброго времени суток, у меня проблема с работой библиотеки Exel(некоторыми их функциями) Всё подлкючил
Листинг программы
  1. using Excel = Microsoft.Office.Interop.Excel;
все вроде как работает, сделал добавление случайного числа, вроде все ок. работает формула добавление случайного числа
Листинг программы
  1. Excel.Application excel = new Excel.Application(); //создаем COM-объект Excel
  2. Object formula, result; //переменные для хранения формулы и результата
  3. formula = ""; //берем формулу
  4. result = excel._Evaluate(formula); //вычисляем формулу
  5. MessageBox.Show(result.ToString()); //выводим результат
  6. string h = "0.1;0.2;0.3;0.4;0.5";
  7. string rand = "";
  8. int rnumb = 200;
  9. for (int i = 0; i < rnumb; i++)
  10. {
  11. rand = rand + Convert.ToString(excel._Evaluate("=RAND()"));
  12. if (i != 0 || i != rnumb - 1)
  13. {
  14. rand = rand + ";";
  15. }
  16. }
Но вот эту формулу (Частота) не воспринимает и возращает -2146826273
Листинг программы
  1. int res = excel._Evaluate("{=FREQUENCY({22;22;22;22};{22})}");
  2. MessageBox.Show(Convert.ToString(excel._Evaluate("{=FREQUENCY({"+rand+"};{"+h+"})}")));
  3. excel.Quit();
как мне исправить работу этой формулы? int res = excel._Evaluate("{=FREQUENCY({22;22;22;22};{22})}"); кажется правильно записал....
подскажет кто в чем проблема?

Решение задачи: «Использование функции из библиотеки Excel»

textual
Листинг программы
  1. class RandomArray
  2. {
  3.     //массив значений
  4.     double[] array;
  5.     //верхние границы интервалов
  6.     double[] intervals = { 0.2, 0.4, 0.6, 0.8, 1.0 };
  7.     public RandomArray(int size) //конструктор, принимает количество элементов в создаваемом массиве
  8.     {
  9.         Random rnd = new Random();
  10.         array = new double[size];
  11.         for (int i = 0; i < size; i++)
  12.         {
  13.             array[i] = rnd.NextDouble();
  14.         }
  15.     }
  16.     public int[] Frequency() //метод возвращающий массив частот
  17.     {
  18.         int[] freqArray = new int[intervals.Length + 1];
  19.         for (int i = 0; i < array.Length; i++)
  20.         {
  21.             freqArray[GetIndex(array[i])]++;
  22.         }
  23.         return freqArray;
  24.     }
  25.     int GetIndex(double d) //метод, определяющий номер интервала для элемента
  26.     {
  27.         for (int i = 0; i < intervals.Length; i++)
  28.         {
  29.             if (d < intervals[i]) return i;
  30.         }
  31.         return intervals.Length;
  32.     }
  33.     public double[] GetArray() //возвращение массива
  34.     {
  35.         return array;
  36.     }
  37.  
  38. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.833 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут