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 cél az volt, hogy az aktív cella értékét kiválassza az autoszűrő)
csak hangosan gondolkodva, lehetséges, hogy a Field után kizárólag számot lehet megadni? Próbáltam változóval, de azt sem engedi) Ámbár ha a kritikus ActiveCell.Comumn fölé viszem a kurzort soronkénti futtatásnál, ki is írja az értékét...
Ha van rejtett cella(Sor v. oszlop, szürt tartomany, stb) (talán :Selection.EntireRow.Hidden = True?)
Akkor
Minden latszik (ActiveSheet.ShowAllData)
Ha nincs rejtett cella, Akkor Nem történik semmi
Az a gondom, hogy beillesztettem egy makroba a "ActiveSheet.ShowAllData" sort, de kiakad, ha nincs rejtett (v. szűréssel rejtett) sor (esetlegoszlop) (Mert ugyebár ilyenkor az "adatok/szűrő/minden látszik menüpont" is inaktív...)
Jól adtad meg a tartományokat? Ha kimarad két oszlop, akkor az osszegzendő tartomány két oszloppal arrébb van mint eredetileg, külön megadható mind a keresési, mint az összegzési tartomány.
Egy utolsó kérdés/kérés! A táblázat tervezése sajnálatos körülmények miatt úgy alakult, hogy az azonosító szám és az összeadandó számok között 2 oszlop kimarad és szöveg lesz ott. Ahogy teszteltem, kipróbáltam ezt is és nem működött megfelelően. Meg lehet azt oldani, hogy az azonosítószámtól számított, vele egy sorban lévő 2 oszlopnyi részt, szöveget, számot ne vegye figyelembe csak az azutáni részt?
Akkor véglegesítve, hogy a függvénynek hogyan is kéne működnie.
A függvénynek tudnia kéne:
- egyszerre 31 lapon egyidejüleg működni
- a #HIÁNYZIK értéket ne vegye figyelembe (vagyis ne akadjon ki rajta)
- A 31 db azonos lap egy előre meghatározott oszlopában keresse a függvénynek megadott számot (pl.: 10211)
- A 31 db azonos lap egy előre meghatározott cellatartományában (pl: C1:D20) lévő (utólag beírt) számokat adja össze.
- És végül csak a keresett szám sorában lévő számokat adja össze (de csak az előre meghatározott oszlopokban, fenti példa alapján a C és D oszlopban lévőben számokat, az E-ben lévőt nem.)
- Előfordulhat:
- hogy egy lapon nincs a keresett szám
- hogy egy lapon kettő, vagy annál többször van a keresett szám (pl.: 4 sorban
is van 10211, akkor ezekben is össze kell adni a számokat)
- hogy, a 31 db azonos lap nem mindegyikében ugyan ott van ugyan az az
azonosító szám
Példával:
Mivel fentről lefelé folyamatosan lesznek feltőltve a kombi panelok, ezért nem biztos hogy egy termék azonosítója egy helyre (sorba) kerül 2 adat lapon/munkalapon.
Persze át lehet írni úgy is, hogy csak azt vegye be az összegbe ahol stimmel az az onosító. De azt írtad korábban hogy olyan sorban is összegezzen, ahol valamelyik lapon megtalálta ugyan az azonosítót ebben sorban, de egy másik lapon ebben a sorban nincs kiválasztva semmi. Ha viszont ellentmondó az azonosító megadás azaz eltérő lapokon ugyanazon sorban eltérő azonosítók vannak megadva , akkor az ilyen sorokkal nem egyértelmű hogy mit kell csinálni. Át kell gondolnod.
Nem lehetne, hogy csak egyszerűen a keresett és megtalált azonosító sorában lévő számokat adja össze a meghatározott oszlopokig, persze úgy, hogy az azonosítók elhelyezkedése leponként eltérhet?
Megnéztem, a küldött fájlt. a 19-es sorban ellentmondó a megadás, mert az egyiken lapon a 19 -es sorban A a másikon B van álasztva. Az a kérdés ilyenkor mit kéne szerinted csinálni a függvénynek?
Most akkor mi is a gond? Újraszámolja automatikusan, ha módosul valami, vagy ez éppen nem jó? Ha beteszed az Application.volatile -t akkor automatikusan mindig újraszámolja.
Valamiért nem számolja automatikusan újra, de ha belekattintasz a függvénybe enterezel átszámolja, de persze nem ez igazimegoldás. Majd holnap megnézem.
De hát az egyszerű. Pl. a küldött munkafüzetben az A lapon, a D5-ös cellába
=osszegzo(10212;D8:D27;E8:J27;4;8) kerüljön, ekkor a hűtötteket összegzi itt, a fagyasztottakhoz E%-be is értelemszerűen megadni a függvényt a megfeleő összegzési tartománnyal.... stb. Az ÖSSZ-be meg pedig egy sum függvény kell. Én nem néztem olyan részletesen a példát azért írtam rossz helyre a fügvényt.
Beírtam modulba, megírtam a függvényt. Kiszámolta, de ha a függvény megírása után beírok a megcímezett oszlopba egy számot (a megcímezett azonosító számhoz tartozó sorba), akkor nem adja hozzá az ÖSSZEGZŐ függvény. Vagyis hiába helyezem el előre a függvényeket, ha utána lesz kitöltve a táblázat, akkor nem számol.
Ok működik. Ott hibáztam, hogy a függvény 3. adatánál több oszlopot is megadtam (C1:D20). Tehát, amit írtál az jó, és működik, de ahogy az általam küldött (e-mail) táblázatban is láthatod, 3 "részre" van osztva a beviteli tábla. Vagyis az oszloponkéni összeadás még nem az igazi.