Az „Excel” fórum célja, hogy keretet adjon az Excel felhasználók széles táborának tapasztalataik megosztására, és lehetőséget a segítséget kérőknek. Az alábbi összefoglaló azért készült, hogy segítse a helyes kérdésfeltevést.
– Írd le szabatosan a problémát. Úgy fogalmazz, hogy ne csak te magad, de a szakértő is megértse, mire szeretnél választ kapni.
– Írd le, hogy milyen verziójú Excellel dolgozol. (Vagy ha nem – ill. nem csak – Excel, akkor micsoda?)
– Írd le, hogy milyen úton indultál el, és hol akadtál el rajta.
– A kérdés megértése szempontjából sokat segíthet, ha feltölteszt egy képet, amin látszik, hogy mit szeretnél, vagy illusztrálja azt.
– Még jobb, ha feltöltesz egy minta munkafüzetet valahová (pl. data.hu). Feltöltés előtt távolítsd el belőle a nem publikus adatokat.
– Ha a feladat jellege olyan, célszerű az "előtte" és "utána" állapotokat bemutatni. (Miből kellene csinálni mit?)
– Ha VBA kódon kell javítani, másold be a releváns kódrészt. Rövid kód mehet hozzászólásba, hosszú kód inkább ide: http://pastebin.com/
– Ha valami nem úgy működik, ahogy kellene, add meg a rendellenes viselkedés jellemzőit, a hibaüzenetet, és a hibát okozó programsort.
A makrók futása iszonyatosan lelassult egy táblázatban.
Ha duplán kattintok (mert a dátumot íratom be), akkor a lap alján kiírja, hogy: "számítás (2 processzor):" majd százalékérték emelkedik 100%-ig. Amikor 100 lesz, akkor fejeződik be a makró futása, de ez vagy 6 másodperc.
3-4 egyéb makró van benne, meg alig pár adat, még csak most kezdtem felépíteni. 2003 és 2007 alatt is produkálja. Más dokumentumban lévő makrók rendben futnak.
Azt hiszem, le is fagyna két hétre a gépem... Egyszer már nekiláttam fejleszteni egy programot, amelyik Pegasus Mail formátumú levelekké konvertál egy topikot, és így szét lehet dobálni folderekbe, csak aztán leálltam. Igazából azt hiszem, a wiki az ilyen szerteágazó ismeretek rendszerezésének a korszerű módja, a másik gépemen van is már telepítve egy saját wiki, csak az éppen megmurdelt alaplapilag.
A tervedhez adok egy ötletet. Hívd be az egész topikot, van ennek valami módja, valaki már megírta nekem, csak már elfeljtettem hova tettem. Majd Ctrl+C CTRL V-el másold át Éxcelbe Egy bekezdés-egy cella. Ami jól olvasható, ha rámutatsz az egérrel. Persze állíthatsz is a cellaméreten, de az babrásabb. Na most ezt végigolvasva a szomszédos cellában megjelölheted a téged érdeklő postokat, akár le is tárgyszavazhatod őket, majd a téged nem érdeklőket törlöd. Elötte persze még érdemes a sorokat sorszámmal ellátni, hogy törlés után a sorrendet helyreállíthasd.
Találkoztatok már azzal a buggal, ami az Autamatikus javítások-ra való klikkelésnél nem a megfelelő lapra, hanem a Windows XP filekeresőjére ugrik (Excel 2003-ban). Mert nálam momentán ez van, és elég bosszantó. Ha nálatok jelentkezne ilyesmi, hogy próbálnátok meg a helyreállítani?
Van valami mód makrók nélkül arra, hogy megvizsgáljuk, a mai dátum meghaladta-e az egyik cellában beállított dátumot? Hogy lehet lekérdezni az épp aktuális dátumot?
Gondolom, igen, ugyanezzel a logikával. ÉV(A1:A100)=2010 -- ez egy logikai kifejezés, amely az igazhoz egyet, a hamishoz nullát rendel. Ha a B1 helyébe azt írod, hogy (B1:B100="B"), akkor valósznűleg minden B betűhöz egyet rendel, és megkapod a darabszámot összegként.
Köszi, akkor fel is hozom ide, hogy könnyebb legyen megtalálni (előzmény). Csak azt hiszem, hogy ezt elég nehéz módosítani, ha a 30. sor alá újabb adatokat viszünk be, tehát bizonyos értelemben nem illeszkedik az Excel filozófiájába, de kétségtelenül nagyon hasznos.
Már többször elhatároztam, hogy egyben végigolvasom és kijegyzetelem az egész topikot, mivel elképesztő mennyiségű bölcsesség van itt felhalmozva, de mindig megálltam egy bizonytalan jövő idejű elképzelésnél. :-)
Akkor nem fogalmaztam világosan, mert akik ezt csinálják, sosem hallottak tömbfüggvényről. Beírja a tag az 1. sorba, hogy A1:A30, noha ott éppen csak az első sor adatával dolgozik (mindegyik mellett egy eredménynek kell látszania), majd megfogja a jobb alsó sarkát az egérrel, és folytatja a 30. sorig. Ahol lesz belőle A30:A59, de ennek már semmi köze a táblázat adataihoz.
Mondjuk még a felvetésedhez hozzátartozik az, hogy a HA(A1>100...) egy cellába kerül, addig a HA(A1:A30>100...) egy 30*1-es tömbbe. És a tömbfüggvényes változatot nem sima ENTER-rel, hanem tömbfüggvényhez méltóan CTRL+SHIFT+ENTER-rel kell lezárni.
A tömbfüggvény kevesebb helyet foglal memóriában, bár én a mai számítási és merevlemez kapacitások korában ezt nem érzem átütő érvnek...
Az ellenszenvedet :-) az okozza, hogy a HA függvényt tömbfüggvényként használják, ami szerintem teljesen helyes, néha helyesebb is mint a nem tömbfüggvény.
Én azt szoktam mindíg mondani, hogy ha egy új oszlopot csak azért készítünk, hogy oda kiszámoljunk valamit, amit majd valami más függvény fog bemeneti adatnak használni, akkor az rossz. Többek között az ilyen esetekre találták ki a tömbfüggvényeket.
Vegyük Redlac lenti problémáját. A Hónap adatot csak azért raktad volna egy új oszlopba, hogy utána kielemezhesd, hogy az adott sor egy bizonyos hónaphoz tartozik-e. Felesleges adat a képernyőn, még akkor is ha elrejted.
Helyette a jó megoldás a feladat memóriában elvégeztetése ahogy Delila meg én csináltuk, beágyazva valamilyen más függvénybe (Delila a sumproduct-ot használta én a sum-ot).
Pld. tegyük fel, hogy az A1:A100 tartomány egyszerre tartalmaz string és szám adatokat és meg kellene tudjuk határozni a számok közül az 5. legnagyobbat. (A SMALL függvénynek nem adhatjuk meg a teljes A1:A100 tartományt, mert nem számok is vannak benne).
Hagyományos megoldás az lehet, hogy a B oszlopba berakunk egy HA függvényt, ami ISNUMBER igaz esetén a releváns cella tartalmát (ami szám), hamis esetén nullát (v. egy kellően kis számot ad vissza ami tuti nem kerülhet be az 5 legnagyobb szám közé (pld mínusz egymillió). Ezek után a B oszlopot már vizsgálhatjuk a SMALL (B1:B100,5) függvénnyel, hogy az áhított eredményt megkapjuk.
Ezzel szemben a helyes megoldás a cseréket memóriában elvégezni egy IF függvénnyel és ezt az egészet beágyazni a SMALL függvénybe, valahogy így: =SMALL(IF(ISNUMBER(A1:A100);A1:A100;-1000000),5).
Látszik hogy az IF tökéletesen funkcionál tömbfüggvényként.
Ez nagyon elegáns megoldás! Nekem nem jutott volna eszembe ez sem, hogy ilyen módon lehet tartományokra hivatkozni egy szorzásnál.
Ehhez kapcsolódó kérdés: Gyakran látom, hogy mondjuk a1:a30-ban van valamilyen szám, és akkor a HA(A1>100;'nagy';"kicsi") típusú függvény helyett emberek HA(A1:A30>100;'nagy';"kicsi")-t írnak, aminek a vége persze a sorozat kitöltése után már HA(A30:A59>100;'nagy';"kicsi") lesz, miközben a 30. sor alatt egészen más van. Én erre azt szoktam mondani, hogy rossz, fogalmilag zavaros, noha meglepetésemre a helyes eredményt mindig kiadja. Lehet, hogy tévedtem? Tekinthető ez elvileg egyenértékű helyes megoldásnak? Mert míg egy szorzatösszeg eleve tartományokat szoroz, a HA függvénynek ebben az alkalmazásban értelmezésem szerint csak egy sorban levő adatokkal lehet dolga egyszerre.
Excel array formula series Itt is van. Asszem főiskolán tanít a csóka és a tananyagot felteszi youtube-ra. El sem tudom mondani mennyit tanultam ezekből a videókból. (elsősorban alázatot, mert eddig azt hittem, hogy jó vagyok excelből...)
Tömbképlet, ahogy nagyon helyesen gyanítottad is. Az angol helpben array function címszó alatt érdemes keresni. Ha jobban érdekel akkor a youtube-on keress rá az: "array function" excel -re és találsz rengeteg segítséget.
Külön ajánlom az excelisfun nevű felhasználót. A csóka agyát halála után valszeg el fogja lopni a Microsoft... Persze lehet már előre megvették rá az opciót :-)