Zapomínáte, že po skončení cyklu v oblasti jsou také v proměnných nějaké hodnoty.
Zkuste si nahradit Vaše tímto:
Public Function maxnrada(vystup, oblast As Range)
Dim max As Single
Dim tmax As Single
Dim sum As Single
Dim tsum As Single
max = 0
tmax = 0
sum = 0
tsum = 0
For Each cell In oblast
If cell < 0 Then
tmax = tmax + 1
tsum = tsum + cell
End If
If cell > 0 Then
If tmax > max Then
max = tmax
End If
If tsum < sum Then
sum = tsum
End If
tmax = 0
tsum = 0
End If
Next
If tmax > max Then
max = tmax
End If
If tsum < sum Then
sum = tsum
End If
If vystup = 1 Then
maxnrada = max
Else
maxnrada = sum
End If
End Function
Podstata je ve volání funkce, pokud je volána =maxnrada(1;J3:J24), pak vrací maximální počet po sobě jdoucích hodnot větších než 0, přičemž nula se nezapočítává do počtu.
Pokud je volána =maxnrada(0;J3:J24), vrací součet těchto hodnot.
Je zohledněno i vyhodnocení na konci celého cyklu.
Pokud něco nefunguje jak má, pak PŘESNĚ popište co nefunguje.
P.S.
Jen pro upřesnění:
hodnota 0 není ani záporná ani kladná. Je to prostě NULA. Pokud chcete pracovat v oblasti čísel, pak se také musíte umět správně vyjadřovat, protože rozdíl mezi holinkami a hodinkami také není žádný - oboje se natahuje... Bohužel každé má jinou funkci a význam.citovat