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.
Összeollóztam egy makrót, ami egy folder minden fájlját megnyitja és bizonyos információkat bemásol belőlük egy Summary file-ba.
Több, mint 100 fájlom van, ezt a mennyiséget már csak makróval tudom kezelni.
Sajnos néha nem nyílnak meg a fájlok, mert hibásak. azt szeretném, hogy ilyenkor ugorjon a következő fájlra, de logoljon is.
A " On error resume next"-et használva átugorhatom a problémát, de én szeretném ha mielőtt ugrik a következő fájlra logolná a pl az hiba kódot valahol.
Egy item code-hoz bizonyos esetekben több description is tartozik (azt most ne firtassuk, hogy ez logikailag teljesen helytelen, a brazíliai kollega szerint ez így logikus:)) Szóval azt szeretném megszámolni, hogy egy item code-hoz hány description tartozik. A csatolt képen talán jobban látszik, hogy mire gondolok!
Önmagában egyik sem jobb vagy rosszabb megoldás, csak akkor, ha tudjuk, mi az elérendő cél. A különbségek nagyjából ezek:
Variáció1:
1) a teljes cellatartalmat másolja, képlettel, formázással, megjegyzéssel együtt
2) Ha a kód további részében még bármit akarsz kezdeni a másolás forrás- és céltartományával, akkor azokat nem kell újra definiálni, hiszen a CopyRng és Dest range objektumok továbbra is bevetésre készen állnak.
Variáció2:
1) Csak a cellák értékét írja át.
2) A másolás forrás- és céltartományának definíciója nem marad meg. Ráadásul a céltartományt nem is tudod még egyszer definiálni az addig használt módszerrel, mert közben megváltozik a UsedRange.
Az előzőhöz még annyit, hogy ha a csatolt kép egy kimutatást ábrázol, az értékeit át kell másolnod valahova, és oda kell beírnod a sorok kitöltését és a képleteket, mert a kimutatásba nem tudsz beírni.
Kezdd azzal, hogy az Item Code oszlopot (A oszlop?) feltöltöd. Kijelölöd a tartományt, ugrás menü (Ctrl+g), irányított, üres cellák. Beírsz egy egyenlőség jelet, és nyomsz egy fel nyilat. Ez minden üres cellába beír egy hivatkozást, ami a fölötte lévő cellára mutat. Ctrl+enterrel beviszed a képleteket.
Ha bántja a szemedet a sokszor szereplő azonos adat, azonnal, míg ki van jelölve, háttér színűre állíthatod a karakterek színét.
Jó, ha az oszlopban a képletek helyére irányítottan rögtön beilleszted az értéküket, mert egy rendezés után másképp galibát okozhat.
A következő kérdésben szeretnék segítséget kérni! Adott egy hatalmas táblázat, mely egy vállalat múltbéli rendelési adatait tartalmazza (portugál nyelvű, de a problémám szempontjából ez lényegtelen). Ebből lekérdezéssel elkészítettem egy olyan kimutatást, mely az egyes termékek rendelési adatait tartalmazza, az egyszerűség kedvéért most csak: egységár, rendelt mennyiség, rendelés értéke (ezt láthatjátok lentebb). Mivel az év során az árak mozogtak, így egy tétethez több egységár is tartozik. A cél az lenne, hogy minden termékre szeretném kimutatni, hogy mennyi volt a legalacsonyabb és a legmagasabb egységár. A probláma az, hogy nem ugyanannyiszor változott a termékek ára, van ami változatlan végig, van ami akár 10x is változott. A legkisebb és legnagyobb egységárat szeretném kiszámoltatni minden egyes item code mellé, ahogy a táblázatban látható. Képlettel akárhogy próbáltam, nem tudtam rájönni a megoldásra. Ha valakinek van ötlete, az nagy segítség lenne!
A Vezérlők eszköztár További vezérlők gombjával elérhető egy olyan dolog, hogy "Microsoft Office Spreadsheet". Ha egy ilyet ráteszel a munkalapra, a mellékelt ábrához hasonlóan fog kinézni. Kóddal is hozzá lehet adni, Excel 2003-ban pl. így:
Sub add_spreadsheet() Dim o As Object Set o = ActiveSheet.OLEObjects.Add(ClassType:="OWC11.Spreadsheet.11", Link:=False, _ DisplayAsIcon:=False) o.Name = "inner_sheet" End Sub
Ez azért jobb, mint eszköztárról hozzáadni, mert így egyúttal nevet is adunk neki, amivel később bármikor lehet rá hivatkozni. Ha jól láttam, legalább 2007.es Exceled van. Ott nem tudom, mi a kód, valszleg "OWC12.Spreadsheet.12" vagy "OWC12.Spreadsheet.13", ki kell próbálni. Illetve, ha a Vezérlők eszköztár tervező üzemmódban van, akkor az objektumra kattintva a képletsorból kiderül a típus pontos neve.
A láthatóvá tétel/elrejtés műveletek ezek után így néznek ki:
Dim o As Object Set o = ActiveSheet.OLEObjects("inner_sheet") o.Visible = True/False
Az objektumot lehet pozicionálni, méretezni, lehet bele értékeket másolni, és talán arra is rá lehet venni, hogy automatikusan egy külső munkafüzet tartalmát jelenítse meg (bár erre még nem jöttem rá, hogyan kell). Korlátozott Excel funkcionalitással rendelkezik, képleteket lehet bele írni, ki is számolja őket.
Tegyél egy ilyet a munkalap közepére, és próbáld ki, hogy megfelel-e a céljaidnak.
Szerintem elegánsabb, mint egy másik ablak, viszont nem tud annyit, mintha Excel munkafüzet lenne.
A Windows(1).WindowState = xlMaximized, illetve a Windows(2).WindowState = xlnormal parancsokkal próbálkoztam, de ha kiadom a második ablakra (amit az első ablakra akarok ráhívni) az xlnormal parancsot, akkor nekem attól az első ablakot is kisebbre veszi.
De lehet, hogy nem is a windows parancsokkal kellene próbálkoznom, de a workbook-kal nem tudok méretezni.
Mit értesz az alatt, hogy "egy másik, kisebbre méretezett excel-lapot az előző excel-lap közepére"?
Két dolog jutott eszembe:
1) Megnyitni egy másik munkafüzetet egy másik ablakban, és ezt az ablakot az elsőnek a közepére (vagy akárhová) pozicionálni.
2) Az aktív munkalap belsejében valami szövegdoboz-szerű objektumot hozni létre, ami egy másik munkafüzet valamely munkalapjának tartalmát jeleníti meg.
Melyik áll közelebb az elképzelésedhez?
A "kisebbre méretezett excel-lap" tartalma mi lesz, milyen forrásból származik?
Azt hogy lehetne megcsinálni, hogy egy excel-lapról kattintással meg lehetne hívni egy másik, kisebbre méretezett excel-lapot az előző excel-lap közepére? (Listbox-szal meg tudom csinálni, de jobb lenne egy ilyen excel-lapos megoldás. A kattintás részének beállításával tisztában vagyok, csak az a makró-rész kellene, amivel behívom a kisebb munkalapot, rá a nagyobbra.)
1900 is szökőév, de csak a Julián-naptárban, amit a pravoszláv egyházak használnak (de polgári célokra a múlt század eleje óta már a pravoszláv országok sem).
a szabály az, hogy minden 4-el osztható év szökőév, kivéve a századfordulók pedig csak akkor, ha 400-al oszthatóak. Utóbbit persze nem tudtam, Wiki-ben olvastam :(
Tehát 1900 nem szökőév és rossz benne a feb.29? - mármint az excel szerint
Jaj, bocsi, én néztem el, ez tényleg csak az az egynapos hiba, amiről beszéltem. Azt már nem is fogják javítani, így kisebb a kár, mint ha mást mutatnának a táblázataid a verziótól függően.
1900. jan. 1. előtt úgyis csak trükközéssel lehet dátumszámításra használni az Excelt. Most gyakorlati szempontból nem mindegy, hogy 1900. jan. 1. vagy 1900. márc. 1. előtt nem használható rendesen? Csak két hónap.