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.
Azért nem fogja kiadni, mert ez nem Access, és az Accessben is csak szövegeket kezelhetnél ilyen módon, számokat nem (legfeljebb agyonbonyolítva, ha szövegként tárolod, szétszeded, konvertálod...)
A legegyszerűbb újratervezni a táblázatot. Egy cellába egy szám kerüljön.
Korábban Limmux írt hasonló bejegyzést, most olvasom.
A robbanómester segített neki, de nekem nem sikerül ezzel a megoldással sem.
Ha pl.A1-A10 celláig szeretném megtudni hány db. 3.-as található,s pl.A5 cellában lévő értékek 1,3,5 akkor nekem azzal a képlettel hogy A1:A10 kritériumnak pedig *3* nem adja ki az összes hármas számot.
Szakdolgozatom kérdőíveit próbálom kiértékelni Excel segítségével.
Az egyes kérdésekre adott válaszokat számokkal helyettesítettem, a könnyebb átláthatóság érdekében.
Van olyan kérdés, amire töb választ is adhattak a megkérdezettek, így egy cellába több szám is kerül, ezt pl.a Darabteli fügvény nem veszifigyelembe.
Az lenne a kérdésem, hogy ilyenkor hogyan kellene jelölni az egy kérdéshez tartozó válaszokat,hogy azt figyelmebe is vegye a függvény.Egy ellába csak egy érték írható?
Bocsánat, ha nagy hülyeséget kérdezek, de csak halványan dereng a táblázat kezelés.
Nevezz ki egy üres füzetet gyűjtőnek (nem kell, hogy ez legyen a neve).
Alt+F11-re bejön a VB szerkesztő. Bal oldalon kiválasztod ezt a füzetet, Insert menü, Module. Kapsz a füzetedben egy Module1 nevű modult a bal oldalon, erre állva a jobb oldalon kapott üres felületre másold be a makrót.
A 200 fájlod legyen azonos könyvtárban, ez az új füzet egy másikban.
A makró jelzett sorában írd át az útvonalat a 200 fájl útvonalára. Sajnos, a fórummotor eltünteti a \ jeleket, én meg mindig elfelejtem, hogy csak akkor mutatja (egyszer), ha kétszer ütöm be. A sor helyesen:
Const utvonal = "E:\Alkönyvtár\" 'Itt írd át az útvonalat
Remélem, most jól adja vissza.
A gyorsabb futás érdekében a Sub Osszevon sor alá írd be:
Application.ScreenUpdating = False
az End sub fölé pedig
Application.ScreenUpdating = True
Csak a gyűjtő füzeted legyen nyitva. Alt+F8-ra megjelenik a makrókat tartalmazó ablak, itt indíthatod az Osszevon makrót.
Van sok (nagyon sok, kb 200) különálló excel file. Mindegyikben 3-3 oszlop van különböző számokkal, de az oszlopok legtetején (tehát az első sorban) természetesen az oszlopok elnevezése szerepel. Egy oszlop kb 300 sorból áll.
Most nekem azt kéne valahogy elérnem, hogy minden excel file 2. oszlopa egy oszlopba kerüljön, tehát, hogy az összes adat, amely a 2. oszlopban található egy táblázat egy oszlopába kerüljön. Az nem baj, ha a 200-szor bele kerül az oszlop elnevezés (gyáriszám).
Természetesen nem CTRL+C éd CTRL+V megoldásra gondolok.
a1:a10-ben vannak az eredmények, a lényeg a * joker karakterként használata. Ha az eredmény (válasz4) egy cellában van, akkor azt is megadhatod kritériumnak - csak fűzd hozzá a csillag karaktert.
Az alábbi problémámban szeretnék segítségeteket kérni:
A szakdolgozatomhoz szükséges kérdőív feldolgozását csinálom épp és a probléma a következő lenne:
A kérdőív során van pár olyan kérdésem, melyre több válaszlehetőséget is meg lehetett jelölni. Ezeket a válaszokat a rendszer (google docs) válaszadónként egy-egy cellába mentegette el vesszővel elválasztva (3 megjelölt válaszlehetőség esetén a cella tartalma pl.: "válasz1, válasz4, válasz8").
Tegyük fel, hogy szeretném megszámolni, hogy hányan jelölték be a "válasz4"-et. A darabteli függvénnyel probáltam elsőre, de az csak akkor számolja bele a "válasz4"-et ha az adott cella csak a "válasz4"-et tartalmazza, vagyis a válaszadó ezen kívül semmi mást nem jelölt meg. Tehát, ha a cella tartalma kizárólag az, hogy "válasz4" akkor beleszámolja, de ha az hogy "válasz1, válasz4, válasz8", akkor már nem.
Kérdés: hogy tudnám azt megcsinálni, hogy minden egyes cella, ha tartalmazza a "válasz4" karaktersort, akkor adogassa ezeket össze?
feldobom a problémámat, amire alighanem nincs megoldás...
Adott egy pivottábla, egy számított mezővel.
Ez tartalmaz egy évenkénti részösszegzést.
A gond az, hogy a számított mezőnél a részösszegzést a számított mezőben megadott képlettel végzi - ami normális is. De nem ez kell, hanem rendes "összeg".
Meg akarom őrizni a pivot keretét, nem akarok mellészámolgatni a cellákban.
Tud erre valaki valamit? (Persze lehet, hogy csak én értem, amit írtam...)
Volt egy öteltem, hogy hogyan lehetne gyorsítani rajta, de akkor nem érdekes. Fél perc az nem olyan sok, főleg ha szórakoztatod magad a Select-ekkel :)
A státuszsorba tett üzenetek nem olyan feltűnőek, mint az msgbox-osak, de az utóbbi is egy megoldás arra, hogy ne higgye a felhasználó, lefagyott a gépe.
A Jimmy féle előre figyelmeztetést a ciklus elé kell tenned. Ha ezt msgboxba teszed, a makró akkor fut tovább, mikor a felhasználó leenterezte, a státuszsorba téve pedig végig látszik a futás alatt. Kérdés, észreveszi-e a felhasználó. :)
Delila kösz, ki fogom próbálni. Bár az igazat megvallva, nem tudom, hogy akkor is jelentkezik-e a hiba, amikor a hibaüzenetet ki kell írni. Halvány emlékeim szerint a megállás akkor jelentkezett, amikor egyáltalán nem kellett az eltérésre figyelmeztetni. (Szándékom szerint egyébként is ez volt a részlet funkciója. Hiszen, ha tucatjával jönnek az eltérések, akkkor úgyis valami generális hiba van. Én meg azt ellenőriztem, hogy nincs-e valami apró poloska, ami egy-két rejtett hibát okoz a 2500 sor egyenként közel 20-20 adatában. Így a jellemző eset az, amikor a programrész hibajelzés nélkül fut le.)
Kreálsz egy új oszlopot, és abba képlettel összefűzöd a 4 oszlop tartalmát, ami sorbarendezezési szempont, a prioritás szerinti sorrendben. Tehát ha pl. A, D, B, K oszlopok szerint akarsz sorbarendezni, akkor X segédoszlop tartalma:
X2 = A2 & D2 & B2 & K2
Ezután rendezed az egészet X oszlop szerint, majd törlöd az X oszlopot.
Ha valamelyik oszlopban számok vannak, akkor ott még kell egy furfang: át kell alakítani a számokat helyiértéket megőrző szöveggé. Ha pl. a fenti példában D oszlopban számok vannak, és egyik szám sem nagyobb, mint 10^16, akkor
Nem a kérdésedre válaszolok, de arra, hogy a felhasználó "ne unatkozzon", van egy másik mód is, mint az msgbox.
Kiírathatod a státuszsorba a program pillanatnyi állását, vagy bármilyen más szöveget.
For sor = 1 To sorok adat1 = adat1 = Sheets(aktlapnév).Cells(sor, oszlop) adat2 = adat2 = Workbooks(ellfile).Sheets(aktlapnév).Cells(sor, oszlop) If adat1 <> adat2 Then Application.StatusBar = Str(sor) + ". sor, " + oszlopnév(oszlop) + ". oszlop eltér!" End If Next Application.StatusBar = False
Az utolsó sor visszaállítja a státuszsor eredeti beállítását.
Sem a magyarázatát, sem a megoldását nem tudom, de azt igen, hogy nem különleges eset. Egy-egy hosszabb programfutás során nálam is gyakran előfordul, hogy kvázi "lefagy" az Excel, de közben valójában tekeri a CPU-t ezerrel, és számolja, mait számolni kell, csak megszakad a kapcsolata a külvilággal. Úgy vettem észre, hogy a fókuszváltás az ablakok közt (pl. az Excel ablak elveszti a fókuszt) gyakran (talán mindig) kiváltja ezt a viselkedést. De ha megszakítom a program futását egy Ctrl+Break -kel, majd azt modnom neki, hogy folytassa, visszaáll a megszokott működés.
Az egész valószínűleg egy rosszul megírt Microsoft termék hibája. Mivel a makród ettől még rendesen lefut, a helyedben nem nyugtalankodnék nagyon. Viszont érdemes a makródat úgy megírni, hogy az időigényes számolási rész előtt tegyen ki a usernek egy kis cédulát, amin az áll, hogy hosszú folyamat jön, ami alatt az Excel esetleg úgy tűnhet, mintha lefagyott volna, de legyen türelemmel, és ne piszkálja a Ctrl+Alt+Del gombokat.