Stránka 1 z 2
EXCEL: jak zjistit kolik je řádků mezi dvěma řádky
Napsal: 05 dub 2010 10:59
od atari
Ve sloupci A mám skutečný zisk a v C mám teoretický zisk. Potřebuji do B zjistit o kolik řádků je skutečný zisk zpožděný za teoretickým.
Např: skutečný zisk A24=6873 měl být dosažen teoreticky již v C17. Takže rozdíl mezi řádky 24 a 17je 8 řádků (včetně řádku 24). Viz příloha. (Kde je záporná hodnota, tam si dosadím třeba X)
Ve VBA to umím vyřešit jednoduše, ale chtěl bych nějaké řešení přímo ve vzorcích pokud je to vůbec možné, nějak nevím kudy do toho...
//úprava názvu
//mmm
Re: EXCEL: jak zjistit kolik je řádků mezi dvěma řádky
Napsal: 05 dub 2010 13:55
od navstevnik
Mozne reseni, byt krkolomne je v priloze.
Re: EXCEL: jak zjistit kolik je řádků mezi dvěma řádky
Napsal: 05 dub 2010 19:28
od atari
Tak klobouk dolů, tohle bych tedy nevymyslel....

Tak jsem to zkouknul, a jestli jsem to dobře pochopil, tak se musí vždy označit sloupec C a nechat setřídit.
Oni se ty výsledky totiž často mění, takže jsem potřeboval aby to fungovalo automaticky přes vzorce. Takže mi asi nezbude nic jiného, než to spouštět řešit VBA, pro uživatele to bude asi pohodlnější (a hlavně bez přemýšlení...)
Re: EXCEL: jak zjistit kolik je řádků mezi dvěma řádky
Napsal: 05 dub 2010 20:24
od navstevnik
Pomocny sloupec je nutny, lze jej vsak generovat udalostni pocedurou a vzorce ve sloupcih F:J vnorit do sebe a vlozit do sloupce B:B pri pouziti dynamicke pojmenovane oblasti.
Mas zajem? Tak upresni v jakem smyslu se meni hodnoty ve sloupcich.
Re: EXCEL: jak zjistit kolik je řádků mezi dvěma řádky
Napsal: 05 dub 2010 22:01
od atari
Pokud to nebude problém, tak mám zájem, když už jsem se smířil s tím že bude makro. Událostní procedura, to asi bude makro, přepodkládám. Původně šlo o to, aby to byl sešit bez maker, ale už jsem tento záměr zrušil.
A změna hodnot ve sloupcích, to jsem myslel změnu počtů dat. V příloze jsem uvedenl 62 řádků dat, může jich být víc a nebo méně. (Ještě uvádím, že tyto dva sloupce jsou výsledkem vzorců, jen jsem ručně překopíroval do ukázky pouze hodnoty)
Re: EXCEL: jak zjistit kolik je řádků mezi dvěma řádky Vyřešeno
Napsal: 05 dub 2010 23:10
od navstevnik
V priloze je sesit s resenim, poznamky na listu SUM. Otestuj se vzorci, ktere maji byt ve sloupcich A a C.
Re: EXCEL: jak zjistit kolik je řádků mezi dvěma řádky
Napsal: 06 dub 2010 10:42
od atari
Tak jsem koukal do sesitu, ale asi tam bude nekde chyba. Například v B45 je hodnota -45 a má tam být správně 15. Když dám do A45 hodnotu 1000 tak už v B45 je správný výsledek 17. Koukal jsem, že sloupec E se vůbec nemění, jestli v tom nebude problém.
Re: EXCEL: jak zjistit kolik je řádků mezi dvěma řádky
Napsal: 06 dub 2010 13:04
od navstevnik
Tezko lze posoudit, nebot asi mas jina data, v B45 je v prikladu v drive pripojene priloze hodnota 3 a nikoliv -45.
Priklad v priloze ma v B18 hodnotu -45, nebot nejblize vyssi hodnota ve sloupci C:C je v C64. Spravne by melo byt -47 (do poctu radku je zapocitan i radek se skutecnym ziskem jak pozadujes), asi bude nutno upravit vypocet rozdilu radku pro pripad, kdy teoreticky zisk ma index radku vyssi nez skutecny zisk. Protoze vsak v tebou uvedenem prikladu byl i rozdil roven 0 (nule) v B8, kdy teoreticky zisk je v C9 a skutecny v A8, neresil jsem, melo byt -2!
V priloze je prislusna uprava; protoze vysledny vypocet ma podminky, vnoreni funkci by jej zcela zneprehlednilo a zbytecne komplikovalo vzorec do sl B:B, je ponechan vypocet rozlozeny do sloupcu. Pripadne si vnor funkce ve sloupci H:H. Dale predpokladam, ze vzorce ve sloupcich A a C vraceji i hodnotu rovnu 0 (nula).
PS.: Jak je presne zadani, takovy je i vysledek, tezko predvidat, jake ma byt chovani v nedefinovanych stavech.
Re: EXCEL: jak zjistit kolik je řádků mezi dvěma řádky
Napsal: 06 dub 2010 14:33
od atari
Asi jsem se nepřesně vyjádřil, já to beru pořád z tech vzorových dat, které jsem sem dal v prvním příspěvku. Ve Tvé první reakci z včera 13:55 je to správně: V souboru zisky1.xls v bunce J18 je správný výsledek hodnota 15. Ale v dalších souborech zisky1.xls (včera 23:15 a dnešní) je již v bunce J18 hodnota -45.
Takže se tam ve výpočtu asi něco změnilo.
Re: EXCEL: jak zjistit kolik je řádků mezi dvěma řádky
Napsal: 06 dub 2010 18:25
od navstevnik
Ve vypoctu se posledni upravou nic nezmenilo, jen jsem na konci pridal par zkusebnich polozek, kdyz je odstranis, dostanes puvodni hodnoty, jen v B8 nebude nula, ale minus dve, protoze teoreticky zisk je az v C9 a skutecny v A8, takze rozdil nemuze byt nula. Znovu opakuji, zadani nebylo uplne, nebylo popsano, jak se ma vypocet chovat pri vsech stavech. Co je navrzeno, tak jsem dovodil z ukazky, ktera nezhrnuje vsechny stavy. A postup je ukazkou, jak na to mas jit.
Re: EXCEL: jak zjistit kolik je řádků mezi dvěma řádky
Napsal: 06 dub 2010 20:02
od atari
Sorry, jsem nějakej natvrdlej po velikonocích..., teprve teď jsem to pořáně pochopil

