Szevasztok!
Egy piti OOo Calc problémám van: adott egy táblázat, az A jelű oszlopban dátumok vannak (ÉÉÉÉ-HH-NN formátumban), a B oszlopban pedig sima számok.
Olyan függvényt akarok írni, ami csak egy adott hónapra összesíti a számokat, azaz akkor adja össze a B oszlop értékeit, ha az A oszlop aktuális sora pl. februárt definiál.
SUMIF-fel (fejből):
SUMIF(A1:A100; ???; B1:B100)
Tehát nem tudom, mi legyen benne a feltétel. Lehetne MONTH, de a MONTH(A1:A100) valami tök fals és hülye értéket ad. Nekem az kéne, ha egy futó változó értékét behelyettesíthetném, pl. SUMIF(A1:A100; MONTH($POS) = 2; B1:100), azaz $POS a futó változó, ami az A1:A100 tartományban éppen kiértékelt cella értékét tartalmazza. Na ilyet nem találtam, de ettől még lehet. Próbálkoztam mindenféle feltételekkel, sikertelenül. A SUMIF feltétel mezője (2. paraméter) elfogad relációkat, de olyan relációt nem tudtam neki megadni, hogy "az _aktuális_ mező hónap része = 2", mert a MONTH() függvénynek konkrét sorra van szüksége, ha tartományt adok meg neki, akkor furcsa értéket ad vissza. Olyat meg nem akarok beirogatni neki, hogy "=2008-02".
Próbáltam úgy is elindulni, hogy a megadott tartomány már előre "szűrve" van, tehát elvileg az A1:A100-ból csak azok maradnának, amik februáriak. Tehát megadom a Calc-nak, hogy pl. A1:A100, valami ügyes feltételbe ágyazva, és ő a memóriában már csak azokat az elemeket tartja meg, amik egyeznek a kritériummal (MONTH($POS) = 2). Elvileg vmi ilyesmit tudna a Calc is, csak nem tudom, hogyan lehet előcsalogatni.
Makrót nem akarok írni, nem hiszem el, hogy nem lehet simán a cellákba írt függvényekkel megoldani.
Átnéztem pár Google találatot, egyik sem volt jó.
Tudtok segíteni?
Kösz
- 1459 megtekintés
Hozzászólások
Miért nem csinálsz egy oszlopot, ahol a MONTH() fv-nyel kiszeded az A1:A100-ból a hónapokat? Mondjuk a C1:C100-ba. Aztán SUMIF(C1:C100; "=2"; B1:B100).
Értem én, hogy te beágyazva akarod a MONTH fv-t a SUMIF-ba, de miért nem jó így? (Azt azért még messze elkerüli a megoldásom, hogy makro-t írj.)
- A hozzászóláshoz be kell jelentkezni
Így nekem is ment volna :)
Azért nem csinálok, mert sok oszlop van, több sheet, és abszolút semmi keresnivalójuk ott ideiglenes oszlopoknak, melyeket csak a számítás kedvéért teszek oda.
--
http://www.open-st.eu
- A hozzászóláshoz be kell jelentkezni
A sumif függvény feltétel mezőjében működnek az OOo reguláris kifejezései. Attól függően, hogy a dátum mezők milyen nyelvre vannak beállítva, más regexpet kell használnod. Pl., ha magyarra van állítva a nyelv, akkor ha a dátumot tartalmazó cellára kattintasz, akkor ilyesmit látsz:
2011-04-02
Az ilyen formátumű dátumkból pl egy ilyen sumif tudja kiszedni az áprilisi dátumokat:
=SUMIF(A$2:A$7;"....-04-..";B$2:B$7)
Ha angol a dátummezők nyelve, akkor valami ilyesminek mutatja a dátumot:
04/02/2011
Ekkor értelemszerűen módosítani kell a regexpet is:
=SUMIF(A$2:A$7;"^04.*$";B$2:B$7)
Letesztelve, működik.
- A hozzászóláshoz be kell jelentkezni
Köszönöm! Mindjárt ki is próbálom :)
--
http://www.open-st.eu
- A hozzászóláshoz be kell jelentkezni
A pontos megoldás (hiányzott egy = ):
=SUMIF(A$2:A$7;"=....-04-..";B$2:B$7)
--
http://www.open-st.eu
- A hozzászóláshoz be kell jelentkezni
Hmm. Lehet, hogy verziófüggő, mert nálam megy = nélkül is.
De a lényeg, hogy sikerült megoldani.
Csaba
- A hozzászóláshoz be kell jelentkezni