Стартовая страница › Форумы › Понять, как работает ПО › Формулы › Сумма множества каналов и расчет статуса
- В этой теме 8 ответов, 3 участника, последнее обновление 9 лет, 3 месяца назад сделано
Mikhail.
-
АвторЗаписи
-
25.05.2017 в 13:40 #5926
Romiros
УчастникДобрый день. Кто разобрался с формулами, подскажите как выполнить суммирование 10 каналов и рассчитать средний статус. Строки формула, длиной 100 символов не хватает.
25.05.2017 в 13:45 #5927
manjey73УчастникНаверное лучше загонять значение каждого канала в список словаря, а уже в канале, где должна вывестись сумма просто сумировать ячейки списка…
Не знаю как будет правильнее, со словарями пока не разбирался.
Например имеем 10 каналов Температур, нужна сумма.
в канале температур пишем Формула(имя списка(словаря), значение)
внутри формула будет заносить значение в ячейку с номером канала.Потом Формула_сумма(имя списка) ну и соответственно формула будет суммировать все ячейки нужного списка и выдавать результат.
Как-то так.
Можно через массивы
-
Ответ изменён 9 лет, 3 месяца назад пользователем
manjey73.
25.05.2017 в 14:04 #5929Romiros
УчастникСпасибо. Надеялся будет проще 🙂
25.05.2017 в 14:13 #5930
manjey73УчастникМне кажется так универсальнее, так как можно суммировать любые каналы и в любых количествах.
На каждый канал, который нужно суммировать создаете свой массив для складирования этих каналов, указав ему имя.
в формуле суммы указываете имя какой массив считать.Например Summ_plus(Massa) и такая запись формулы будет у всех каналов, каждый канал будет попадать в свою ячейку массива
а вывести сумму скажем Summa(Massa), формула посчитает сумму значений всех ячеек и выведет-
Ответ изменён 9 лет, 3 месяца назад пользователем
manjey73.
25.05.2017 в 14:30 #5932Romiros
УчастникСпасибо за совет. Поэкспериментирую. Не хватает конечно скриптов для простоты, чтобы напрямую к каналам обращаться.
25.05.2017 в 16:52 #5940
manjey73УчастникОбращение напрямую есть, посмотрите в теме Формул, Михаил выкладывал CnlValGet и CnlValSet, возможно вместите в 100 символов
Просто заниматься писаниной в одной строке знач1+знач2+знач3 и так далее думаю несколько муторно.
-
Ответ изменён 9 лет, 3 месяца назад пользователем
manjey73.
25.05.2017 в 17:34 #5945
MikhailМодераторНужно создать формулу в таблице формул. Кстати, в C# с помощью ключевого слова params можно передавать в метод переменное количество аргументов.
26.05.2017 в 16:41 #5961Romiros
УчастникСпасибо за params.
Как один из вариантов, если кому нужно:double CnlValSet(params int[] cnls)
{
double val = 0;
for (int i=0; i<cnls.Length; i++)
{
val=val+Val(cnls[i]);
}
return val;
}Использование Сумма каналов 101, 102, 103:
CnlValSet(101,102,103)Аналогично для статуса, только среднее
29.05.2017 в 08:39 #5965
MikhailМодераторБолее корректно будет название метода SumCnlVals, т.к. метод с префиксом Set обычно что-либо устанавливает, а метод выше только возвращает значение.
-
Ответ изменён 9 лет, 3 месяца назад пользователем
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.