< návrat zpět

MS Excel


Téma: súčet mínusov za sebou medzi 2 kladnými hodnotam rss

Zaslal/a 3.11.2015 17:55

Dobrý deň všetkým
Chcem Vás poprosiť o pomoc s mojím problémom. Možno je pre niekoho riešenie jednoduché a možno sa dá niekde vyhľadať, ale nepísal by som sem, keby som riešenie nenašiel.
Hľadal som makro, alebo vzorec, ktorý vypíše najväčší počet mínusových buniek medzi kladnými. To sa mi podarilo nájsť na tomto fóre. Pre objasnenie uvádzam príklad: mám v stĺpci hodnoty v bunkách napríklad:
-1
2
-1
-1
-1
5
4
8
-2
-2
0
-2
10

Výsledok je: Max Počet mínusových hodnôt po sebe je: 3
Ja chcem, ale aby aj tieto bunky sčítalo. Čo už sa mi nepodarilo nájsť, ani som sám na to neprišiel. Výsledok je : -6
Ďalší problém je, ako je napríklad v tomto príklade že ich počet môže byť viac krát rovnaký, ako aj v tomto príklade. 2 krát po troch.
Ja chcem aby do bunky vypísalo súčet týchto hodnôt, v tomto prípade nech vypíše(alebo sčíta) ten najväčší celkový mínus: správny výsledok je: -6...nie -3 !!!
Najlepšie by bolo, keby riešenie bolo cez makro, alebo bez pridávania ďalších pomocných stĺpcov. Ale to len, ak by to bolo možné. :)
Ďakujem za pomoc a Váš čas

Příloha: zip27787_priklad2.zip (12kB, staženo 38x)
Zaslat odpověď >

Strana:  « předchozí  1 2 3 4   další »
#027809
Začátečník
Všechno špatně...
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
#027810
avatar
tu je to opravené
Příloha: zip27810_priklad3.zip (16kB, staženo 23x)
citovat
#027811
avatar
A z tohto je to aj vidieť. Stlpce možno aj skryť.
Příloha: zip27811_priklad2.zip (16kB, staženo 23x)
citovat
#027812
avatar
Začátečník:
neskutočné sa stalo skutočnosťou!:)
Ďakujem krásne! funguje to skvele!
Ja som vedel, že riešenie bude oveľa komplikovanejšie a na úrovni na ktorej som momentálne nemožné.
Preto som sa obrátil sem, aby som mal všetko správne. Niečo nové sa naučil a pochopil ďalšie "funckie, možnosti"
Moc krát Vám ďakujem!
Dá sa to spraviť aj na kladné hodnoty?
Ja som nevedel, ako sa správne vyjadriť, aby to bolo správne pochopené, za to sa ospravedlňujem, stále sa učím a ďakujem za pochopenie a pomoc! :)citovat
#027813
Začátečník
Ano jde.
Všechno jde, jenom děti a noviny se musí nosit. I chcíplá koza jde, ta jde stáhnout.

Zkuste popřemýšlet, co asi znamenají operátory '<' a '>'.

To marjankaj:
Nic proti, ale pokud bude mít list desetitíce hodnot, dovedeš si představit jeho velikost díky vzorcům???citovat
#027814
avatar
myslel som si, že sa budú musieť otočiť "<" ">" ale nevedel som či to bude stačiť. obzvlášť ak by som to chcel použiť v jednom dokumente a v tom istom "liste".
Je lepšie sa opýtať a zistiť ako spraviť danú vec správne a efektívne, než nevedieť nič :)
Ja moc ďakujem:)
išlo o to použiť to v tisícoch riadkov, bez ďalších vzorcov, úprav a pod. aby som to mohol používať ako šablónu.
Ďakujem obom za váš čas, moc si to vážim!:)citovat
#027815
Začátečník
To se bude muset otočit, ale také se u toho otáčení musí přemýšlet co která hodnota obsahuje.
Tady prostá záměna < za > neplatí...

Pokud Vám to nebude fungovat, ozvěte se, ale uveďte zde Vaše řešení!citovat
#027816
avatar
Začátečník
Moc ďakujem! Najlepšie sa učí, keď si to človek sám skúsi. Dobre pokúsim sa o to. Moje riešenie potom budem konzultovať s vami, či to je správne :)citovat
#027817
avatar
@začátečník.
Zadávateľ nehovoril koľko tých hodnôt bude.
Zato si neviem predstaviť na čo takáto úloha bude slúžiť.

Makro som nerobil, pretože úloha nebola na začiatku celkom jasná. Ale to sa tu stáva pomaly pravidlom. Také niečo vie iba elninoslov. A urobí aj jedenásť verzií, po všetkých upresneniach a dodatkoch. 5citovat
#027818
avatar
Začátečník
Myslím, že som to dobre pochopil a vytvoril som toto: mal by to robiť to isté s kladnými hodnotami

Public Function minnrada(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

minnrada = max

Else

minnrada = sum

End If

End Functioncitovat

Strana:  « předchozí  1 2 3 4   další »

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje