Van egy (két) régi problémám, amire mai napig nem találtam egyszerű megoldást.
Adott ez a táblázat:
A B C
4 a 1
2 b 1
1 b 0
4 a 0
6 a 1
8 b 0
7 b 1
Hogy tudom összeadni egy képletben az A oszlop azon sorait, amelyekben B="a" és C=1
A SUMIF képletet, vagy mást lehet-e úgy megformázni, hogy két oszlopban szereplő feltételek alapján adja össze a 3. oszlopban található adatokat.
A másik erre a problémára is megoldást nyújtó kérdésem, az az, hogy a képleten belül lehet-e valahogy hivatkozni az éppen vizsgált cellára:
=SUMIF(C1:C7;1;A1:A7)
Ebben az esetben a vizsgálat gondolom úgy történik, hogy a libreoffice veszi a C1 majd a C2, stb. cellát és összeveti a feltétellel, és ha egyenlőek, akkor hozzáadja az eddigi összeghez az A1 cella értékét.
Hasonló képletnél, a feltétel helyett szeretnék egy saját képletet felhasználni:
=SUMIF(C1:C7;Cx+3=1;A1:A7)
ahol Cx az éppen vizsgált (C1, C2, C3, C4, C5...) cellának az értékét adja vissza.
Ilyen problémára létezik megoldás?
Megoldás az első problémára:
Mivel itt nem kaptam választ, tovább nézelődtem, kérdezősködtem és végül a
users@global.libreoffice.org levelezőlistán kaptam egy megoldást az első problémámra, és annak alapján találtam én is egy másik megoldási lehetőséget:
Az egyik megoldást a DSUM függvény adja, aminek meg kell adni három paramétert. Az első a táblázatom, aminek kell legyen fejléce, ami most legyen A, B, C, a második az összeadandó oszlop fejléccíme, ami A és a harmadik a feltételtáblázat, ami megmondja, hogy a B oszlop értéke legyen "a" és a C = 1
A képlet pedig:
=DSUM( A1:C8,"A", G1:H2)
Ahol a G1:H2 cellákban ez van:
G1: B
H1: C
G2: a
H2: 1
2. Megoldás:
=SUM( (A1:A7 = 3)*(B1:B7 = "a") * C1:C7)
és a képlet beírása után CTRL+SHIFT+ENTER-t kell nyomni, mivel ez egy tömb kifejezés.
Ha az A1:A7 megfelelő értéke 3 akkor a logikai művelet 1-et ad vissza, amit beszoroz a B1:B7="a" logikai művelet eredményével és ha mindkettő 1, akkor azt beszorozza a C1:C7 megfelelő értékével és az egészet összeadja, tehát megkapom a várt végeredményt.
Egy megoldás, ami elvileg mindent megoldhat:
=SUMPRODUCT(A1:A7,B1:B7+3=4,C1:C7="a")
=SUMPRODUCT(A1:A7,B1:B7=0,C1:C7="a")
- 2744 megtekintés
Hozzászólások
A probléma megkerülése: Csinálsz egy D oszlopot a Dx:=IF(AND(Cx=1;Bx="a");A1;0) tartalommal, és a D oszlopot adod össze.
-----
A kockás zakók és a mellészabások tekintetében kérdezze meg úri szabóját.
- A hozzászóláshoz be kell jelentkezni
Igen, ezt a gyakorlatot alkalmaztam eddig, de bízom benne, hogy létezik mégis valami megoldás.
- A hozzászóláshoz be kell jelentkezni
Én picit bonyolítottam. A D oszlopba 1-et írattam a feltétellel, ha teljesült, ha nem, akkor 0-t, aztán a végén SUMIF-fel összeadtam. Csak tudnám, miért bonyolítottam el. :)
Mondjuk nem tudtam, hogy az egyenlőségre vizsgálás operátor =, s nem ==, ahogy ezt megszokhattuk a legtöbb helyen.
tr [:lower:] [:upper:] <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Tényleg, aktuális sorra, oszlopra hogyan lehet hivatkozni? Arra gondolok, hogy az indexeket ne kelljen soronként módosítani.
tr [:lower:] [:upper:] <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
??
Beírod az első képletet, és utána másolod a többi cellába, és automatikusan helyesek lesznek az "indexek". Hacsak nem abszolút hivatkozásokat használsz.
-----
A kockás zakók és a mellészabások tekintetében kérdezze meg úri szabóját.
- A hozzászóláshoz be kell jelentkezni
Megfogtam a keret jobb alsó sarkát, s úgy másoltam. Tudom, miért nem írta át: text konstansnak nézte, mert lemaradt az = az elejéről.
tr [:lower:] [:upper:] <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Az első problémára találtam megoldást. Leírtam a bevezetőben.
- A hozzászóláshoz be kell jelentkezni