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

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

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

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

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

textual
Листинг программы
class RandomArray
{
    //массив значений
    double[] array;
    //верхние границы интервалов
    double[] intervals = { 0.2, 0.4, 0.6, 0.8, 1.0 };
    public RandomArray(int size) //конструктор, принимает количество элементов в создаваемом массиве
    {
        Random rnd = new Random();
        array = new double[size];
        for (int i = 0; i < size; i++)
        {
            array[i] = rnd.NextDouble();
        }
    }
    public int[] Frequency() //метод возвращающий массив частот
    {
        int[] freqArray = new int[intervals.Length + 1];
        for (int i = 0; i < array.Length; i++)
        {
            freqArray[GetIndex(array[i])]++;
        }
        return freqArray;
    }
    int GetIndex(double d) //метод, определяющий номер интервала для элемента
    {
        for (int i = 0; i < intervals.Length; i++)
        {
            if (d < intervals[i]) return i;
        }
        return intervals.Length;
    }
    public double[] GetArray() //возвращение массива
    {
        return array;
    }
 
}

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


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

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

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