Какая формула является эквивалентом этой функции в Excel? - PullRequest
0 голосов
/ 03 мая 2020

Привет, какая формула эквивалентна этому коду в excel?

int[]  workHours[300];
int function extraHours(){
   int extra=0;
   For(i=3,i<=300,i++){
      If(workHours[i]>8){
         extra += workHours[i]-8;
      }
   }
   return extra;
}

Ответы [ 3 ]

2 голосов
/ 03 мая 2020

Вы можете использовать эту формулу:

=SUMIF(A1:A300;">8")-COUNTIF(A1:A300;">8")*8

Что это значит?

Сначала SumIf() принимает сумму всех чисел, больше 8.
Затем CountIf() показывает, сколько раз это было найдено, и для каждого из этих случаев вычитается 8.

2 голосов
/ 03 мая 2020

Самый буквальный перевод, который я могу себе представить, это

=SUM(IF(A3:A300>8,A3:A300-8))

, введенный в виде формулы массива с использованием Ctrl Shift Enter

или

=SUMPRODUCT((A3:A300>8)*(A3:A300-8))

введены как обычная формула.

1 голос
/ 03 мая 2020

Как выглядит ваш лист Excel? Я предполагаю, что числа workHours будут указаны в столбце A вашего листа Excel.

Вы можете добавить дополнительные столбцы? В Excel для простоты вам не нужно решать каждую проблему с помощью одной формулы. Например, добавьте дополнительный столбец WorkHoursMinus8 в столбец B с B[i]=A[i]-8. Теперь вы можете просто использовать формулу sumif для вычисления суммы всех положительных ячеек в столбце B: SUMIF(B:B,">0").

Помогает ли это или действительно нужно? иметь одну формулу без дополнительных столбцов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...