Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 12. 1. 2024 22:28:31

lof
Člen
Registrace: 12. 1. 2024
Příspěvků: 3

Podmíněný součet vzorců, ale ne odkazů

Potřeboval bych něco jako SUMIF( A1:A10 ; ISFORMULA() AND NOT ISREF() )

Udělat jedno umím:
SUMPRODUCT( A1:A10 ; ISFORMULA( A1:A10 ) )

ale nedaří se mi tam dostat i tu druhou podmínku (holt už jsem matice zapomněl... ;-))


Díky za pomoc.

Editoval lof (13. 1. 2024 19:46:21)

Offline

#2 16. 1. 2024 23:32:44

lp.
Člen
Registrace: 24. 9. 2009
Příspěvků: 844

Re: Podmíněný součet vzorců, ale ne odkazů

SUMPRODUCT( A1:A10 ; --ISFORMULA( A1:A10 ); --NOT(ISREF( A1:A10 )) )

nebo

SUMPRODUCT( A1:A10 ; --ISFORMULA( A1:A10 ) * NOT(ISREF( A1:A10 )) )


Problém je ale ve funkci ISREF:

Obsah buňky A1 = SUM(A2):

=isref(a1) = pravda (protože a1 je odkaz, na obsah se funkce nedívá)

Vnutíme do argumentu výraz v buňce:

=ISREF(INDIRECT(MID(FORMULA(A1);2;10000))) = nepravda (protože SUM(A2) odkaz není)


ale při použítí na pole vrací:

=ISREF(A1:A10) = pravda (protože A1:A10 je platný odkaz, maticově to neveme)

a

=ISREF(INDIRECT(MID(FORMULA(A1:A10);2;10000))) = nepravda (indirect odkazy vrátí, ale isref to vyhodnotí jako jeden výraz)

Offline

#3 17. 1. 2024 08:35:33

lof
Člen
Registrace: 12. 1. 2024
Příspěvků: 3

Re: Podmíněný součet vzorců, ale ne odkazů

lp. napsal(a)

SUMPRODUCT( A1:A10 ; --ISFORMULA( A1:A10 ); --NOT(ISREF( A1:A10 )) )

nebo

SUMPRODUCT( A1:A10 ; --ISFORMULA( A1:A10 ) * NOT(ISREF( A1:A10 )) )

Hurá, tak matice jsem nezapomněl. ;-)


To vaše řešení bohužel nefunguje.


Zjistil jsem, že nemožnost využití konstrukce s ISREF() je zjevně v tom, že ISREF() testuje jen to, co je v závorce, nikdy to, na co to potenciálně odkazuje, tzn. ISREF(A1) = vždy TRUE i kdybych měl v A1 číslo, text, boolean, nic atd...


(V tom případě mi to přijde jako zcela zbytečná funkce, protože řeší jen sama svůj obsah, podobně jako bych třeba napsal =SIN(1), tj. dobrá tak akorát k okamžitému ověření, jestli to, co je argument, lze vyhodnotit jako odkaz. Zajímal by mne nějaký usecase, protože bez vyhodnocování obsahu závorky jako odkazu, a tudíž testování hodnoty v odkazované buňce, si jej nedovedu představit.)


Žádnou další funkci, která by zjišťovala, jestli je obsah odkazované buňky odkaz se mi nepodařilo nalézt. :-/ Takže nejspíš budu muset vymyslet nějakou obezličku s pomocí SEARCH( "INDIRECT", ... ), protože vím, že buňky jsoucí odkazy jsou vždy odkazy pomocí INDIRECT. (Ale není to moc obecné řešení :-/)


A člověk by řekl, že jsem chtěl triviální záležitost...

Offline

#4 18. 1. 2024 19:26:56

lp.
Člen
Registrace: 24. 9. 2009
Příspěvků: 844

Re: Podmíněný součet vzorců, ale ne odkazů

Četl jste, co jsem napsal?

První otázka zněla, jak napsat podmínku...

Pak jsem popsal, proč to nefunguje + pro fungování dotazu potřebujete aby isref s polem v argumentu vrátilo také pole.

Mimochodem, nejsem si jist, jestli víte, co chcete. isref vyhodnocuje jakýkoliv odkaz jako odkaz, tedy isref(INDEX(A1:A12;5;1)) = pravda.

Nouzovým řešením může být pomocný sloupec. Jak vyhodnotit obsah buňky pomocí isref viz výše.

Offline

Zápatí