Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Excel - vzorec nefunguje

Ahoj, mám vzorec

=KDYŽ(JE.ČISLO(SOUČIN.SKALÁRNÍ(IFERROR((MOD(SLOUPEC(E5:Q5)-4;6)=1)*(E5:Q5);0)));SVYHLEDAT(10;B3:B4;1);"")

ale nefunguje, protože je v buňce B5, tj. na stejném řádku. Když ho dám na jiný řádek funguje.

Jde to vyřešit jinak?

Děkuji

Předmět Autor Datum
a čo tak napísať, čo by to malo robiť?
robert13 28.03.2021 14:46
robert13
Takže =KDYŽ(JE.ČISLO(SOUČIN.SKALÁRNÍ(IFERROR((MOD(SLOUPEC(E5:Q5)-4;6)=1)*(E5:Q5);0)));SVYHLEDAT(10;B…
Pak 28.03.2021 14:53
Pak
Nepochopili sme sa. Viem, čo robia jednotlivé funkcie, ale čo by to malo robiť ako komplet? Mne to n…
robert13 28.03.2021 15:49
robert13
Takže toto SOUČIN.SKALÁRNÍ(IFERROR((MOD(SLOUPEC(E5:Q5)-4;6)=1)*(E5:Q5);0)) mi zde jednou poradil Sik…
Pak 28.03.2021 16:08
Pak
Problem je, ze cele to JE.ČISLO(SOUČIN.SKALÁRNÍ(IFERROR((MOD(SLOUPEC(E5:Q5)-4;6)=1)*(E5:Q5);0))) vzd…
Dwane Dibbley 28.03.2021 16:36
Dwane Dibbley
Níže v diskuzi mám upravený vzorec na SOUČIN.SKALÁRNÍ(IFERROR((MOD(SLOUPEC(E5:Q5)-4;6)=1)*(E5:Q5);0)…
Pak 28.03.2021 16:39
Pak
SVYHLEDAT ti ale nehleda posledni hodnotu ve sloupci. To ti hleda cislo 10 v poli B3:B4 a kdyz to na…
Dwane Dibbley 28.03.2021 15:54
Dwane Dibbley
Ano, čtvrtou hodnotu tam nemám, je nepovinná, a v tomhle případě to najde poslední hodnotu, používám…
Pak 28.03.2021 16:12
Pak
Kdyz ji nemas, Excel ma defaultne asi TRUE, a vysledek v tvem pripade je, ze ti vrati posledni hodno…
Dwane Dibbley 28.03.2021 16:29
Dwane Dibbley
Větší hodnota tam být nemůže to mám ošetřeno pomocí Ověřování dat. Já neříkám že tomu rozumím, já ří…
Pak 28.03.2021 16:37
Pak
Pokud potrebujes posledni hodnotu z B3:B4, proc tam proste nedas primo jen B4? Celej ten tvuj vzorec…
Dwane Dibbley 28.03.2021 17:09
Dwane Dibbley
Neanalyzujem jednotlivé odpovede, lebo v tom mám chaos... Keď potrebuješ súčet čísel v každom n-tom…
robert13 28.03.2021 17:46
robert13
To SVYHLEDAT tam ma pry proto, aby mu to vratilo posledni udaj v poli...
Dwane Dibbley 28.03.2021 17:58
Dwane Dibbley
Stále neposkytuje dostatok informácií k tomu, aby človek vedel, čo vlastne chce. Pak-u, kam ten vzo…
robert13 28.03.2021 18:06
robert13
Nejak netusim k cemu je tenhle krkolomny vzorec dobry, ale pokud nemas v B3 ani v B4 cislo tak to ne…
Dwane Dibbley 28.03.2021 15:14
Dwane Dibbley
V B3 je vždy číslo. Ale ano, chyba tam byla. Takto to funguje, jen ne v ve stejném řádku v kterém se…
Pak 28.03.2021 15:23
Pak
OMG, to je skoro to isté, len úplne iné... Poradím: urob si to najprv čiastkovo, po stupňoch, aby si…
robert13 28.03.2021 15:50
robert13
Chyba je v tom, že ten vzorec v jiném řádku funguje jen ne v tom řádku číslo 5. Viz výše vzorec. A t…
Pak 28.03.2021 16:10
Pak
Jo, pridat do vzorce nekonecno je genialni. Nejjednodussi bude napsat co potrebujes aby vzorec delal…
Dwane Dibbley 28.03.2021 16:02
Dwane Dibbley
ono je to totiž celé zbytočné, je to úplne to isté, akoby tam nič iné nebolo, len SVYHLEDAT, navyše…
robert13 28.03.2021 15:55
robert13
Když už sem tu byl zmíněn. Předchozí tazatelův dotaz ZDE Zda je to to samé co řeší nyní, nikdo neví.
Siki83 28.03.2021 18:42
Siki83
Witaj chlape! ;-) Tiež som si spomínal, ale nechcelo sa mi hľadať, aj tak nič ďalej nevieme :beer::p…
robert13 28.03.2021 19:22
robert13
Dobře, zkusím to znovu. 1. Jsem samouk a BFU. 2. Daný vzorec bude v buňce B5. 3. Potřebuju zjisti…
Pak 28.03.2021 21:54
Pak
3. Musi byt v kazde bunce (E5,K5,Q5) cislo aby byla podminka splnena, nebo je podminka splnena pokud…
Dwane Dibbley 29.03.2021 07:21
Dwane Dibbley
Podmínka je splněna pokud alespoň v jedné buňce je číslo.
Pak 29.03.2021 08:35
Pak
Rozumiem tomu dobre, že stačí, ak v jednej z x-tých buniek rozsahu E÷Q bude číslo od 0 do 10 a v tom…
robert13 29.03.2021 09:08
robert13
Pokiaľ platí moja predošlá odpoveď, tak tu máš výsledok (ktorý naplníš ako CSE do bunky B2 a potiahn…
robert13 29.03.2021 09:57
robert13
Ak by sa Ti nechcelo ani prekladať funkcie, tak aj to Ti posielam: Anglická verzia: =IF(OR(IF(ISNUM…
robert13 29.03.2021 10:54
robert13
Díky, funguje to skvěle. :beer: Dík hlavně za trpělivost. Značím vyřešeno.
Pak 29.03.2021 18:32
Pak
:beer: poslední
robert13 29.03.2021 18:53
robert13
robert13 napsal: Inak, je dosť drsné napísať, že si to po sebe ani nebudeš čítať, či je to zrozumite…
Pak 29.03.2021 12:28
Pak
To sme sa naozaj nepochopili, takže beriem späť... Odvolávám, co jsem odvolal a slibuji co jsem slíb…
robert13 29.03.2021 12:32
robert13
Súhlasím s Dwaynem, nepíšeš, či sa vyhodnocuje, či sú všetky x-té bunky v poli E÷Q riadka prázdne al…
robert13 29.03.2021 09:00
robert13

Takže =KDYŽ(JE.ČISLO(SOUČIN.SKALÁRNÍ(IFERROR((MOD(SLOUPEC(E5:Q5)-4;6)=1)*(E5:Q5);0)));SVYHLEDAT(10;B3:B4;1);"")

SVYHLEDAT vyhledá poslední hodnotu ve sloupci - funguje

SOUČIN.SKALALÁRNÍ - vyhledává zda je v daných buňkách hodnota, od sloupce E a pak každý šestý sloupec až po sloupec Q, pokud ano JE.ČÍSLO zjistí zda tam je číselná hodnota, PRAVDA - NEPRAVDA
a ten SOUČIN.SKALÁRNÍ NEFUNGUJE

Nepochopili sme sa.
Viem, čo robia jednotlivé funkcie, ale čo by to malo robiť ako komplet?
Mne to nedáva zmysel z viacerých dôvodov.
Napr čo iné ako číslo by mal byť výsledok SOUČIN.SKALÁRNÍ, keď aj prípad, keď nastane chyba, je nahradený funkciou IFERROR za nulu?
Za ďalšie SOUČIN.SKALÁRNÍ má len jeden argument, takže načo je dobrý namiesto SUM?
Za ďalšie, keďže nikdy iné, než číslo nevyjde, vždy bude výsledkom funkcia SVYHLEDAT.
Za ďalšie, čo chceš dosiahnuť funkciou SVYHLEDAT bez štvrtého argumentu? Približnú hodnotu?
Proste svojim dotazom som chcel spoznať praktický význam, čo chceš dosiahnuť, aby som vedel poradiť, lebo zrejme potrebuješ úplne iný multivzorec

Takže toto SOUČIN.SKALÁRNÍ(IFERROR((MOD(SLOUPEC(E5:Q5)-4;6)=1)*(E5:Q5);0)) mi zde jednou poradil Siki83 a funguje to. Jde o to že potřebuju sečíst každou x-tou buňku v řádku.

IFERROr tam je proto že mizi tím jsou i buňky s textem a chybu to nahradí nulou, to je v pořádku.

Pokud SOUŘIN.SKALÁRNÍ nahradím např. JE.ČÍSLO(E5) tak celý ten vzorec funguje bez problému. Ale co když bude číslo ne v E5, ale v Q5? Ano to jsou tři buňky E5, K5 a Q5, ale těch buněk tam bude min. 100 spíš více.

Takže jak jinak zjistit zda součet těch buněk je 0 nebo nějaké (lhostejno jaké) číslo? Vypisovat to do vzorce fakt nebudu.

V SVYHLEDAT je čtvrtý argument nepovinný.

Snad jsem na nic nezapomněl.

SVYHLEDAT ti ale nehleda posledni hodnotu ve sloupci. To ti hleda cislo 10 v poli B3:B4 a kdyz to najde desitku, vrati to hodnotu z prvniho sloupce daneho pole (vzhledem k tomu, ze pole je jeden sloupec, tak to vrati prave tu nalezenou 10). Nemas 4 parametr TRUE/FALSE, takze to prakticky hleda 10 nebo nizsi cislo, pokud neni v poli 10 a nizsi cislo, dostanes error. Navic vysledkem vzorce je vzdy to, co vyhodi SVYHLEDAT, to vse pred tim nedela prakticky nic (resp. je vzdy stejny vysledek a spusti to SVYHLEDAT).

Větší hodnota tam být nemůže to mám ošetřeno pomocí Ověřování dat. Já neříkám že tomu rozumím, já říkám že mi to funguje. A TRUE to má defaultně to je pravda. A když to má defaultně proč bych to tam měl psát, když i Mrkvosoft uvádí že to je nepovinné?

A podle mě, každá funkce něco dělá jen za určitých podmínek, ale možná to tak není, nejsem v Excelu expert, ale jen BFU.

A pokud tedy potřebuji poslední hodnotu, jakou funkci mám použít? Rád se nechám poučit, nevím všechno.

Pokud potrebujes posledni hodnotu z B3:B4, proc tam proste nedas primo jen B4? Celej ten tvuj vzorec vypada jako brutalni slatanina a ani nedokazes rict co by ten vzorec mel delat, co by z nej melo vylezt. Rekneme, ze B3=6, B4=7 a E5:Q15 bude vyplneno postupne cisly 1-13. Co by melo byt jako vysledek v B5 a proc?

Neanalyzujem jednotlivé odpovede, lebo v tom mám chaos...

Keď potrebuješ súčet čísel v každom n-tom stĺpci s ošetrením voči tomu, keď sa v niektorej bunke nachádza nečíselná hodnota, tak to ti splní tento vzorec:
=SUMA(KDYŽ(JE.ČISLO(E5:Q5);(E5:Q5);0)*(MOD(SLOUPEC(E5:Q5)-4;6)=1))
zadaný ako maticový (nahradzuje skalárny súčin). T.j. vzorec zadáš nielen stlačením ENTER, ale stlačením SHIFT+CTRL+ENTER

Parametre vo funkcii MOD určujú každý šiesty stĺpec počítajúc od piateho stĺpca (stĺpec E=1).

Čo ďalej? Aký účel tam má mať SVYHLEDAT?

Dobře, zkusím to znovu.

1. Jsem samouk a BFU.

2. Daný vzorec bude v buňce B5.

3. Potřebuju zjistit zda v buňkách E5, K5, Q5 je číslo nebo jsou prázdné. Myslel jsem že ty Buňky sečtu a použiju funkci JE.ČÍSLO. Ale pak jsem zjistil, že i když jsou buňky prázdné, vypadne z toho číslo 0. Proto jsem to pak porovnával s nulou <>0.
Myslel jsem že tato funkce která to zjišťuje bude jako podmínka u funkce KDYŽ.
Takže potřebuju zjistit zda v daných buňkách je číslo nebo ne. Není tam žádný vzorec.
Pak si to rozšířím podle potřeby.

4. Pokud podle bodu 3. zjistím, že tam není žádné číslo, popř. to sečte 0 tak podmínka u funkce KDYŽ bude Ne a do buňky B5 se zapíše "".

5. Pokud podle bodu 3. zjistím, že tam je jakékoliv číslo větší než 0 a rovno nebo menší než 10 tak pomocí funkce SVYHLEDAT najdu poslední hodnotu ve sloupci B a ta se zapíše do buňky B5.
Někdo tu psal ať to nezjišťuju a dám tam kopírovat buňku B4.
Já většinou každý den do jednoho řádku do buněk E5, K5, Q5 budu psát čísla. 1 řádek = 1 den. Ale některé dny tam nic psát nebudu. Předem nevím, které dny to budou. Jak pak zjistím jaká je poslední hodnota ve sloupci B?
Já na to používám funkci SVYHLEDAT, ale bylo mi tu vysvětleno že není k tomu určena. Také jsem dříve používal Funkce INDEX a POČET, nevý jestli jsou na to určeny.

6. Teď tu někdo napáše, aby sem nahrál tabulku. Ano to mohu. Ale jediné to v té tabulce bude je vzorec:

=KDYŽ(A(JE.ČISLO(A5);SUMA(KDYŽ(JE.ČISLO(E5:Q5);(E5:Q5);0)*(MOD(SLOUPEC(E5:Q5)-4;6)=1))<>0;POČET(E$3:E4)=POČET2(H$3:H4));SVYHLEDAT(9,99999999999999E+307;B$3:B4;1);"")

popřípadě

=KDYŽ(A(JE.ČISLO(A5);SUMA(KDYŽ(JE.ČISLO(E5:Q5);(E5:Q5);0)*(MOD(SLOUPEC(E5:Q5)-4;6)=1))<>0;POČET(E$3:E4)=POČET2(H$3:H4));SVYHLEDAT(9,99999999999999E+307;B$3:B4;1);"")

v buňce B5.

7. Ano, máte pravdu, zapomněl jsem sem napsat že mi to hází chybu ...sešit obsahuje cyklický odkaz...
Myslel jsem že bude stačit napsat co jsem napsal do dotazu tj.

ale nefunguje, protože je v buňce B5, tj. na stejném řádku. Když ho dám na jiný řádek funguje.

Myslel jsem že to bude jasné.

8. Čekám odpověď, tohle nebudu číst, ale kratším slohem to popsat neumím.

9. Snad jsem to popsal dost podrobně. Pokud to bude stále málo informací, už nevím co bych k tomu napsal.

Rozumiem tomu dobre, že stačí, ak v jednej z x-tých buniek rozsahu E÷Q bude číslo od 0 do 10 a v tom prípade bude v bunke B aktuálneho riadka zapísané najbližšie vyššie uvedené číslo v stĺpci B (pričom ono číslo udáva číslo predchádzajúceho riadka, v ktorom bola splnená podmienka pre ono predchodzie pole E÷Q?)

Pokiaľ platí moja predošlá odpoveď, tak tu máš výsledok (ktorý naplníš ako CSE do bunky B2 a potiahneš toľko nadol, koľko potrebuješ):
=IF(OR(IF(ISNUMBER(E2:Q2)*((E2:Q2)>0)*((E2:Q2)<10);1;0)*(MOD(COLUMN(E2:Q2)-4;6)=1));MAX(ROW($B$1:INDIRECT("B"&ROW()-1))*(($B$1:INDIRECT("B"&ROW()-1))<>""));"")

Čo to robí?:
Ak aspoň v jednej z x-tých buniek v rozsahu stĺpcov E až Q aktuálneho riadka je číslo, ktoré je v intervale (0;10), tak výsledkom v bunke B aktuálneho riadka bude číslo riadka, v ktorom je toto všetko splnené pre predošlý prípad

V prílohe máš ukážku. Toľko by si mohol dokázať, aby si aspoň natvrdo dokázal takto demonštrovať požiadavku...
Inak, je dosť drsné napísať, že si to po sebe ani nebudeš čítať, či je to zrozumiteľné. To Ti naša práca na rade pre Teba ani nestojí za to, skontrolovať po sebe zrozumiteľnosť a presnosť textu?

Ak by sa Ti nechcelo ani prekladať funkcie, tak aj to Ti posielam:

Anglická verzia:
=IF(OR(IF(ISNUMBER(E2:Q2)*((E2:Q2)>0)*((E2:Q2)<10);1;0)*(MOD(COLUMN(E2:Q2)-4;6)=1));MAX(ROW($B$1:INDIRECT("B"&ROW()-1))*(($B$1:INDIRECT("B"&ROW()-1))<>""));"")

Česká verzia
=KDYŽ(NEBO(KDYŽ(JE.ČISLO(E2:Q2)*((E2:Q2)>0)*((E2:Q2)<10);1;0)*(MOD(SLOUPEC(E2:Q2)-4;6)=1));MAX(ŘÁDEK($B$1:NEPŘÍMÝ.ODKAZ("B"&ŘÁDEK()-1))*(($B$1:NEPŘÍMÝ.ODKAZ("B"&ŘÁDEK()-1))<>""));"")

A to som pozrel po sebe ešte i druhýkrát... aj keď... zaslaný príklad to preloží automaticky...
Opakujem: zadať ako maticový vzorec!

robert13 napsal: Inak, je dosť drsné napísať, že si to po sebe ani nebudeš čítať, či je to zrozumiteľné. To Ti naša práca na rade pre Teba ani nestojí za to, skontrolovať po sebe zrozumiteľnosť a presnosť textu?

8. Čekám odpověď, tohle nebudu číst, ale kratším slohem to popsat neumím.

To jsme se nepochopily, já to myslel tak, že mi někdo napíše, že ten můj sloh někdo číst nebude a napíše mi že to je moc dlouhý a číst to nebude. Pokud to bylo pochopeno jinak tak se omlouvám.

Jinak děkuji jdu to vyzkoušet.

To sme sa naozaj nepochopili, takže beriem späť...
Odvolávám, co jsem odvolal a slibuji co jsem slíbil... :-D
Naozaj neviem, či si chcel mať v stĺpci B to, čo som tam dal, alebo tam má byť nejaký výsledok vyplývajúci z poľa E÷Q z posledného vyššieho riadka, spĺňajúceho kritériá...
Ale myslím, že už sme aspoň bližšie...

Súhlasím s Dwaynem, nepíšeš, či sa vyhodnocuje, či sú všetky x-té bunky v poli E÷Q riadka prázdne alebo stačí, pokiaľ je jedna prázdna.
Potom v bode 5 píšeš, že je tam akékoľvek číslo... kde? V súčte? Alebo v tých x-tých bunkách riadka? Má byť súčet medzi 0 a 10 alebo tie jednotlivé bunky? Všetky x-té v riadku?

Ako nájdeš riadok najbližšie vyššie vyplnenej bunky v stĺpci B?:
Pokiaľ sa nechceš zacykliť, nemôžeš do vzorca zahrnúť rozsah, v ktorom sa nachádza bunka, v ktorej má byť výsledok. Preto vymyslíš vyhodnocovanie, ktoré bude dynamicky poskytovať rozsah len po predošlý riadok.
Do bunky B2 napíš vzorec:
=IF(AND(D2>0;D2<10);MAX(ROW($B$1:INDIRECT("B"&ROW()-1))*(($B$1:INDIRECT("B"&ROW()-1))<>""));"")
Zadaj ho ako CSE (Ctrl+Shift+Enter, t.j. maticový vzorec) a potiahni nadol.

Tento vzorec vyhodnocuje, či je v bunke D2 hodnota v intervale (0;10) a keď áno, v bunke stĺpca B bude uvedené číslo najbližšieho vyššieho riadka v stĺpci B, v ktorom bola splnená podmienka, že v bunke D toho riadka bude číslo v intervale (0;10).
Bunku D som zaviedol ako pomocnú, kvôli tomu, že stále nevieme vyhodnotenie poľa E÷Q. Pokiaľ budeme vedieť, ako vyhodnotiť pole E÷Q, tak týmto vyhodnotením sa nahradí odkaz na bunku D vo vzorci

Zpět do poradny Odpovědět na původní otázku Nahoru