< 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ší »
#027837
Začátečník
Ano vypadá to dobře.
Jen bych celou funkci trošku optimalizoval, protože při procházení uváděných 3000 hodnot bude zpomalovat provedení, obzvláště pokud bude použita 4x. Jen by to chtělo dávat kód do BBCode CODE.

@marjankaj:
jasně 1, nezkoumám proč a nač to bude dobré... Obě řešení jsou podle požadavků, jedno "nafoukne" sešit, druhé zpomaluje... Záleží na tazateli co si vždy vybere.citovat
icon #027846
eLCHa
Velmi zmatené zadání, ze kterého pak vyplývá spousta doplňujících dotazů.
Ve výsledku to stejně nakonec nedává požadovaný výsledek

Chápu dotaz jako
Najdi největší počet nekladných čísel jdoucích za sebou a vrať jejich součet.

Takže pro řadu
3;0;-2;2;3;-1,5;-6;39;40;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;30;-30;-20;-10;0;-30;-19;-10;15

by výsledek měl být -10 (10x -1) a ne -119 (-30;-20;-10;0;-30;-19;-10) - těch je jen 7citovat
#027849
avatar
@eLCHa
Nehľadá najväčší počet nekladných čísel, ale naväčší počet záporných čísel.
Zadanie je vcelku jasné, ale ten nadpis snáď mal dať aj do textu. Človek keď číta text, tak mu ten nadpis akosi unikne.
Neskúšal som to makro a ani sa nechystám skúšať. Ak by som sa mal tým zaoberať podrobne, tak by som rád vedel, k čomu je to všetko dobré. Možno by potom bolo aj iné riešenie.citovat
icon #027851
eLCHa
@marjankaj
Nesouhlasím s Vámi, ale na tom nezáleží.

nula sa neberie ako kladná hodnota, čiže reťazec neprerušuje.
Takže má to číslo být menší nebo rovno 0 - tedy nekladné ;) .
Já jsem ho zkusil - a podle popisu nefunguje správně. Ale hlavně, že je spokojený. Nebo se brzy ozve.citovat
#027853
Začátečník
Souhlasím s eLCHa s upřesněným zadáním, jen doplním, že tazatel nehledá nejen největší počet, ale současně nejnižší součet. Tedy ze zadání řady pak musí vyjít největší záporný výsledek pro stejný počet po sobě jdoucích nekladných hodnot.
Což vyplývá z příkladu tazatele:
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

Nejen v řadě má uvedeno 3x -1, ale také 3x -2.

Srozumitelné zadání = srozumitelné a přesné řešení.
Což v tomto případě bohužel neplatí.

Pokud to tazateli nebude vyhovovat, stačí si upravit funkci podle potřeby.
Souhlasím, že jsem ve funkci udělal chybu. Jsem trubka 3 , ale zpátky do školy kvůli tomu nepůjdu... 5citovat
#027855
avatar
@eLCHA
Téma: súčet mínusov za sebou medzi 2 kladnými hodnotam

Teda napríklad rad: 5,-2,0,-3,-4,-5,0,6

počet mínusových hodnôt medzi dvomi kladnými hodnotami je 4 a nie 6.
Viď https://cs.wikipedia.org/wiki/Kladn%C3%A9_a_z%C3%A1porn%C3%A9_%C4%8D%C3%ADslo

Samozrejme súhlasím s tým, že zadanie mohlo byť napísané zrozumiteľnejšie a nie ako nejaký rébus.

Pokiaľ ide o ten súčet, tak tie nuly nemajú na výsledok žiadny vplyv.citovat
#027869
avatar
Pekný večer všetkým:)
V prvom rade ďakujem, že sa venujete mojej problematike, ale chcem sa aj ospravedlniť za rébus ktorý som stvoril :)
Makro ktoré spravil Začiatočník nefunguje celkom podľa mojich predstáv. Myslel som si že áno, ale zistil som teraz, že nie.
Počet za sebou idúcich hodnôt, počíta toto makro správne. Nula nenarúša "reťazec", čiže ak mám hodnoty

-10
0
-10

tak výsledok je: 2. To sedí.
Problém je v sčítavaní hodnôt. Toto makro vypíše maximálny sčítaný mínus v rade. Mám napríklad hodnoty v bunkách:

-1
-1
-1

10

-2
-2

10

Maximálny počet mínusových hodnôt za sebou je: 3
ALE: súčet tohto makra je: -4 (-2,-2)
Čo je nie je zlé, lebo náhodou toto riešenie potrebujem tiež.
Ale správny výsledok by mal byť -3(-1,-1,-1)

Ale môj problém je komplikovanejší lebo keď máme napríklad hodnoty v bunkách:

-1
-1
-1

10

-2
-2
-2

10

-5
-5

10

Tak ten maximálny počet po sebe idúcich záporných čísel je: 3
a ich maximálny súčet je: -6 (-2,-2,-2)
Ale toto makro vypíše maximálny súčet: -10 (ja ale potrebujem tých -6)

