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.
Program nélkül az =részösszeg(3;A:A)-1 megadja a mindenkori darabszámot. A -1 a címsort vonja ki az összes darabból. A 3-as függvényszám a darab2 megfelelője.
Sziasztok! Egy kis Exceles gondom lenne. Van egy táblázatom, melyben egy felmérés eredményei vannak, de kódolva, illetve van hozzá egy két oszlopos kódtáblám, mely tartalmazza, hogy melyik kódhoz milyen érték tartozik. Én pedig azt szeretném elérni, hogy a kódtábla alapján felcseréljem az egyes kódokat a táblázatban a kódok értékeire. Melyik függvényt használjam ehhez?
Eddig az F és a VKERES függvényeket próbáltam, de nem jött össze.
"mivel az összevonások gyakran zavart okozhatnak."
Csatlakozom az előttem szólóhoz. Összevont cellákkal dolgozni programban elég szívás. Az összevont cellákkal egy csomó normál művelet nem végezhető el, és ahhoz, hogy kideríthesd, egy adott cellával mit tehetsz meg, és mit nem, meglehetősen komplikált feltételrendszert kell lekódolni. Ha kicsit is bonyolultabb a táblázat felépítése, vagy a feladat, amit csinálni kell vele, akkor már nem tudsz elég alapos lenni a feltételrendszer megtervezésekor. Így az esetek 90%-ában olyan kód keletkezik, amely általában jól működik, teszteléskor megnyugtatóan mosolyog, de amikor kiadod a kezedből, a felhasználó rögtön megtalálja azt a gyenge pontot, amire nem gondoltál, és kiakasztja a programot.
A magam részéről a cellaösszevonást csak mint leges-leges-legutolsó formázási műveletet javaslom, ami után már semmit nem kell a munkafüzettel csinálni.
Az "oszlopok közt középen" összevonja a cellákat, "a kijelölés közepére" pedig nem, csak a beírt szöveget mutatja a kijelölt cellák közepén. Az adat valójában a kijelölés bal oldali cellájában van.
Mit szenvedtem az elmúlt években én is ezzel a problémával.
A bölcs ember viszont kérdez. :o) És ki gondolta volna, hogy még megoldás is van. Jimmy a király.
Már éppen javasolni akartam az én primitív megoldásomat, mely szerint For Each ciklusban vigigvizsgálom az összes munkalapot és a tartalom vagy "titkos" cellák alapján azonosítom a munkalapokat. (konkrét ceállákban konkrét adat vagy név)
Kérdés. a makróban nem a Sheets("munkalapneve") módon szeretném megszólítani a munkalapot, mert az változik. Az sem jó ha változóba rakom a munkalap nevét.
Meg lehet vhogy szólítani azzal a megnevezéssel, ami a munkalap tulajdonságainál van a Microsoft Excel Objects-en belül) vhogy így: munka1(munkalapneve) munka2(munkalapneve) stb... és én pl a munkax-el szeretném megszólítani, mert az állandó.
Azt a minimális makrót amit az új munkafüzetbe átmásolok azt már nem akarom kitörölni, sőt az szükséges az új munkafüzet működéséhez. Csak elrejteni/levédeni szeretném. :o)
Foglalkozva a témával egy gondolat már felötlött bennem ma reggel, de még nem próbáltam ki. Létrehozok egy üres de levédett munkafüzetet (kézzel) és ezt nyitom meg a programból, ebbe másolom bele a munkafüzetet majd mentem más néven. Nem túl elegáns, de ha működni fog és nem lesz jobb ötlet akkor ez lesz.
Egy dologban biztos vagyok: Az újonnan létrehozott munkafüzetekből ki lehet törölni a makrót. (Makróval) Ha lesz időm utánanézek a mikéntjének, de úgy emlékszem itt is szó volt már erről.
A mentés SaveAs-al történik, de a munkafüzet létrehozása nem.
A Sheets("xxx").Copy hatására az adott munkalapot egy vadi új "szűz" munkafüzetben hozom létre és ennek a VBAprojekje alapértelmezésként nem védett.
A feladat, amit már megoldottam, hogy egy összetett munkafüzetből különböző felhasználói beállításokkal hozok létre több százas nagyságrendben új munkafüzeteket melyek mindegyike más mennyiségű és adattartalmú munkalapot tartalmaz. Ezen munkalapokon vannak gombok és vezérlő elemek, melyekhez makrók tartoznak és mivel sajnos új munkafüzetbe másolom azokat, így alapértelmezésként láthatóak és szerkeszthetőek.
Egy ideig a saját munkafüzetemet mentettem el SaveAs-al minden esetben, a nem szükséges munkalapok elrejtésével, ekkor ez nem volt probléma mert a saját munkafüzet projektje védett, de már túl nagy méretű munkafüzetek lettek. Ezért kellett váltanom, hogy csak a szükséges és elégséges mennyiségű adatot hozom létre egy új munkafüzetben.
A 3 cellát kijelölve a formátumban az igazításnál, vízszintes elrendezésnél "A kijelölés közepére" formát kell választani. Mivel ezt sűrűn alkalmazom, írtam egy kis makrót rá (a personal.xls-ben), és egy ikonthoz rendeltem, hogy mindig kéznél legyen.
Sub Kijelölés_közepére() Selection.HorizontalAlignment = xlCenterAcrossSelection End Sub
Nem kézzel kell beállítanom. Azt ismerem. Fut egy program, ami létrehoz egy új munkafüzetet, belemásol egy munkalapot amin makrók is vannak, majd elmenti és bezárja. Még mentés előtt ebből a futó programból kellene levédeni ezt az új munkafüzetet.