< návrat zpět

MS Excel


Téma: Maticový vzorec rss

Zaslal/a 4.7.2022 9:15

Ahojte,
snažím se vytvořit (maticový) vzorec na následující problém a zatím se nezdařilo. Mám tabulku s iniciály jmen (použil jsem jen 1. písmeno, aby se to tu textově nerozpadlo) a první řádek je číselný s vahami hodnot pro sčítání v daném sloupci:

5| 6|7| 8|9
M|X|A|M|A
Y|M|M|A|X
M|Y|M|A|A
U|B|M|C|D

A já potřebuju zjistit "součet M s použitím váhy daného sloupce". Tedy pro "M" by byl výsledek: 2*5 + 1*6 + 3*7 + 1*8

Zatím to umím jen s mezivýpočty ve sloupcích, ale dostat to do jednoho vzorce se mi zatím nepodařilo.

Poradíte prosím někdo? ;-)

Jméno
Kontrola
Text
  b i u s img code url hr   1 2 3 4 5 6 7 8 9 10

Strana:  1 2   další »
#052955
avatar
=SUMA(A1*COUNTIF(A2:A5;$G$1);B1*COUNTIF(B2:B5;$G$1);C1*COUNTIF(C2:C5;$G$1);D1*COUNTIF(D2:D5;$G$1);E1*COUNTIF(E2:E5;$G$1))

Pričom v bunke G1 máš písmeno, pre ktoré má vypočítať výsledokcitovat
#052956
avatar
ak chceš maticový vzorec, tak to vidím takto (čo je komplikovanejšie?):
=SUM((A1:E1)*COUNTIF(INDIRECT(CHOOSE(COLUMN(A1:E1);"A";"B";"C";"D";"E")&2&":"&CHOOSE(COLUMN(A1:E1);"A";"B";"C";"D";"E")&5);$G$1))

v českej verzii:
=SUMA((A1:E1)*COUNTIF(NEPŘÍMÝ.ODKAZ(ZVOLIT(SLOUPEC(A1:E1);"A";"B";"C";"D";"E")&2&":"&ZVOLIT(SLOUPEC(A1:E1);"A";"B";"C";"D";"E")&5);$G$1))

pričom platí to, čo som popísal v predošlej odpovedi, t.j. že v bunke G1 je písmeno, pre ktoré chceš vypočítať výsledokcitovat
#052957
avatar
Stačí

=SUMA(SOUČIN.MATIC(--(A2:E5="M");TRANSPOZICE(A1:E1)))citovat
#052958
avatar
Lubo krásne!citovat
#052959
avatar
Díky r13 a Lubovi za odpovědi. Ta Lubova odpověď mi přijde geniální, úplně hledím, jak se daly využít skutečné matice a jejich násobení :-)

Ještě jsem neuvedl jednu drobnost, tak kdybyste ještě měli i k tomuto nápad, budu rád.

V těch buňkách totiž nebudou iniciály jen jednoho člověka, ale více lidí. Např. AMD (Adam, Mira, David). Tu rovnost bych teda potřeboval řešit zřejmě hvězdičkovou konvencí, něco jako: A2:E5="*M*"

To umím "udělat" pomocí COUNTIFS, např., ale když tam budu chtít nacpat maticovou oblast A2:E5 (s cílem, aby ji zpracovával buňku po buňce a výsledek zase jako matici), tak to tahle funkce schlamstne/zpracuje rovnou jako oblast, tedy nematicově (jako vstup bere jakoukoliv oblast, ne jen jednu buňku).

I na tohle byste prosím někdo měli nějaký nápad? :-)

Díky obrovské, Mira ze Zlínacitovat
#052960
elninoslov
=SUM(MMULT(--(NOT(ISERROR(FIND(G1;A2:E5))));TRANSPOSE(A1:E1)))
=SUMA(SOUČIN.MATIC(--(NE(JE.CHYBHODN(NAJÍT(G1;A2:E5))));TRANSPOZICE(A1:E1)))
citovat
#052962
avatar
No teda, tak to mě nenapadlo, že jde použít funkce NAJÍT :-)

Já hledal různé funkce s hvězdičkovou konvencí, ale vlastně zbytečně, když lze použít hledání a v rámci jedné buňky (takže to pak lze použít i maticově).

Moc všem díky, Excel (a vy) umí fakt snad vše :-)citovat
#052963
elninoslov
Stačil by aj obyčajný maticový SUM bez MMULT
=SUM(NOT(ISERROR(FIND(G1;A2:E5)))*A1:E1)
=SUMA(NE(JE.CHYBHODN(NAJÍT(G1;A2:E5)))*A1:E1)

alebo dokonca nematicový zápis
=SUMPRODUCT(NOT(ISERROR(FIND(G1;A2:E5)))*A1:E1)
=SOUČIN.SKALÁRNÍ(NE(JE.CHYBHODN(NAJÍT(G1;A2:E5)))*A1:E1)

A ak by sa malo nejaké meno vyskytovať viackrát v jednej bunke treba to riešiť inak, napr. nematicovo takto:
=SUMPRODUCT((LEN(A2:E5)-LEN(SUBSTITUTE(A2:E5;G1;"")))*A1:E1)
=SOUČIN.SKALÁRNÍ((DÉLKA(A2:E5)-DÉLKA(DOSADIT(A2:E5;G1;"")))*A1:E1)

Čo je zatiaľ jediný z uvedených spôsobov, ktorý dá výsledok 0, ak je hľadaná bunka G1 prázdna :).citovat
#053025
avatar
elninoslov:
Tak to je neuvěřitelné, kolik Vás napadlo možností a jakých, dokonce i bez maticových vzorců. To budu ještě nějakou chvíli zkoumat a studovat :-))

Víckrát by v jedné buňce nikdo neměl být, ale zavádím tam tohle: Mám tam iniciály dané osoby ohraničené znakem "|".

Když je tam |MP|, tak beru celou hodnotu z 1. řádku.
Když je tam |MP2|, tak beru polovinu hodnoty z 1. řádku.
Když je tam |MP3|, tak beru třetinu hodnoty z 1. řádku.
Když je tam |MP4|, tak beru čtvrtinu hodnoty z 1. řádku.

Jde o rozvrh a obsah buňky může vypadat např. takto:
"MAT |MP|XY2|YZ2", kde se pro MP započítá celá hodnota, ale XY a YZ jen polovina té hodnoty (délky vyučovací hodiny).citovat
#053026
avatar
Oprava: "MAT |MP|XY2|YZ2|"citovat

Strana:  1 2   další »

Uživatelské menu

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

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

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

Aktivní diskuse

Vynásobit hodnoty kurzem - Power Query

lubo • 25.4. 19:18

Relativní cesta - zdroje Power Query

elninoslov • 25.4. 15:12

Relativní cesta - zdroje Power Query

Alfan • 25.4. 15:08

Relativní cesta - zdroje Power Query

elninoslov • 25.4. 14:21

Relativní cesta - zdroje Power Query

Alfan • 25.4. 10:49

Relativní cesta - zdroje Power Query

elninoslov • 25.4. 10:47

Relativní cesta - zdroje Power Query

Alfan • 25.4. 10:40