Neviem či som to dobre opísal. Lepšie by to bolo osobne vysvetliť, aby som to dokázal dobre opísať a aby ste to správne pochopili.
Prikladám aj prílohu v ktorej je tých hodnôt viac. Je tam aj makro ktoré spravil Začiatočník. Je tam aj makro na kladné hodnoty. Ktoré som sem už napísal.
V príklade je viac hodnôt, je tam aj popísané a vyznačené, čo funguje, čo nie a čo by fungovať malo.
Ďakujem veľmi Začiatočníkovi aj za toto makro, lebo potom by som tu asi otravoval s problémom zistenia najväčšieho mínusu, medzi dvoma kladnými hodnotami(bunkami)
Samozrejme riešenie by som chcel aj do plusu, nie len do mínusu.
Som full time trader(forex, komodity), tvorím test pre svoje vlastné stratégie s vlastnou štatistikou.
Ide mi o to zistiť:

Najväčší počet mínusových obchodov za sebou medzi dvoma plusovými a vypočítať ich súčet. Ak sa vyskytne viac krát rovnaký najväčší počet mínusových obchodov po sebe medzi dvoma plusovými, tak vypísať súčet tých, ktorých súčet je najväčší.


Dúfam, že sa mi podarilo problematiku lepšie a rozumnejšie opísať a že to aj lepšie pochopíte z prílohy.
Riešenie ak vôbec nejaké je, by bolo ideálne cez makro. Nech tam nie je strašne veľa vzorcov.
Ďakujem za Váš čas, prácu a trpezlivosť s mojím chaotickým vysvetlením :)
Příloha: zip27869_priklad.zip (29kB, staženo 23x)
citovat
#027871
avatar
Ak dobre nad tým rozmýšľam tak makro by malo fungovať asi takto:
Nájde prvú bunku s mínusovou hodnotou, potom ďalšiu a ďalšiu...až do kým nenarazí na kladnú hodnotu: väčšiu než 0, lebo nula nenarúša tento reťazec...lebo nula u mňa znamená, že som neurobil žiadny obchod v danom dni.

Takže makro narazí na: -1 ...potom ďalšia bunka je: -1 ...ich počet priebežne spočíta: 2..urobí ich súčet: -2...toto si uloží lebo narazil na kladnú hodnotu povedzme: 10

ďalšia bunka má mínusovú hodnotu: -5...ale ďalšia hodnota je kladná: 5...čiže makro porovná počet a zistil že najväčší počet je 2 a tak by zatiaľ vypísalo: najväčší počet je 2 a ich súčet: -2 (ak by neboli ďalšie hodnoty z vybranej oblasti, alebo by už bolo na konci oblasti)

ďalšia bunka: je ďalšia mínusová hodnota: -2 ...ďalšia bunka: -2 ...ďalšia bunka je kladnej hodnoty: 5 ...čiže ich počet je 2 ...ich súčet je: -4 ...porovnal počet...počet je rovnaký..takže ostáva najväčší počet: 2...ale súčet je už väčší a tak už má vypísať najväčší súčet je: -4
potom príde ďalšia mínusová hodnota: -1...nasleduje ďalšia: -1...ďalšia: -1
zistil že ich počet je zatiaľ najvyšší: 3 ...a tým pádom sa prepíše aj hodnota v premennej ktorá slúži na sčítavanie: -3
ďalšia hodnota je kladná a viac buniek s hodnotami už nie je, alebo je na konci oblasti a urobí koniec.

-1
-1

10

-5

5

-2
-2

5

-1
-1
-1

maximálny počet mínusových obchodov za sebou je: 3
ich súčet je: -3

Takže súčet je "prepojený" ,či "závislý" s počtom. Asi takto nad tým premýšľam. Ešte to tak vedieť zapísať do kódu :D To je momentálne nad moje sily.:)
otázka je, či som vám to celé dobre opísal a vysvetlil.:)citovat
#027872
avatar
Ja som to tak aj pochopil. Snáď to je aj vidieť v príklade. Myslím, že si to vysvetlil dobre už na začiatku.
Alebo toto makro

Public Function maxnrada(oblast As Range, kod As Integer)

' kod=0 počet
' kod=1 suma
Dim max As Single
Dim tmp As Single
max = 0
tmp = 0
stmp = 0
maxstmp = 0
For Each cell In oblast
If cell < 0 Then
tmp = tmp + 1
stmp = stmp + cell
End If
If cell > 0 Then
If tmp > max Then
max = tmp
If (maxstmp > stmp) Then maxstmp = stmp
End If
tmp = 0
stmp = 0
End If
Next
If kod = 0 Then
maxnrada = max
Else
maxnrada = maxstmp
End If
End Function
Příloha: zip27872_prikladxx.zip (18kB, staženo 24x)
citovat
#027873
Opičák
?
Příloha: zip27873_soucet-zapornych-hodnot.zip (19kB, staženo 25x)
citovat

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