. Mám ještě dotaz:
Ty sloupce "A" a "C" ve skutečnosti jsou ve sloupci "AE" a "AF". Takže stačí upravit proměnnou "ColCC" a "TmpEE" a na makro už nemusím šahat a bude to fungovat? (Vzorečky v buňkách upravím samozřejmě také, tomu rozumím)
Re: EXCEL: jak zjistit kolik je řádků mezi dvěma řádky
Napsal: 06 dub 2010 21:58
od navstevnik
Jasne, musis upravit v pojmenovanych oblastech vzorce, zmenit sloupce. A abys nemusel zasahovat do VBA procedury, tady je zde upravena, pracuje pouze s pojmenovanymi oblastmi, nahrad v modulu listu, (pokud se zmeni nazev listu, musis upravit i proceduru Workbook_Open v modulu Tento_sesit):
Kód: Vybrat vše
Private Sub PomRozdilRadku()
Application.ScreenUpdating = False
On Error Resume Next ' pro stav, kdy je TmpEE prazdna
Me.Range("tmpee").ClearContents
On Error GoTo 0
Application.EnableEvents = False
' prenest hodnoty z ColCC do TmpEE a setridit
Me.Range("colcc").Offset(0, 2).Value = Me.Range("colcc").Value
Me.Range("colcc").Offset(0, 2).Sort Key1:=Me.Range("colcc").Resize(1, 1).Offset(0, 2), _
Order1:=xlDescending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Vzorecky v bunkach pracuji mimo jine take s pojmenovanymi oblastmi, takze minimum uprav.
Pokud by pri upravach doslo k chybe v behu procedury, muze nastat stav, kdy nebude obnoven prepocet listu, pouzij nasledujici proceduru:
Kód: Vybrat vše
Sub AEETrue()
Application.EnableEvents = True
End Sub