Привет, какая формула эквивалентна этому коду в 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; }
Вы можете использовать эту формулу:
=SUMIF(A1:A300;">8")-COUNTIF(A1:A300;">8")*8
Что это значит?
Сначала SumIf() принимает сумму всех чисел, больше 8. Затем CountIf() показывает, сколько раз это было найдено, и для каждого из этих случаев вычитается 8.
SumIf()
CountIf()
Самый буквальный перевод, который я могу себе представить, это
=SUM(IF(A3:A300>8,A3:A300-8))
, введенный в виде формулы массива с использованием Ctrl Shift Enter
или
=SUMPRODUCT((A3:A300>8)*(A3:A300-8))
введены как обычная формула.
Как выглядит ваш лист Excel? Я предполагаю, что числа workHours будут указаны в столбце A вашего листа Excel.
workHours
A
Вы можете добавить дополнительные столбцы? В Excel для простоты вам не нужно решать каждую проблему с помощью одной формулы. Например, добавьте дополнительный столбец WorkHoursMinus8 в столбец B с B[i]=A[i]-8. Теперь вы можете просто использовать формулу sumif для вычисления суммы всех положительных ячеек в столбце B: SUMIF(B:B,">0").
WorkHoursMinus8
B
B[i]=A[i]-8
sumif
SUMIF(B:B,">0")
Помогает ли это или действительно нужно? иметь одну формулу без дополнительных столбцов?