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 munkalapok egyesével történő kijelölése, és az adatok másolása, majd beillesztése az új munkalapra, az megy...:-))"
Nincs is annál jobb módszer, legfeljebb lehet rajta gyorsítani egy kicsit, pl. makróval:
Sub összemásol() Dim ws As Worksheet, ws_uj As Worksheet, Rng As Range
Set ws_uj = ThisWorkbook.Worksheets.Add For Each ws In ThisWorkbook.Worksheets If ws.Name <> ws_uj.Name Then Set Rng = ws_uj.Range("A" & ws_uj.Rows.Count).End(xlUp).Offset(1) ws.UsedRange.Copy Destination:=Rng End If Next End Sub
Lehet még talán képlettel is. Egyszer réges rég beképleteztem egy munkalapot úgy, hogy automatikusan, egyben kilistázta 3 másik munkalap tartalmát, követte a változásokat, beleértve azt is, ha valamelyik munkalapon a sorok száma megváltozott. De az elég cammogós megoldás volt...
Több munkalapból álló dokumentumból szeretném egyszerűen és gyorsan kinyerni az adatokat és összesíteni egy munkalapra. A munkalapok adatstruktúrája (oszlopok) mindegyikben azonos, de a sorok mennyisége más lehet.
(a munkalapok egyesével történő kijelölése, és az adatok másolása, majd beillesztése az új munkalapra, az megy...:-))
Nagy itt a csend, írok egy érdekességet, amit egy másik fórumon találtam.
Valaki felvetette, hogy írt egy eseménykező makrót. Az A1 cellába beitt egy érvényesítést, aminek az értékétől függően betölti az 1-3 képet.
A makró részlete:
Dim ShapeDel As Shape
'előző kép(ek) törlése
For Each ShapeDel In ActiveSheet.Shapes ShapeDel.Delete Next
Eredmény: betölti a képet, de az A1 cellából látszólag eltűnik az érvényesítés, de valójában nem. Bár nincs nyíl és lista, csak a 3 választható értéket engedi bevinni.
Rájöttem, hogy az érvényesítést is képként kezeli az Excel. Megoldás:
Dim ShapeDel As Integer
'előző kép(ek) törlése For ShapeDel = 2 To ActiveSheet.Shapes.Count Shapes(ShapeDel).Delete Next
Szerintem azt próbáld meg, hogy egy új munkafüzetbe írsz egy kis makrócskát (alt+F11, sub, end sub, közé egy msgbox "szöveg"-et mondjuk), visszamész a munkafüzetre, és onnan elindítod ezt a makrót (alt+F8).
Ha ez így nem indul el, akkor jöhetnek a komolyabb lépések (lásd alant), de ha ez így elindul, akkor nincs nagy gáz az exceleddel.
Az újratelepítés jó lehet. Ez biztosan nem verziófüggő probléma, mert 2007-tel is ugyanígy mennie kellett volna, szóval emiatt nem érdemes megvenni a 2010-est is :o)
Előtte érdemes lehet eltávolítani a hibás telepítést pl. revo uninstallerrel.
Nos, minden gond nélkül sikerült a makrós megoldás a tesóm laptopján, 2010-es excelben, majd mikor a fájt áthoztam a saját laptopomra, a 2007.eshez, megnyitáskor ebbe a hibaüzenetbe futottam:
<?xml version="1.0" encoding="UTF-8" standalone="true"?>-<recoveryLog xmlns=" a fájlban (C:UsersbettiDesktopMSc. 2. félévHaladó vállalati pénzügyekÓrai kedd_makrós.xls)</summary>-<additionalInfo><info>Ez a munkafüzet elvesztette a VBA projektjét, az ActiveX vezérlőelemeit és minden programozással kapcsolatos képességét.</info></additionalInfo></recoveryLog>
(magyarul nem képes kezelni a makrókat az enyém....)
most már a feladat kész, szóval itt az elv érdekelne, vajon miért van ez? telepítsem újra az office-t? és akkor itt az ideje a 2010-hez? :(
fejlesztőeszközök/beszúrás/űrlap vezérlőelemek/léptetőnyíl --> ha kiraktad a munkalapra, akkor jobb gom rajta, vezérlő formázása és a vezérlő fülön értelemszerűen beállítani a paramétereket
Az excel nálam is gyakran csak a sokadik próbálkozásra adja a makróhozzárendelést lehetővé tevő helyi menut. E parancs valszeg más uton is elérhető, de még nem jöttem rá hogyan. Talán itt valaki.
vagy csak túl sok éve volt :( egyébként sem tértek ki sajnos a használható részekre, én pedig nem vagyok az az "önszorgalmas" típus, na most az egyetemig nem is hiányzott az ismeret.... MOSTANÁIG :)
Nos akkor kicsit részletesebben :) Kijelenteném, hogy abszolút mechanikusan végzem a feladatot a programban, így előre is elnézést kérek a szakmai hibákért :D
Szóval az Excelem 2007-es verzió, és a konkrét probléma ott merült fel, mikor az volt a feladat a munkalapon, hogy egy cella értékét növeljem 1%-kal olyan módon, hogy egy mellé beszúrt ábrára kattintgatunk. Azonban hiába kattintok jobb gombbal, hogy hozzárendeljem a makrót, a funkció maga nem működik. A következő lépésként így a virtual basic editor esélytelen, ami szerintem így nézne ki...:
Sub Felfelényíl2_Kattintás()
Worksheets("NPV").Activate
Activecell.Value=ActiveCell.Value+ActiveCell.Value*1/100End Sub
Azt sem tudom, ez így jó lenne-e egyébként, de az már más kérdés.
Csatoltam 2 képet, amin látszik, hogy nem az adatvédelemmel van probléma... és ha még valami infó hiányzik esetleg kérdezzetek légyszi, magamtól nem tudom mi kéne még!
Hát pont erről szól a DoEvents. Visszaadja a vezérlést a windowsnak, hogy tudja feldolgozni a felhasználói inputokat. Cserébe sokkal lassabb a makró futása.
Nekem sikerült közben mást csinálni, mondjuk csak cellák tartalmát szerkesztettem. Másold be ezt egy VBA modulba és indítsd el a StartTimer makrót. 10 másodpercenként ki fogja írni, hogy "hi", kivéve ha pont szerkesztesz egy cellát. Ebben az esetben csak akkor írja ki, ha befejezted a szerkesztést.
Szükségem van rá. Megjegyzem a VBA-ban rejtetten da van hasonló. Ilyen pl. az autoupdate ami beállított idő után a megosztott filet aktualizálja az összes usernél aki a megosztásban részt vesz. Most amilyen filet írok abban ez igen jól jön. Ennek az a hiányossága, hogy egy funkciós azaz másra nem képes, egyedül az updatelési időt lehet befolyásolni.
Azt nem tudom lehet-e, de nem gondolom, hogy érdemes.
Képzeld el, hogy békésen dolgozgatsz egyszer csak az Excel odafut, lenyom egy sallert, kikapja a kezedből a munkalapot és elrohan.
És mindezt attól függetlenül, hgoy éppen mit csinál a user.
Értem én, hogy vannak olyan élethelyzetek amikor ez hasznos lehet (pld dolgozatírás), de azt gondolom, hogy ez annyira rétegigény, hogy nem biztos, hogy a MS-nél figyelembe vették, vagyis leprogramozták volna.
Valószínűleg nem emlékszel de te is meg más is legalább 4-5 óta egy-egy részletben besegítettetek. Nem csak te.
Most egy érdekes kérdésem lenne. Van -e az Excelnek lehetősége olyan timert, órát futtatni a háttérben ami a beállított idő után makrót indít. Futási ideje alatt lehessen mást csinálni a táblában. A normál timer alatt ez nem lehetséges.
Meg olyan is van, hogy nincs megnyitva a makrót tartalmazó füzet. Csinál az ember egy makrót de nem ixeli ki a 'minden füzetben' opciót. Ilyenkor aztán nincs makró addig, amig meg nem nyitja ezt a füzetet is. Ergo nem árt megnézni az alt+F8 makrólistáját, hogy miket mutat.
Ha esetleg teljesen kezdő lennél makró ügyben: Az excel menüben Eszközök->Beállítások->Biztonság fül, majd ezen belül makróvédelem gomb után válaszd a közepes biztonsági szintet. Ez majd mindig figyelmeztet, hogy ha egy munkafüzetben makrók vannak, és engedélyezheted a használatukat.
Meg azt is említsd meg, hogy mit jelent az, hogy nem tudsz makrót használni? Van egy makrót tartalmazó munkafüzeted de nem tudod lefuttatni a makrót vagy van egy munkafüzeted, akarsz benne pld. makrót rögzíteni de nem lehet.
Meg láttunk itt már olyat is, hogy Open Office táblázatkezelőjén próbáltak excel-es dolgokat csinálni, de előre is elnézést kérek ha ennél szofisztikáltabb a táblázatkezelési tudományod.
sziasztok! légyszi írja már meg nekem, miért nem tudok makrókat használni? már elvileg a letiltást feloldottam az adatvédelmi beállításoknál, de semmi változás :( más ötlet esetleg?
Nemcsak adatbázissal. Az ECM (elektronikus tartalomkezelő) rendszerek látva a Google Docs sikerét, az online szerkesztést is lassan-lassan el kezdik támogatni. Pl. a Sharepoint 2013 már támogatja az ún. co-authoring funkciót, amivel egyszerre több ember is dolgozhat az állományon.
De már a "hagyományos" CMS támogatás is nagy előny a megosztott munkafüzethez képest. Ahol több ember dolgozik fontos állományokon mindenképpen hasznos egy ilyen rendszert bevezetni, open-sourceban az Alfresco és a Nuxeo is támogatja az Office integrációt. Még egy kisebb cégnél is lehet találni egy olyan mai PC-t, amire virtualizálva egy Linux-Alfresco combó feltelepíthető.
Valódi real-time funkciót szerintem csak adatbázissal lehet elérni. De amikor elmenti valaki a táblázatot, akkor mindig bejönnek a többiek módosításai.
Azt megoldottam, hogy megosztott Ezcel file-ben történt változás 5 perc múlva megjelenjen a többieknél. Klasszul működik. Van -e olyan lehetőség, hogy real time történjen ez. Bár kérdéses, hogy így van -e értelme.
A másik, ez fontosabb. Van -e olyan lehetőség, hogy a task-bárra csukott file felugrik, kinyílik vagy egyéb jelzést küld ha valaki a megosztásban változtat,beleír a táblába?
Itt köszönném meg, hogy neked és a többieknek azt a segítséget amikkel túllöktetek egy-egy holtponton. Amit készítettem annak csodájára járnak a munkahelyemen. Amit készítettem az köszönő viszonyban sincs az eredeti Excel funkciójához viszony elegáns és kiválóan, gyorsan működik. Volt aki odajött hozzám gratulálni.
A százéves álmoskönyv, valamint a bevezetés a programozásba tankönyvek nulladik oldala szerint for ciklus fejét a cikluson belül változtatni semmi jót nem jelent, és tetszőlegesen nagy káosz előidézésére alkalmas.
Gondold meg még egyszer, és ha még mindig ezt szeretnéd csinálni, akkor ne csináld. :-)
Azt szeretném kérdezni, hogy ha egy tartományban egy for next ciklust alkalmazok, és ezen a cikluson belül sorokat szúrok be a tartományba, akkor hogy lehet a ciklus végét megnövelni a beszúrt sorok számával?
A kis példa hozzá:
Sub ins() a = ActiveSheet.UsedRange For i = 1 To UBound(a) If Cells(i, 1) = 1 Then Range(Cells(i, 1), Cells(i, 10)).insert End If Next End Sub
A probléma az, hogy a ciklus csak az eredeti tartomány végéig megy, és nem a beszúrt sorok számával növeltig.
Ha a feladat olyan, hogy mindig ugyanabból az adatbázisból, ugyanazt a lekérdezést hajtod végre, és ugyanazt a kimutatást az adatokból, csak mondjuk naponta más adatok vannak, akkor édemes lehet a munkafüzetből egy direkt kapcsolat az adatbázissal, és akkor csak egyszer kell megcsinálni mindent, utána csak az adatfrissítés gombokat nyomogatni minden nap, és legfeljebb egy snapshot-ot menteni, ha szükséges.
Ez mondjuk nem válasz a kérdésedre, de hátha betalál :o)
Köszönöm a választ. Akkor ezek szerint fogok eljárni... csak nem tudom felfogni, hogy akkor mi a fenének van lehetőség saját stílust definiálni, ha nem tudom használni :(
Én azt csinálnám, hogy létrehozom a kívánt kimutatás stílust egy üres munkafüzetben, majd a munkafüzetet elmentem sablonként.
Ezután ha tudod, hogy kimutatást kell csinálj, akkor nem egy "sima" új munkafüzetet hozol létre (normal template) hanem a fent elmentett sablon megnyitásával.
Persze lehet még azt csinálni, hogy egy makróval csináltatod meg a formázást, de az alapján amit leírtál nem nagyon tűnik indokoltnak...
Excel 2010-t használok. Nagyon sok kimutatást készítek SQL*l leválogatott adatbázisból. Van egy fajta kimutatás stílus, amit előszeretettel alkalmazok, de ezt minden egyes kimutatásban, újra és úrja be kell állítanom.
Gondoltam, a kimutatáseszközöktervezéskimutatásstílusokkimutatás stílus létrehozása menüpont alatt, elkészítem a nekem teszőt, s utána már csak egy kattintás, és formájában, színvilágában olyan lesz amilyet szeretek. Tévedtem. Hiába nyomkodom, az alapértelmezettként való mentést, csak abban a fájlban hajlandó alkalmazni a stílust a további kimutatások elkészítése során. De ha egy új leválogatásban dolgozom, akkor ez az egyedi stílus beállítás nem látszik, nem elérhető.
Én nem csinálok valami jól? Nem akkor van értelme a sok-sok beállítgatásnak, ha az utána bármely fájlban elérhető lenne?
Kulcsmező nélkül is meg lehet oldani az AB.SZUM függvénnyel. Előnye ennek a megoldásnak, hogy tetszőleges bonyolultságú feltételt meg lehet vele fogalmazni, ami a jövőben esetleg szükséges lehet.
Amíg nincsenek 2013 évnél későbbi adataid a táblázatban, addig a 2013 éviekre müködik a szumha(A:A;">41274";B:B). A márciusi adatok összegzésere attól tartok muszáj lesz a kulcsmezős megoldást választanod.
Van-e olyan módja a szumha fgv-nek, hogy az A oszlop YYYY.MM.DD formátumú dátumból csak azokat adja össze, ahol az év 2013? A megoldás jelen esetben 610+530 Ft lenne. És oylan, hogy csak a 2013. 3. havi tételeket adja össze?
Mivel nem helytakarkos, nem akarok a C oszlopba egy ÉV(A2) értéket, a D-be megy egy ÉV(A2)&HÓNAP(A2) kulcsmezőt létrehozni és ezekre hivatkozva megadni a SZUMHA fgv-eket.
Makrüt simán nem tudok még programozni, így elvetném, emrt jelen tudásom szerint úgysem érteném, amit írtok.
Szóval a fenti problémára van makró nélküli és kulcsmező képzés nélküli megoldás?
A megoldás az, hogy mindegyik kis piros háromszöget manuálisan eltakarod egy ugyanakkora kis fehér háromszöggel. És miközben azt írom, hogy manuálisan, természetesen arra gondolok, hogy VBA-n keresztül.
Nem a világ legelegánsabb megoldása, de legalább műxik.
A kód itt lentebb, csak a kis háromszögek színét kell fehérre átírni (a lenti példában azért kék, hogy nyomtatáskor látszódjon).
Én nem tudok ilyenről. Illetve De. :) A cella háttérszínét állítsd pirosra!
Na de viccet félre téve, 5 perc keresgélés után nem találtam semmit.
Ami eszembe jut pótlólagos megoldásként:
Ha megteheted, használj megjegyzés helyett Érvényesítést. Bár ha az egeret a cella fölé viszed, attól még jelenik meg az üzenet, hanem ki is kell választani.
Azt szeretném kérdezni, hogy a cellákhoz beszúrt megjegyzések esetén van-e mód arra, hogy ne látszódjon az a kis piros zászlócska (comment indicator) az excel cella jobb felső sarkában úgy, hogy ha az egeret a cellához viszem, akkor látszódjon a megjegyzés?
Addig eljutottam, hogy az excel beállításoknál a speciális rovatban be lehet állítani, hogy látszódjon-e a jelölés, vagy sem, de ha azt állítjuk be, hogy ne látszódjon, akkor maga a bejegyzés sem látszik.
Makróban is csak három beállítást láttam erre (Application.DisplayCommentIndicator-nál) xlCommentAndIndicator, xlCommentIndicatorOnly és xlNoIndicator, mely utóbbi ugyanazt eredményezi, mint a speciális beállításoknál a "nem látszódnak a megjegyzések és a jelölésük". Nekem arra lenne szükségem, hogy látszódnak a megjegyzések (ha az egeret a cella fölé viszem), de nem látszódnak a jelölésük.
Na de akkor pont azt kéne csinálnod, amit írtam. Mindaddig, amíg nincs rá garancia, hogy csak egy nevet hagyhatsz ki, nem írhatod a kihagyott nevet az oszlop alá. A legegyszerűbb melléírni egy darabtelit a harmadik oszlopba. Esetleg egy HA függvénybe ágyazva, hogy szám helyett szöveg jelenjen meg. HA(darabteli...=1;"";"Hiányzik!")
Bár a kérdésed nem tartalmaz grízes tésztát, megpróbálok válaszolni: ha jól értelek, neked a DARABTELI függvény lelki világával kéne megismerkedned, amivel a harmadik oszlopban jelezhetnéd, hogy a második oszlopban szereplő név (pl. B3) hányszor fordul elő az első oszlopban (A:A). Ha 1 jön ki, akkor nyert, ha több vagy kevesebb, akkor nem. MÁr ha nem ragaszkodsz ahhoz, hogy a második oszlop alján legyen a számláló, amit nem is nagyon tudok értelmezni, de szerinte sokkal kevesebb információt ad (hiszen érdekesebb, hogy ki maradt ki, mint hogy hányan).
Delila is azt mondta, érdemes ide benézni olykor, mert mindig tanul valamit az ember. Te például tudtad, hogy miben hasonlít a tökfőzelék és a grízestészta?
Amit viszont magyarra Pomádénak vagy minek fordítottak.
Nekem erről az alulkvalifikált "dara" szóról az SQL hibaüzenete jut eszembe, amit egy gyengébben sikerült join után kapok: dara is ambigous.
Vagy mintha több osztálynak is lenne egyforma nevű metódusa, de osztálynév nélkül akarnál hivatkozni rá, mert az a hülye számítógép értse meg.
Mert kérem nem csak árpadara, zabdara, kukoricadara, búzadara és az arab pénzváltó, Abu Dara van, de még sódara is, amivel az utakat szórják télen. Na azt meg végképpen nem szeretném a grízes tésztámban vagy a tejbegrízemben látni. Akkor már inkább Olivia egy kád tejben (harminc évvel ezelőtt).
Különben meg súlyosan ez a legoffmentesebb topik, amerre járok, egy kis szépítés nem árt így hétvégén. :-)
Valószínűleg a "dara" szó közelebb áll a nevezett megnyilvánulás (jelenség, dolog) esszenciájához, különösen ha tekintetbe vesszük ama híres szórakoztatóipari klasszikust, amelyet John Travolta és Olivia Newton John bájoskodtak végig anno még a múlt században. Nem is merek rá gondolni, hogy esetleg a "gríz" szó eredete kapcsolatban állhat az azonos hangalakú angol szóval, mert ha megteszem, akkor a "tejbegríz", "grízestészta" és más hasonló szavak jelentése új - és hát nem annyira vonzó - dimenziót kap.
(Aki pedig azt meri hinni, hogy ez itt mind off, azt megkérem, hogy ne tévedjen ilyen nagyokat. Mert ugyanis ha beírom a fenti szöveget a munkafüzetem Module1 nevű moduljába, akkor hibaüzenetet kapok. Innentől kezdve pedig a tejbegríz Excel-vonatkozása nyilvánvaló és letagadhatatlan.)
Miután a dara a gríznek a hivatalos neve. Más szóval dara a neve, de gríznek hívják. Ez pont olyan, mint a Széll Kálmán tér, amit Moszkva térnek hívnak.
Az előbbi összefüggésre egyébként nem nehéz rájönni, hiszen a tejbegríz szakkifejezést valószínűleg az is hallotta már, aki képes darának nevezni a grízt.
De én akartam! Sőt, volt olyan pillanat, amikor megfogadtam, hogy inkább mindig hagyok egy pár pixel széles üres A oszlopot a bal szélén, és csak a B-től kezdek rejteni.
Főtt tészta + pirított búzadara felpárolva a pirítás után, mindez megkeverve és ízlés szerint sósan vagy gyümölcslekvárral édesen ehető. Én spec. szeretem. Annó az általános iskolai menzán alaposan el tudták rontani, mivel nem főzték a tésztát, hanem szétáztatták és nem pirították a darát, csak lefőzték, de amit én csinálok, az nem hasonlít a menzáshoz :)
amúgy ha mondjuk "A" oszlop van elrejtve akkor a "B" oszlopot kijelölve és az egeret a bal "széléig" húzva kijelöli a rejtett "A" oszlopot is. Aztán mehet a felfedés. (Én legalábbis így szoktam csinálni)
Márhogy persze mindezt nem most, hanem pár hónapja, mikor melóban szembejött egy olyan tábla, aminek el volt rejtve az első 3 oszlopa és muszáj volt módosítanom az ott írtakat. Ha jól rémlik, akkor kétnapi guglizás volt az ára :)
Nagyon hülye kérdés: hogy a búbánatba lehet felfedni az elrejtett a:g oszlopokat? A minden kijelölése, a cellanév direkt begépelése nem segített, a felfedés gomb csak munkafüzetet akar felfedni... Excel 2007.
Van amikor egyes VBA+ban írt rutinjaimhoz az excel (2007) nem akar gyorsbillentyűt rendelni. Az alt+F8 ablakban látja a makrót, de amikor rákattintok, csak a 'Létrehozás' gombot aktiválja (vajon minek, amikor már létre van hozva ???), a Lépésenként, a Szerkesztés, a Törlés és az Egyebek gombokat nem. Mi lehet ezeknél a makróknál elállítódva? És hogyan lehet megszüntetni?
Volt már ilyen, de aztán megszűnt. Most újra kezdi. Eléggé bosszantó.
Igazad van, sima FKERES. Azt ugyanis nem részletezte Slient kartács, hogy ha D4 értéke nincs benne az A1:A100-ban, akkor mi legyen. Biztos jó neki a hibaüzenet is :o)
sziasztok! Segítségre lenne szükségem, mert az én megoldásom túl bonyolult lenne, és hátha tudtok egyszerűbbet. Na szóval ha a D4-es mezőben az A1-től A100-ig szereplő különböző nevek egyike szerepel, akkor szorozza be a C4-es mezőben szereplő számot az adott névhez tartozó számmal. Minden névhez(A1-től A100-ig) tartozik egy szám(B1-től B100-ig). 2010-es excelt használok. Köszönöm!!!
Az óvó nénit milyen közelről érintette, mikor nem hitte el, hogy felmentésem van belőle, és meg akart tömni. Moshatta rendesen a ruháit utána... Én szóltam pedig.
Na szóval...olyan is van, hogy az excel rossz lábbal ébred és összeesküdik ellenünk...vagy csak merő szórakozásból szivatja az embert, mert csak mi képzeljük hogy egy logikusan felépített program...neki lelke van :-D, hóbortos.
Ez egy xls volt, nem xlsx, ahogy mondtam...
Nos, a megoldás az volt, hogy ebből csináltam xlsm-et...macro enabled file-t 2007-es verziót...
Így már nem volt semmi baja a szerencsétlennek.
Volt benne pivot chart és olyan chart is, ami pivotból összeolvasott sorokra hivatkozott, továbbá macro...
Úgy tűnik 2003-as verzió képessét már meghaladta ez a dolog :-).
De most úgy tűnik összeszedte magát én meg megnyugodtam :-D!
Köszi a segítséget!
Ps. Mennyi új arc :-D...látszik rég jártam erre :-D...
Ez érdekes... A "jól számoló" Excelt lementve (xls), megnyitva a legfrissebb LibreOffice 4.0-ban, az eredmény tényleg nulla. Nesze neked Excel-kompatibiltás :(
Ha rossz nyelven írná be a függvényt akkor hibát kapna, nem pedig nullát mint eredményt. Bár sose dolgoztam Open Office-ban, szóval csak találgatok. A kérdező majd pontot rak ennek a kérdésnek a végére mert megmondja, hogy milyen szoftver milyen nyelvű változatával dolgozik.
Lehet, hogy én vagyok a sötét, mert most esett le, hogy a munkahelyi gépen mindig Excel 2007-ben nyitom meg, itt meg Excel 200-ban. Lehet, hogy a 2007 autmatikusan konvvertálja a CSV-t és a 2000 meg nem?
pgAdminból exportálom a lekérdezés eredményét csv-be. Eddig ez gond nélkül megnyílt Excelben. Most viszont egy másik gépen futtatva megmarad pontosvesszős formátumban. Ahányszor megnyitom Excelben, mindig újra konvertálni kell oszlopokká, mintha nem ismerné fel a CSV-t.
Sőt, nemcsak ha az adószámon belül csúszott be egy szóköz, hanem ha az adószám előtt, vagy után áll egy szóköz, akkor sem találja. Ebben az esetben célszerű az egész tartományt előzőleg a trim függvénnyel a bevezető és a követő szóközöktől megtisztítva átmásolni valahová, és ott hajtani végre a keresést.
Nálam tökéletesen működik az így megadott függvény. Arra tippeltem, hogy talán vmi formázás billenthette ki a nyugalmából, de nem. Még az ilyen értékeket is kezeli: '12345678-9-00
Talán a tartomány megadásánál lehet még gond, esetleg önmagára mutat a függvény, vagy valahol szóköz lett ütve kötőjel helyett, ilyesmi triviális hibák tudják alaposan megszivatni az embert néha.
Na, véletlenül meg is leltem a megoldást. Szóval a Microsoft azt mondja, hogy a VBA nem tud ciril karakterekkel mit kezdeni. De az internet népe kitalálta, hogy ha a területi beállításoknál a nem-unicode karaktereket használó programok nyelvi beállítását átállítjuk akkor mégis meg lehet jeleníteni nem-unicode karaktereket.
Átállítottam, műxik.
Kiváncsian várom, hogy milyen váratlan következményei lesznek más programokban...
Izé. Tedd a makrót egy szűz munkafüzet Workbook_Open eseménykezelőjébe. Mentsd el a munkafüzetet úgy, mint Microsoft Office Excel bővítmény (*.xla), és legyen a neve pl. akármi.xla. Aztán az Eszközök/Bővítménykezelő menüben válaszd ki az akármi nevű bővítményt. Violá. Nem is. Voilá.
Persze, hogy látom, hogy nyitva van. Ez volt a kérdésem. Hogy ha rányitok még egy Excelt, azaz nem egy új munkafüzetet, hanem magát az excelt nyitom újra.
"Nem lehet az excel applicationhoz rendelni?, vagy a personal megnyitásához a futást?" Kösz a kérdést, de hát pont ezt kérdeztem, hogy lehet-e, és hogyan. Mert hogy pont a personal megnyitásához rendeltem.
milyen grafikon? Pivot chart? Akkor lehet, mert a pivot tábla is átméretezi magát, ha nem utasítjuk az ellenkezőjére.
Nekem akkor szokott átméreteződni (excel 2007-2010 nél), ha a chart labeljeinek a hossza drasztikusan változik kattintásról kattintásra. Ez is radar és sáv diagrammoknál.
Ez nem lehet a gond?
Esetleg át tudod küldeni, vagy egy scrreenshotot előtte és utána?
ez akkor szokott előfordulni, ha van egy "nyitott" exceled (vagy egy addin, exetleg a personal.xls - lehet, hogy nem is látod, hogy nyitva van), és rányit még egy excel alkalmazást.
Nem lehet az excel applicationhoz rendelni?, vagy a personal megnyitásához a futást?
Sziasztok, írtam egy kis programot, amit szeretnék lefuttatni az Excel minden egyes meghívásakor. Próbáltam önálló munkafüzetként az xlstart-ba tenni, működött is, csak egy apró mellékhatása volt, ami nem tetszett. Ez most mindegy.
Jobb megoldásnak találtam, hogy a Personal.xls-be teszem, és a munkafüzet megnyitáshoz (Private Sub Workbook_Open) rendelem. Le is fut rendesen, csak ennek is van egy apró mellékhatása. Ha valamiért ismételten meghívom az Excelt, akkor figyelmeztet arra, hogy a personal.xls zárolva van olvasásra. Nem komoly gond, de szeretném ezt is elkerülni. Mi a megoldás? Esetleg a munkafüzet megnyitás helyett más eseményhez kellene rendelnem a program lefuttatását?
Veszel egy vadiúj füzetet, ahol beállítod a kedvenc formátumaidat, adatokat nem írsz bele. A füzetet elmented sablonként, Munkafüzet névvel. Az Excel automatikusan abba a könyvtárba teszi, ahonnan az ilyen xlt, vagy xltx kiterjesztésű fájlokat olvassa be minden indításkor. Ezután mindegyik új füzeted ezzel a formátummal indul.
Érdemes minden lapra beállítani a formátumokat. Egyebeket is beállíthatsz, pl. az Excel jellemzően a függőleges igazítást lentre teszi, amit én középre tettem a sablonban.
Talán van egyszerűbb, de nekem csak ez jutott eszembe. Leírom lépésről-lépésre.
1. Kell egy egyéni makró-munkafüzet (personal.xls). Ha még nincs ilyened, rögzíts egy makrót, és a rögzítés előtt állítsd be, hogy ne "ebbe a munkafüzetbe", hanem "egyéni makró-munkafüzetbe" rögzítse. Akkor elvileg az Excel létrehozza a personal.xls-t.
2. Lépj át a VB editorba (Alt+F11)
3. A project explorerben keresd meg a personal.xls-t, jelöld ki.
4. Menüből válaszd a következő parancsot: Insert/Class Module
5. A project explorerben, a personal.xls-en belül keresd meg az új class module-t (feltehetően class1-nek hívják), kattints rá duplán.
6. A Properties ablakban írd át a nevét (Name) erre: clsApp
7. Ugyanitt állítsd át az Instancing tulajdonság értékét 2-re (2 - PublicNotCreatable)
8. A jobb oldali üres kódmezőbe másold be ezt:
Public WithEvents App As Application
Private Sub App_NewWorkbook(ByVal Wb As Workbook) Dim ws As Worksheet For Each ws In Wb.Worksheets ws.Cells.NumberFormat = "#,##0.0" Next End Sub
Private Sub App_WorkbookNewSheet(ByVal Wb As Workbook, ByVal Sh As Object) Sh.Cells.NumberFormat = "#,##0.0" End Sub
8. A project explorerben, a personal.xls-en belül keresd meg a ThisWorkbook nevű objektumot, kattints rá duplán.
9. A jobb oldali üres kódmezőbe másold be ezt:
Public Ex As clsApp Private Sub Workbook_Open() Set Ex = New clsApp Set Ex.App = Application Debug.Print "Application caught" End Sub
Zárj be mindent, és amikor kérdez, mentsd el a makró-munkafüzet változásait.
Az Excel következő indításakor már úgy lesz, ahogy akarod.
Igazság szerint Windows API függvényekkel (elvileg) megoldható lenne a Reader bezárása, de az elég macerás, és sokkal egyszerűbben célt lehetne érni egy másik megközelítéssel. Én inkább Userform-ra tenném az egész műveletsort. Lenne a form-on egy gomb a mappatallózáshoz, egy másik a mentéshez/átnevezéshez, illetve pár Combobox meg miegyéb az új fájlnév összerakásához. A form legnagyobb részét pedig egy AcroPDF nevű ActiveX vezérlő tenné ki. Ezzel Excelen belül lehetne megjeleníteni a pdf doksikat, nem kellene Adobe Reader ablakokat nyitogatni meg csukogatni. Az AcroPDF vezérlőnek csak a LoadFile metódusára lenne szükség.
Nem nagy kunszt, csak most egyrészt nincs rá időm (dolgozom), másrészt úgysem tudnám feltölteni, mert proxy papa nem engedi :o)
Érdeklődnék, hogyan lehetne "Mentés máskánt" panelt rögtön a mentésre kijelölt mappára állítani, hogy ne kelljen a felhasználónak oda vándorolnia.
Sub mentés() Dim fldlg As FileDialog Set fldlg = Application.FileDialog(msoFileDialogSaveAs) With fldlg .Title = "Mentés másként" .InitialFileName = Date & "-" & Range("a20") If Application.Version = "14.0" Then .FilterIndex = 2 ElseIf Application.Version = "11.0" Then .FilterIndex = 4 ElseIf Application.Version = "12.0" Then .FilterIndex = 2 End If End With rv = fldlg.Show If rv Then ActiveWorkbook.SaveAs fldlg.SelectedItems(1) End If
End Sub
Ez így müxik, de mindíg a "Dokumentum" könyvtárra állítja magát.
Bizonyosat én sem tudok mondani, de azt pl. el tudom képzelni, hogy ha van benne jó sok képlet, amelyek valami okból (pl. külső hivatkozás frissítése címén) a fájl megnyitásakor automatikusan újraszámolódnak, akkor az újraszámolt adatok miatt újraformázza a grafikonokat is. Vagy az is lehet, hogy tökfőzeléket reggeliztem, nem tudom... :o)
Elnézést, a pdf-et automatikusan megnyitó makró nem működik, mert az L6 cellára hivatkoztam a K6 helyett. A Sheet1 munkalapon levő kódot kell megváltoztatni úgy, hogy a két helyen szereplő L6-ot K6-ra cseréled. Itt a helyes makró.
Egy kérdésem volna. Szépen működik a file megosztott fileként. A különböző gépekből lehet benne az engedélyezett módosításokat végrehajtani. Egy kicsi hibával: a módosítást a többi gépen csak akkor látják ha ha az a filet bezárják majd újra indítják. A kérdésem az: van-e lehetőség real time-ban azonnal mindenki láthassa a változásokat vagy szintén valós időben jelzést küldeni?
itt egy verzió, ami hasznos lehet. Választható mappából beírja a cellákba a fájlneveket, majd megadhatod, hogy mire nevezze át. Adatérvényesítést nem állítottam be. Bat file-t nem használ, csak az excelt.
Bocs, működik, csak az ékezeteket és szóközöket nem szereti. Még megpróbálom megmondani neki, hogy a batch fájl első sorába tegye be magától ezt "chcp 1250" Ugyanis az ékezeteket a batch fájl nem viszi be.
Retro Image: Azért kell megnyitogatnom az exceleket, bocs pdf-t, mert irattári szkennelések ezek. Meg kell nézni az irattípust, valamint a dátumot. Majd azokat az információkat beadni. Sajnos OCR programok nem tudnak megbírkózni vele. Ugyanis igen változatosak az iratmintasablonok, hiszen 1978-tól napjainkig bármi előfordulhat. Majd amikor olyan szinten lesz az AI, akkor megcsinálja helyettünk a gép. Ez még kb 10 év.
Viszont érdekelne a módszer, hogy lehet fájlokat átnevezni. Az is egy lépés lenne a tökéletesebb megvalósítás felé. Tehát ha megtudod mondani a módját, megköszönöm. :-)
Ha gondolod, váltsunk át emailos kommunkációba, vagy skypera, és a végén, majd ide betesszük a megoldást, hátha érdekelhet később mást is.
skájp:-) : privateer2 mail: biro pont tamas kukac gmail pont com
Nagyon sokat segítettél, örök hálám. Így már 100%-ig olyan a tábla, amilyet szerettem volna.
A B oszlopos mizériát megoldottam, nem fontos.
A másoló kódrészlet így adott helyes értékeket:
For Each Rng In Sheets("leltárlista").Range("G4:G" & Lr) If Rng.Value <> "" Then _ Sheets(CStr(Rng.Value)).Range("B" & _ Rows.Count).End(xlUp).Offset(1, 0).Resize(, 6).Value = _ Rng.Offset(, -5).Resize(, 6).Value Next Rng
Hát már bocsánat, én sem vagyok nagy véleménnyel ennek a fórumnak a technikai színvonaláról, és 2000 óta nézem, ahogy egyre rosszabb és rosszabb verziókkal cserélik le, de kódokat inkább a pastebinbe írjál.
Azért dobja a 'subscript out of range' hibaüzenetet, mert olyan munkalapra hivatkozik, aminek a neve egy üres string (szöveges változó), tehát egy üres cella tartalma a G oszlopban. Esetleg bele lehet tenni egy ha függvényt, hogy ne másoljon, ha a G oszlopban levő cella üres az adott sorban. Beleírtam a kódrészletbe.
Az nem teljesen tiszta nekem, hogy miért nem másol amikor üres a B oszlopban a cella, erre nem tudok mit mondani.
A G oszlop másolásához valóban a resize metódussal kell babrálni, ezt is beleírtam. Ha nem stimmel, szólj!
For Each Rng In Sheets("leltárlista").Range("G4:G" & Lr)
Azért dobja a 'subscript out of range' hibaüzenetet, mert olyan munkalapra hivatkozik, aminek a neve egy üres string (szöveges változó), tehát egy üres cella tartalma a G oszlopban. Esetleg bele lehet tenni egy ha függvényt, hogy ne másoljon, ha a G oszlopban levő cella üres az adott sorban. Beleírtam a kódrészletbe.
Az nem teljesen tiszta nekem, hogy miért nem másol amikor üres a B oszlopban a cella, erre nem tudok mit mondani.
A G oszlop másolásához valóban a resize metódussal kell babrálni, ezt is beleírtam. Ha nem stimmel, szólj!
For Each Rng In Sheets("leltárlista").Range("G4:G" & Lr)
- a For..Each ciklus végigmegy a "leltárlista" munkalap G oszlopán a negyedik sortól az Lr-edik sorig.
- az Rng változó mindig az adott cellát jelenti (először G4, majd G5, stb.)
- If Rng.Value <> "" Then Ha a cella nem üres, akkor
- Sheets(CStr(Rng.Value)) a Rng cellában található érték nevével fémjelzett munkalap (a CStr szöveges változót csinál belőle, hogy ne számként értelmezze)
- .Range("B" & Rows.Count).End(xlUp) B oszlop utolsó sorából indulva felfelé haladva az első nem üres cella (pl. B3)
- .Offset(1,0) az eggyel alatta levő cella (pl. B4)
- .Resize(,6) a kijelölés átméretezése egy celláról hat cella szélesre jobbra(tehát pl. B4:G4)
- .Value és ennek az értéke
legyen egyenlő ezzel:
Rng.Offset(,-6).Resize(,6).Value magyarán a Rng cellától hattal balra levő cella (a "leltárlista" munkalap G oszlopában van a Rng, mint emlékszünk, tehát pl. G4-ből lesz B4)
átméretezve jobbra hat cella széles területté (pl. B4:G4), és ennek az értéke
Ha az utolsó helyett a Z oszlopba teszed a képleteket, azzal szerintem semmit nem nyersz.
A képlet módositása úgy, hogy a Replace feleslegessé váljon, járható útnak tűnik. Ki kell próbálni, hogy működik-e. Azért én nem várnék tőle túl sokat. A Replace elég gyors dolog egy 60-80 soros táblázatnál.
A futtatás előtti aktiv cellát meg úgy őrzöd meg, hogy:
Dim Talon As Range
Set Talon = Activecell
aztán jön a program többi része
a végén pedig
Range("A1").Activate
helyett
Talon.Activate
kell.
A vessző és a pontosvessző körüli kavarodás pedig azért van, mert a VBA részt nem magyaritották az Excel többi összetevőjével. (Hála Istennek :o))
Sziasztok! Szeretnék egy pici segítséget kérni, excelben szeretnék vérnyomásnaplót vezetni. Ehhez találtam egy majdnem minden szempontból megfelelő template-et, amin egy dolgot szeretnék megváltoztatni: azt szeretném, hogy ne day 1, day 2 stb. legyen, hanem pl 2013.02.19, 18:00, és mindez a charton is így legyen, így változzon. Azért szeretném így, mert egy nap többször is mérek. Hogyan volna ez lehetséges? A template linkje: http://raywinstead.com/bp/BPMonthOnceADayFormExcel.xls
Nagyon fontos volna, hálás köszönet annak aki hajlandó volna segíteni.
Aha, köszi, tehát jól láttam, hogy valóban ír a táblázatba! Csak éppen az utolsó oszlopba. Na most ha megmondom, hogy az utolsó oszlop mondjuk a P, és még ha írnak is mellé, a Z oszlop már biztosan szabad, azzal lehet gyorsítani?
És hogy tudom az elején eltárolni a kurzor helyét, hogy ne A1-re álljon vissza?
Ha a SUM(G4,I4,K4,M4,O4) helyett IF(SUM(G4,I4,K4,M4,O4)=0,"",1)-et írnék, azzal megspórolnám a külön cserét, nem? Akkor felesleges lenne az Rng.Replace what:="0", replacement:="", lookat:=xlWhole
Meg kell szokni, hogy itt vessző van a pontosvessző helyett, furcsa, és nem is értem, miért nem az van az Excelben is.
Feladat a következő. Van egy excel fájl, meg mondjuk 6 darab vegyes pdf. Ezeket akarom átnevezni.
Jelenleg a következőképp csinálom. Van egy excel táblám, benne két makró.
Az egyik a mondjuk ctrl+a-val a könyvtárban lévő pdf fájlok neveit listázza be. A másik pl. ctrl+d-vel megnyitja a beállított pdf olvasót.
Utána én kitöltöm pl a dátumoszlopot, majd az irattípust automatikus kiegészítés segítségével gépelve kiválasztom.
Ha végeztem, a kívánt tartalmat copy paste módszerrel át viszem egy sima bat fájlba, ott a wordpad++ makrójával kiszedem a tabulátorokat. És az elkészült sima dosos rename bat fájlal átnevezem a pdf-eket.
Kérdésem a következő
1. Hogy lehetne megnyitni a pdf fájlokat, úgy, hogy ne nyisson meg újabb pdf ablakot. Azaz előzőleg megnyitott fájlt, ha van olyan zárja is be. Tudom, lehet hogy a viewer beállításán múlik. De gyanítom, hogy excelből vezérelhető. 2. Hogy lehetne az irattípust egyfajta legördülő listából kiválasztani. Jelenleg alt+le nyíllal választom ki, vagy beírom az első 1-2 betűt. - Nem nem jött be az adatok - érvényesítés - beállítások fülön a Megengedve (lista), majd forrás megadása. + legördülő lista bepipálása. - Ugyanis szeretném minimalizálni az egerezést, és itt hiába gépelek be bármit, nem működött.
3. Dupla egér kattra nem lehetne elindítani a makrót? Ne kelljen állandóan kombózni? Azaz adott cellára duplán kattintok, hívja be a pdf olvasót. 4. hogy tudnám kiírni egy bat fájlba az excel tartalmát (csak a kívánt területtel)? Megspórolhatnám a copy paste wordpad++ makrós pucolást.
Excel tudom, hogy sosem fog fájlokat átnevezni, ezért kellene nekem egy külső bat fájlt kreálni és elindítani. Ebből adódik az ötös kérdésem
5. hogy tudnám elindítani excelből az elkészült bat fájlt, hogy lefuthasson, átnevezve a pdf fájlokat?
Szia! Ez drasztikusan gyorsabb! Csak nem értem, hogy működik. A Rng.Formula= olyan benyomást kelt bennem, mintha teleírná a munkalapot... Mit csinál ez tulajdonképpen?
A Sheets(Rng.Value) hivatkozás azért nem működött rendesen, mert indexként és nem a munkalap neveként értelmezte, elnézést. Így már jónak kéne lennie.
Változtattam némileg a kódon. Ezt a ThisWorkbook modulba kell bemásolni. Nem frissül automatikusan, amikor változtatsz egy cellát, az túl sok futtatást eredményezne szerintem.
Ehelyett minden alkalommal le fog futni, amikor elmented a munkalapot. Minden futás alkalmával az első sor kivételével kitöröl minden adatot a helységneveket tartalmazó munkalapokról, majd újra bemásol mindent. Elméletileg nem kéne, hogy sok időbe teljen, kíváncsi vagyok, mennyi idő alatt fut le neked.
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim Rng As Range Dim Lr As Long ' utolsó sor Dim Sh As Worksheet Lr = Sheets("leltárlista").Range("G" & Rows.Count).End(xlUp).Row
For Each Sh In ThisWorkbook.Worksheets If Sh.Name <> "leltárlista" Then _ Sh.UsedRange.Offset(1, 0).ClearContents 'kitöröl az első soron kívül mindent Next Sh For Each Rng In Sheets("leltárlista").Range("G4:G" & Lr) Sheets(CStr(Rng.Value)).Range("B" & Rows.Count).End(xlUp).Offset(1, 0).Resize(, 5).Value = _ Rng.Offset(, -5).Resize(, 5).Value Next Rng
Köszönöm! Minimális belepiszkálást igényelt a tesztkörnyezetbe betéve, egy munkalappal odébb tájolta magát, ezt ennek "Sheets(Rng.Value)" a módosításával megoldottam.
Viszont már látom mi lesz ezze a bajom. Ez valóban ahányszor lefut, annyiszor duplázza be a tételeket. Ez megint nem az, amit tőlem szeretnének. Eredetileg az volt a kérdés, hogy az megoldható-e, hogy a leltárlistán szereplő tételek sorában a helység számát változtatva automatikusan, mindenféle futtatás és piszkálás nélkül változzanak a mögöttes helységleltár lapok. Ezért is kell ez külön, mert négy helységnél még szűrök és nyomtatom a leszűrt listát, mint helységleltárt, de ebben feltöltés után lesz egy 300+ tételes anyaglista az első lapon és utána még vagy 20 lap.
A 20449-ben bemutatott rendszer ennek a célnak megfelel. Két problémám van vele: 1: iszonyú redundáns, ahány helység, annyiszor tartalmazza a teljes méretű táblázatot, 2: nem jó a folyószámozás, de ez a kisebbik gond, nyomtatás előtt rendbe lehet tenni.
Én előre szóltam. :D Itt a makró. A leltárlista egyes sorait másolja a B-től F oszlopig (5 cella) a G oszlopban megadott munkalapra. Ahányszor futtatod, annyiszor másolja. Nem hibabiztos, szólj ha valami gond van vele. Javaslom, azért hagyd meg a leltárlistában az eredeti sorokat - annak ellenére is, hogy így kétszer tárolod ugyanazt az adatot.
Sub CopyRows()
Dim Rng As Range Dim Lr As Long ' utolsó sor
Lr = Sheets("leltárlista").Range("G" & Rows.Count).End(xlUp).Row
For Each Rng In Sheets("leltárlista").Range("G4:G" & Lr) Sheets(Rng.Value).Range("B" & Rows.Count).End(xlUp).Offset(1, 0).Resize(, 5).Value = _ Rng.Offset(, -5).Resize(, 5).Value Next Rng
Üdv! Ez is egy megoldás, nekem jó is lenne akár az autoszűrős, akár a jelenleg meglévő módszer, de a kérés felém úgy hangzott, hogy azt oldjam meg, amit lejjebb megfogalmaztam :)
Meg lehet csinálni, de minek szednét szét több munkalapra az adatodat? Sokkal több előnye van, ha egyben van az egész. Könnyen tudsz rá szűrni, kimutatást, grafikont, pivottáblát csinálni. Ha csak egy helység adatait akarod látni, akkor egyszerűen szűrsz arra az oszlopra. Több munkalapon tárolni ugyanolyan felépítésű adatot eléggé előnytelen.
Én John Walkenbach egyik könyvéből tanulgattam a makrók alapjait: VBA programming for dummies a címe, ha jól emlékszem.
Agyalok, hogy hogyan tudnám tökéletesíteni a leltáros táblámat.
A táblázat felépítése ugyanaz, mint eddig volt.
Sorszám / HETK (ez egy kódszám) / Megnevezés / Mennyiség / Mennyiségi egység / Azonosító / Helység szám
A valódi adatsor a 4. sorban kezdődik, addig fejléc van. Minden lap ugyanilyen felépítésű, lapokból most van öt (leltárlista, 1, 2, 3, 4). A helységszám a teszttáblán 1-4-ig terjed, az élesben ennél jóval több lesz, minden helységhez külön munkalappal. A cél az volna, hogy a sorszámozás maradjon meg minden lapon az eredeti állapotban, de az kezdő lapról (leltárlista) az egyes sorokból a B:F tartomány adatai kerüljenek át arra a munkalapra, amit a G oszlopban lévő egész megad.
Jelenleg van egy működőképes megoldás rá, de nem az igazi, ugyanis egy HA függvénnyel átvetettem a megfelelő lapokra az adatokat, de ez szaggatott sorszámozást eredményez az 1-4-ig számozott munkalapokon. Azt szeretném elérni, hogy egyrészt értsem, hogy a makró melyik sora mit művel, másrészt meglegyen az eredeti cél is, azaz a leltárlistáról vegye át a megfelelő értékeket úgy, hogy a sorszámozás minden további munkalapon 1-nél kezdődjön és folyamatos legyen, ha lehet, mindezt automatikusan.
'4. sortól rejtünk csak ha 2. oszlop értéke hamis For sor% = sorok% To 4 Step -1 If Cells(sor%, 3).Value = "" Then _ Rows(sor%).Hidden = True Next Next With Application .ScreenUpdating = True End With End Sub
Elképzelhető, hogy sikerül ezt a makrót úgy átírni, hogy megoldja a feladatot? Hangsúlyozom, érteni is szeretném, így ha elmondja valaki, hogy mit írja át benne, az is tuti lenne (már ha nem 0-ról kell újraírni, annyira nem értek sajna hozzá). Van egyébként valakinek jó tippje, hogy honnan lehetne normális tananyagot szerezni ehhez?
"Valóban azzal a sorral van a bibi valószínűleg, csak azt nem tudom, hogy micsoda!"
De hát mondom: nincs olyan munkafüzet, amire a program hivatkozik. Létre kell hozni előbb, és csak azután hivatkozni rá.
Ha mondjuk van egy sablon munkafüzeted, akkor mondd neki, hogy SaveAs, pl. így:
Workbooks("sablon.xls").SaveAs Filename:="C:\mappa\útvonal többi része\KIR" & Format(Date, "éééé.hh.nn") & ".xls"
aztán már tudsz rá hivatkozni.
Egyébként a programodban a Range hivatkozások egyike sincs adekvát módon definiálva, ezért csak szerencsés együttállások esetén fog működni. Arra számítani, hogy hogy az adott munkafüzetben mindig pontosan a szükséges munkalap legyen aktív, nagy bátorságra vall. :o)
Szerintem ezeket ki kellene javítani, ahhoz viszont a feladat megfogalmazása továbbra is elégtelen.
Igen, hasonló, de ahová bemásolnám, annak a munkafüzetnek változó a neve, mindíg a "KIR" + az aktuális dátum. A munkalap neve mindíg ugyanaz, innen is indítanám a makrót.
Azt, hogy egy adott és ÁLLANDÓ nevű munkafüzetbe másolja, nincs gond, csak nem tudom, milyen módon tudnám úgy összefűzni a munkafüzet nevét, a "KIR" szóval és az aktuális dátummal, hogy azt értelmezze a makró.
Valóban azzal a sorral van a bibi valószínűleg, csak azt nem tudom, hogy micsoda!
Van egy X nevű munkafüzet, annak Y nevű munkalapja, ahonnan szeretném kimásolni a
- B3:L48 fix tartományt
- A B:L oszlopokban, a 3. sortól kezdődő, összefüggő tartományt
- valami más módon definiált tartományt,
és szeretném beilleszteni az A nevű munkafüzet B munkalapjára, az így és így definiált cellától kezdődően (itt is többféle definíció lehetséges, nem sorolom fel újra)
a kód pedig
- az X munkafüzetben
- az A munkafüzetben
- egy harmadik munkafüzetben (név szerint:...) legyen elhelyezve.
Erre már lehetne egy jól működő kódot írni, mert maga a feladat nem nehéz.
Ami a konkrét hibaüzenetet illeti, erős a gyanúm, hogy az alábbi sor a ludas (egyébként a hibaüzenettel párhuzamosan azt is érdemes megemlíteni, hogy hol akad ki a program):
Windows("KIR " & j5 & ".xlsm").Activate
Mégpedig az lehet a gond, hogy nem létezik ilyen munkafüzet, amikor a sor végrehajtódik. Valami sablon munkafüzettel dolgozol, amit előzőleg el kellene a KIR+dátum más néven.
Esetleg a kiterjesztésekkel lehet gond, hogy xls vagy xlsm.
Van egy megosztott file amibe két helyről léphetnek be a dolgozók és kétféle lehetőségük van a filebe írni, azaz két oszlopba csoportba írhatnak de úgy, hogy mondjuk az egyik az A-C másik társaság a D-F oszlopba. Hogyan tudom megkülönböztetni őket illetve az ehhez szükséges paraméterek hogyan kérdezem le?
Köszönöm az eddigi segítséget, amivel rávezetődtem dolgokra. Most ismét megakadtam:
Szeretném, ha egy cellába megjelenne az adott munkafüzet neve. Ez eddig nem nagy probléma, bár csak a teljes útvonalas függvény akar működni, de nem nagy baj, megoldható másképpen is, de...
Szeretném elérni, hogy egy másik munkafüzetből, (Napi kocsikiadás KIVONAT.xls”) EBBE, a naponta (a dátummal változó) változó nevű („KIR ”+dátum elnevezésű) munkafüzetbe másoljon át adatokat.
Feladtam, tobb orat szenvedtem vele es jo par kepernyokepet lementettem, de nem farasztalak vele titeket.Barmilyen datum formatumot probaltam definialni, beiras utan 1900-as evet alapul veve ev.ho.nap ora.perc formatumra irja at, csak megjelenitesnek hasznalja az altalam beirt 4-5 karakteres format, viszont veletlenszeruen megcsereli a honapot es napot vagy orat, nem jottem ra.
Az egerut az egyeni beallitasok kozott 00.00 formatum hasznalata, ami nem datum, tehat figyelni kell a nem letezo datumokra.
A leírás alatt ott áll a szöveg: " MEGJEGYZÉS: A dátumoknak számként való megjelenítéséhez jelöljük ki a cellát, majd válasszuk a Formátum menü Cellák parancsát. A Szám panellapon a Kategória mezőben kattintsunk a Szám elemre."
Asszem fején találtad a szöget. Úgy történhetett, ahogy írtad. Úgy gondolhatták, hogy a dátumkülönbségre nem szűkséges külön képletet kreálni, mert minek, amikor egy sima kivonással megoldható. Míg a networkdays számítása lényegesen komplikáltabb.
De az egy kicsit mulatságos, ahogy sunyin elkenik a súgóban a formátumváltás szükségességét.
A networkdays az Analysis toolpack része. Feltehetően későbbi szerzemény, mint az Excel eredeti elképzelése. És ott már talán gondoltak erre, és arra, hogy ha már a nevében szerepel, hogy days, azaz napok, akkor talán célszerű az eredményt - a napok számát - numerikusan megjeleníteni.
A networkdays számításnál is két dátum operandust kap, oszt általános formátumban adja vissza az eredményt. Sőt, mint írtam az excel sugójában megadott dátumkülönbség mintapéldában is. Ezért gondolom, hogy kell lennie valamilyen beállítási lehetőségnek is.
Akkor csaka feltételes rangeket másold. Természetesen csak ott ahol a többi formátum beállítás is egyezik. Bár ami azt illeti, gyakran egyszerübb a nem feltételes formátumok újbóli beállítása, mint a feltételesé.
Miért? Egyszerűen így működik. Talál két azonos formátumú operandust a műveletben, és beállítja az eredményt is arra a formátumra. Ez majdnem mindig kényelmes is, pont a dátum kivétel. Nem hiszem, hogy érdemes sok energiát fektetni ebbe, át kell állítani, ez van.
Azt sem tudom, miért nem lehet több kijelölt munkalapra egyszerre feltételes formázást beállítani, és miért kell egy 22 fülű munkafüzeten egyenként végigmennem undorító kulimunkával.
A ctrl+c + beillesztes formátum másolja a feltételes formázást is. Ha a beillesztésre több munkalapot jelölsz ki, akkor egy füst alatt mindegyikre.
Ez olyan tartomnányt jelöl ki és rejt el, amely nem feltétlen összefüggő. Ha a tartomány több mint 8192 résztartományból áll, akkor produkálja a hibát.
Tehát ha pl. minden 4. sor megfelel az elrejtés kritériumának, (mint a teszttáblázatomban,) akkor a 8193. elrejtendő sor a 32776-os, és itt már fejreáll az Excel.
Ahol az elrejtendő sorok szomszédosak, az összefüggő résznek számít, tehát akkor több sort tud elrejteni egyszerre.
Nemtom mennyire érthető.
Ami a másik dolgot illeti. Írtam egy progit a feltételes formázások másolására. Talán tudod majd használni.
Sub CopyConditionalFormat() Dim wsSrc As Worksheet, wsCur As Worksheet, Rng As Range, c As Range
Set wsSrc = ThisWorkbook.Worksheets("Innen kell másolni") Set Rng = wsSrc.Cells.SpecialCells(xlCellTypeAllFormatConditions) For Each wsCur In ThisWorkbook.Worksheets If wsCur.Name <> wsSrc.Name Then For Each c In Rng c.Copy wsCur.Range(c.Address).PasteSpecial xlPasteFormats Next End If Next End Sub
Nekem Excel 2007-ben, egy megosztott munkafüzet egyik lapján, nagyságrendben 60-80 sornyi adaton 4-5 másodperc. Én abban a hitben éltem, hogy ekkora adatmennyiséggel bármilyen interpretált programnak is szemvillanás alatt kéne végeznie.
Kedden tudom kipróbálni, köszi! Ezt a megközelítést nem ismertem.
Hiába programozom ezer éve, az Excel az más, Kovalcsikot annak idején nem vettem, mert nem hittem, hogy kelleni fog, most meg antikváriumban is csak előjegyezni lehet, így nincs egy átfogó képem a lehetőségekről, hanem hályogkovács módjára próbálom megvalósítani az elképzeléseimet. Az én scriptem BASIC-személetű, a tiéd excelesebb.
Egyébként érdekes kihívás fejleszteni egy olyan táblázatban, amit megosztva egész nap használhatnak négyen, de csak megosztás nélkül lehet látni a makrókat. Nem is tudom, miért van ennyi korlátozás az Excelben a megosztott füzetekre.
Azt sem tudom, miért nem lehet több kijelölt munkalapra egyszerre feltételes formázást beállítani, és miért kell egy 22 fülű munkafüzeten egyenként végigmennem undorító kulimunkával.
Mit értesz az alatt, hogy "kegyetlen lassú"? Lefuttattam a kódodat, 61440 soron, és 10 másodperc volt :o)
Azért összeraktam én is egyet, íme:
Sub b() Dim EndCell As Range, Rng As Range, LastCol As Range
Set LastCol = Cells(1, Columns.Count).EntireColumn Set EndCell = Range("A:A").Find(what:="XXX", After:=Range("A4"), LookIn:=xlValues, lookat:=xlWhole) If EndCell Is Nothing Then Exit Sub Set Rng = Range("A4").Resize(EndCell.Row - 4) Set Rng = Intersect(Rng.EntireRow, LastCol) Rng.Formula = "=IF(OR(A4=""Eladások"",B4=""ÖSSZESEN"",B4=""valami""),1,SUM(G4,I4,K4,M4,O4))" Rng.Copy Rng.PasteSpecial xlPasteValues Application.CutCopyMode = False Rng.Replace what:="0", replacement:="", lookat:=xlWhole Rng.SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True Rng.ClearContents Range("A1").Activate End Sub
Szerintem elég gyors, de van egy szépséghibája. Ha az "XXX" az A32776 cellában van, vagy annál lejjebb, akkor mintent eltüntet, nem csak azokat a sorokat, amiket kellene.
Ha az "XXX" az A32775 cellában van vagy feljebb, akkor jól működik.
Az igazat megvallva kicsit el vagyok képedve ettől a viselkedéstől, és ha valaki rá tudna világítani a titok nyitjára, azt felállva megtapsolnám :o)
Excel Objects-ben van a munkalapoknak meg a munkafüzetnek a kódablaka. Ide lehet úgynevezett "event macro"-kat is írni, ami akkor fut le, ha az adott munkalapon vagy munkafüzetben valamilyen "esemény" történik. A modulokba ilyet nem lehet. Ha nem event macro, akkor viszont érdemes modulba rakni, mert akkor lehet tudni, hogy ott van a script.
De azt nem én másoltam oda, az akkor került oda, amikor lefuttattam a makrót, azt a makró pakolta oda. Mint ahogy a makró törölte üresre az 11-es sor fölötti dolgokat is.
Én a screenupdate-mellé még beraknék egy Application.Calculation = xlCalculationManual-t és a kód végén állítanám vissza automatikusra.
Nekem volt, hogy már csodát tett. Bár a makród nem ad semmi input-ot a munkalapnak, de a .hide a volatilis függvényeket (ha vannak ilyenek a munkalapon) újraszámoltatja, ami akár durván is lelassíthatja a futást.
Szükségem lenne egy olyan makróra, amely excel-ben egy munkalapon megkeresi az összes 0-át, ( de csak azokat a cellákat, amik semmi más számot, csa 1 db nullát tartalmaznak) és kitörli, majd a munkalapot csv formátumba elmenti, de úgy, hogy az első oszlopot kihagyja belőle.
Ha vki tudna egy ilyet írni nekem, azért nagyon hálás lennék.
Application.ScreenUpdating = False i = 4 Do While Cells(i, 1) <> "XXX" If Cells(i, 1) <> "Eladások" And Cells(i, 2) <> "ÖSSZESEN" And Cells(i, 2) <> "valami" Then s = 0 For j = 7 To 15 Step 2 Rem On Error Resume Next If IsNumeric(Cells(i, j)) Then s = s + Cells(i, j).Value End If Next j If s = 0 Then Rows(i).Hidden = True End If End If i = i + 1 Loop Application.ScreenUpdating = True
Működik, de kegyetlen lassú. Meg lehet ezt gyorsítani valahogy?
'4. sortól rejtünk csak ha 2. oszlop értéke hamis For sor% = sorok% To 4 Step -1 If Cells(sor%, 2).Value = "" Then _ Rows(sor%).Hidden = True Next Next End Sub
Az A4:E9 tartományt átmásoltad a H14:K19 tartományba, ezzel ott is lett egy egyesített rész, a H14:H17. Az egyesített cellákba nem tudja a makró beilleszteni az egyes lapokról érkező adatokat.
Egyrészt az A11-től főfelé van, tehát nem kéne vele foglalkoznia, másrészt meg nincs az A mezőjében 'A' érték, tehát megint csak nem kéne vele foglalkoznia.
Elvileg ennek a fájl megnyitására automatikusan le kellene futni. Most azokat a sorokat rejti, amit szeretnék, de el kellene érni, hogy ne csak az aktív lapon dolgozzon, hanem minden lapon.
Sub Auto_Open() Dim sor%, sorok% sorok% = ActiveSheet.UsedRange.Rows.Count For sor% = 1 To sorok% 'Felfedjük mindegyiket Rows(sor%).Hidden = False Next For sor% = 4 To sorok% '4. sortól rejtünk csak ha 2. oszlop értéke hamis If Cells(sor%, 2).Value = "" Then _ Rows(sor%).Hidden = True Next End Sub
Két dátum különbségét az excelem konzekvensen dátumformában adja meg, ami elég zavaró. És babrás, hogy a korrekt eredményért a cellaformátumot manuálisan kell átváltanom általános számformátumra. Nincs arra valami beállítás, hogy ez szükségtelen legyen?
Megjegyzem a networkdays használatánál magától átvált, és az excel súgójában adott dátumkülönbség példa szerint is meg kéne történnie a formátumváltásnak. De nálam nem csinálja. Mit lehet tenni, hogy csinálja?
A makró futtatása után a H14-H17 valóban összevont cella lett... az főleg érdekes, hogy az ott hogy jött létre, hiszen a makró futtatása előtt ott még nem volt olyasmi, azt valami oknál fogva valamelyik keresés alá vetett tábláról vehette át... vagy nem tudom...
Az adattáblák, amikből keresni és kinyerni kell, azok így néznek ki pl.
Az adatsorok szigorúan egymás után jönnek, nincsenek köztük foghíjak, de minden oldalon az első adatsor a 12. sor. A fölötte lévő dolgok magukat az oldalakat különböztetik meg.
h14:17 nem összevont cellák. Széltében össze vannak vonva, minden sorban, pl. a D12:H12, D13:H13 és így tovább.
Az adatok valóban az A12-K69 tartományban vannak, de nem az ASSET LIST sheeten, hanem az összes többin. Azok pont ugyanígy néznek ki, azokról kéne ugye az 'A' oszlopban az A12-től lefelé lévő mezőkben A értéket tartalmazó sorokat kilopni, és összesíteni mindet egymás után az ASSET LIST sheeten.
"Meg lehet azt is oldani, csak lassúbb lesz, mert minen lapon minden sor A oszlopát egyenként kell vizsgálni, hogy megfelel-e a feltételnek."
Hát, igen, épp ez lenne a cél. Minden lapon az A12-K69 tartományon belül az A oszlop minden mezőjét egyenként megvizsgálni, és ha valahol "A" érték van, akkor a hozzá tartozó teljes sort copyzni az ASSET LIST lap A12-K1000 tartományában a következő szabad sorba. De csak azokat, olyan sorokat, amiknél az A oszlop mezője nem tartalmaz "A" értéket (és csak azt, tehát ha bármi mást tartalmaz, akkor nem kell), azokat nem kívánjuk másolni.
Az összevont cellák is okozhatják a hibát. Ha jól látom, a H14:H17 cellákat összevontad, de lehet, hogy csak a formázás miatt néz úgy ki. A vízszintesen összevont D11:H11 és D12:H12 sort simán átmásolja.
Az adatokat a A12:K69 tartományba írod egy előbbi hsz-edben, de a kép szerint a 12-es az utolsó kitöltött sor. A szűrő addig szűr, míg a tablázatban nem talál egy teljesen üres sort, az alatta lévő sorokat külön táblázatnak értelmezi.
Ha ilyen foghíjasak a táblázatok az egyes lapokon, tejesen más makró, nem szűrésen alapuló kell hozzá. Meg lehet azt is oldani, csak lassúbb lesz, mert minen lapon minden sor A oszlopát egyenként kell vizsgálni, hogy megfelel-e a feltételnek.
(ez az asset list nevű fül, a fülek között a második, ezért a for lap = után a 2-t 3-ra változtattam, és az if lap = -nél is)
Így pedig a makró futtatása után:
A makró az alábbi (a gyűjtőket írtam át benne assetlistre, és az A1-et A11-re, ahogy javasoltad.
Az A jelű tesztadatokat ki is másolja, de csak az első keresendő tábláról, aztán az általam vastagon szedett sornál 1004 hibával (cannot change a part of a merged cell) leáll, és nem lép tovább a második keresendő táblázatra.
Valamint ugye az is probléma, hogy a fejléc részét is üresre törli a céltáblázatnak, meg utána beszúr még olyan dolgokat, amiket nem kéne, ahogy látszik is.
Sub ASSETLIST() Dim Rng As Range, lap As Integer, usorGy As Integer Application.ScreenUpdating = False
Sheets("ASSET LIST").Columns("A:K") = ""
For lap = 3 To Sheets.Count Sheets(lap).Select If lap = 3 Then Rows(11).Copy Sheets("ASSET LIST").Range("A11")
Selection.AutoFilter Field:=1, Criteria1:="A" Set Rng = Range("A12:K69") Set Rng = Rng.SpecialCells(xlCellTypeVisible) usorGy = Sheets("ASSET LIST").Cells(Rows.Count, "A").End(xlUp).Row + 1 Rng.Copy Sheets("ASSET LIST").Range("A" & usorGy) Next
Sheets("ASSET LIST").Select Application.ScreenUpdating = True End Sub
Szerintem próbáld meg a cellákat beírás előtt formátumozni. A cellaformátumnál válaszd az egyénit, és ezen belül a hh.nn szöveget írd a formátumkód mezőbe! A magyar office-nak ezt értenie kellene. (Ha angol lenne az office, akkor feltehetőleg a mm.dd kellene).
Ezzel azt éred el, hogy úgy a hónapok, mint a napok két karakterrel kerülnek a cellákba. Fenn a szerkesztőlécen ugyan az év is megjelenik, de gondolom, ez nem baj.
Igen, ilyenek nalam is vannak, de ezek szokozt hagynak maguk utan es beiras utan atvaltoznak mas adatra. Tartok tole, hogy azert, mert az oprendszer angol, es hiaba magyar office van rajta, es magyar sema beallitva, valami nem tetszik neki.
Olyat szeretnek, ami fix 5 karakteren hozza egymas alatt a "01.01" - "12.31" sort.
Ha beszenvedem a nalad levo elso adatot, az ilyeneket ir:
"3. 4"
"5. 21"
"11. 2"
"12. 30"
azaz 2 karakteres elteresu hullamzo oszlop a vegeredmeny, es egyesevel kell gepelnem, es figyelnem, hogyan valtozik, mert a szerkeszto mezoben mindig "1900. 3. 4" jelenik meg. :-((
Ha a címsorod van a 11. sorban, akkor változatlanul használhatod a makrót, ha az első, adatot tartalmazó sor a 11., akkor a Set Rng = Range("A12:K69") sorban a 12 helyett írj 11-et.
Sub A_kigyujtes() Dim Rng As Range, lap As Integer, usorGy As Integer Application.ScreenUpdating = False
Sheets("Gyűjtő").Columns("A:K") = ""
For lap = 2 To Sheets.Count Sheets(lap).Select If lap = 2 Then Rows(11).Copy Sheets("Gyűjtő").Range("A1")
Selection.AutoFilter Field:=1, Criteria1:="A" Set Rng = Range("A12:K69") Set Rng = Rng.SpecialCells(xlCellTypeVisible) usorGy = Sheets("Gyűjtő").Cells(Rows.Count, "A").End(xlUp).Row + 1 Rng.Copy Sheets("Gyűjtő").Range("A" & usorGy) Next
Sheets("Gyűjtő").Select Application.ScreenUpdating = True End Sub
Mit változtassak a makrón, ha azt szeretném, hogy minden keresett oldalon csak az A11:A69 sorokban keresse az A-kat? (gyakorlatilag az A11:K69 területen vannak az adatok) A felette lévő dolgok nem adatrekordok, csupán egyfajta fejléce a különböző sheeteknek.
Ugyanígy, a célsheetnek is van ilyen "fejléce", tehát az eredményül kapott adatrekordokat ott is az A11 lenne az első sor, ahová kapott eredményt írunk be.
Sziasztok, az alábbi feladatra keresem a megoldást Excel 2010-ben.
Adott egy táblázat, amiben van több lapfül.
Minden lapfül tartalmaz adatokat, az alábbi elrendezésben
Attribútum | Név | PO | Megnevezés | Code | HUF | USD
Minden lapfülön azonos strukturában tároljuk az adatsorokat.
A feladat az, hogy mindegyik lapfülről kigyűjtsük azokat az adatsorokat, amelyeknek az Attribútum mezőjében 'A' érték található (ebben a mezőben igazándiból csak igen-nem állapot van, tehát vagy üres a mező, vagy tartalmaz 'A'-t), és ezeket az adatsorokat a többi mezőjével együtt kimásoljuk egy másik lapfülre.
Ha manuálisan csinálnám, úgy csinálnám, hogy auto-szűrővel leszűröm az attribútum mezőre, majd a kapott szűrt táblát CTRL-C - CTRL-V-vel átmásolom arra a lapfülre, ahol szeretném látni őket. Hangsúlyozom, az ÖSSZES lapfülről szeretném összeszedni a keresett adatsorokat.
Megúszom-e én ezt makró nélkül, van-e valami függvény, vagy más megfejtés erre?
Meg tudod (ha akarod) oldani a közvetlen címzést, ha meghatározod a makróval a beillesztés helyét. Erre írtam a példát, ami megállapítja, hogy az utolsó kitöltött sorod a 13, és ez alá 4-gyel kell beszúrnod a következő adatodat.
Ha rejtett sort másolsz és nem akarod, hogy a másolat is rejtett legyen, akkor az irányitott beiilesztés képlet/értéke-t használd.
Azt nem értem, hogy a rejtett lapról miért nem tudsz másolni. Nálam minden további nélkül megy. Sőt, a legnagyobb meglepetésemre a sima Paste a rejtett lap rejtett sorait sem rejtve másolta.
Az nem képzelhető el, hogy hibásan írtad be a lap nevét?
Tudtommal nem lehet. De a HELYETTE vagy a CSERE függvény alkalmazásánál nem vált át dátumra. Aztán a módosított oszlop visszamásolható az eredeti oszlopra.
beírom egy cellába pl 13/1/2 Eleve szövegként formázom hogy ne csináljon belőle dátumot mert ez valamilyen pozíció, pl raktári sorok oszlopok polcok száma. Eddig jó. Amikor viszont "csere" funkcióval le akarom mondjuk cserélni a 13 at 14 re akkor az eredményt dátumként formázza és 2014.01.02 -t ír be. Miért akar mindenképp dátumot csinálni mindenbő?
Persze megoldja aproblémát ha aposztróffal kezdem pl '13/1/2 de nem lehetne alapból kikapcsolni azt a funkciót hogy mindenből dátumot próbáljon csinálni? Elég idegesítő.
Akkor még egyszer ugorjunk neki: Felejtsd el, hogy oszlop beszúrással akarj cellákat beszúrni! Válaszd külön magadnak a két fogalmat. Az oszlop beszúrást (vagy törlést) a cellák beszúrásától (vagy törlésétől). Amit Te akarsz, az cellák beszúrása az alsó oszlopokba a 21. sortól kezdődően. Tehát a 21. sortól lefelé kijelölöd az összes cellát (abban az oszlopban, amelyik elé be akarsz szúrni), majd az egér jobb gombjával a beszúrást választod. Erre megkérdezi, hogy mi legyen a beszúrás módja. Ekkor válaszd azt, hogy cellák eltolása jobbra! És láss csodát, beszúródott egy új oszlop, miközben a felső rész maradt.
Egy kis elmélet: A sorok és oszlopok rögzítése nem azt jelenti, hogy nem tudod módosítani (beszúrás/törlés), hanem azt, hogy a képernyőn rögzül, miközben lapozol. Más szóval a fejléc, vagy a bal oldali oszlopok egy része mindig látható. Nagy segítség ez, ha több oldalas táblázattal dolgozol.
Megjegyzés: A ctrl +, vagy hasonló megoldást nem ismerem. Ettől még létezhet, de én nem találkoztam vele.
Még valamit: Ha az a gond, hogy a fent leírt módszer nem kényelmez, mert a táblázat több ezer soros, és nehézkes a 21. sor alatti cellák kijelölése, arra is ven megoldás. Csak most itt nem akarom bonyolítani, de ha kell, majd elmondom.
Nem tudom leírni túl érthetően, szóval van egy munkafüzetem, egymás alatt 2 táblázattal.
Ha a felső táblába +1 oszlopot kell bevinnem akkor az alsóba is berakja a beszúrásnál, és törlésnél ugyanúgy egyszerre törli az egymás feletti táblázatok celláit, hiába rögzíttetem az ablaktáblát vagy a felosztásban hiába osztom fel a két táblázatot.
Szia, én bárhogy rögzítem a felső 20 sor ablaktábláját, ha új oszlopot akarok beszúrni akkor felül is meg alul is bezeszúrja. Pedig még nagyon régen tudtam hogy hogy lehet megoldani hogy csak alulra vagy felülre szúrja be valami ctr és + vagy mi volt de most ezen ez sem műlödik :(
A makrós változat ha működik, annyiban jobb, mint az én feltételes formázásom, hogy eltünteti a szükségtelen sorokat, így megakadályozza a véletlen felülírásukat, pl. ha összegezni kéne valamelyik rubrikát.
Nálam van valami zűr. Roppant meglepő és abszolut érthetetlen. Ugyanis az van, hogy kattingatással kijelölve nálam is müködik <>HAMIS szűrés. Autófilterrel is, irányítottal is. Csakhogy van egy default makróm a szűrésre, amit általában használok a kattingatások helyett. Még a 2003-as excelre csináltam, de müködik a 2007-en is. Elég univerzális, csak arra kell ügyelni, hogy a táblázataim a 10-sortól kezdődjenek és a 2. sorba csak kritérium kerülhet
Na most ez a makró, miután letoltam a leltáros táblázatot a 10. ik sorra
az E oszlop e1:e2 'Me.' és 'db' kritériumára jól szűrt,
a HAMIS-ra szintén,
DE a <>HAMIS-ra süket.
Kattintgatva viszont mindhármat korrektül szűrte. Egyszerűen érthetetlen. Ötlete valakinek, hogy miért müködik másképp a kattigatás és a makró?
Aztán kiderült, hogy a <HAMIS sem müködik mindegyik oszlopban, mert az meg a HAMIS 'h'-betűjére szűr. Tehát pont az E-oszlopban gubancol mert ott a 3-ik sorban m-betű van, ami ugyebár nem kisebb mint a h-betű. De hogy még kuszább legyen, csak a makrós változatban. A kattingatósnál egyetlen sor se marad, kiszűri az összest :))).
Ha nincs ez a leltáros példa, ki tudja mikor és hogyan derülnek ki ezek?
A szűrés amolyan félautomata módszer, de a semminél mindenképp jobb. A gond ott adódik vele, hogy a leltárlistában, ha bővítem valamelyik helység leltárát, az nem vezetődik rá automatice a helység lapjára, hanem újra kell szűrni. Végső soron megoldás ez is, de az igazi az automata lenne.
Kipróbálom ezt a feltételes formázós megoldást is, hátha ez azt csinálja, amit szeretnék.
Találtam valahol egy üres sorokat elrejtő makrót is, de az meg nem azt teszi, amit én szeretnék tőle, mert csak a tényleg üres sorokat rejti, nálam meg képlet van a sorokban, ergo nem üres.
Ez a makró:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sor%, sorok%
sorok% = ActiveSheet.UsedRange.Rows.Count
For sor% = 1 To sorok% 'Felfedjük mindegyiket
Rows(sor%).Hidden = False
Next
For sor% = 4 To sorok% '4. sortól rejtünk csak ha 2. oszlop üres
If Cells(sor%, 2).Value = Empty Then _
Rows(sor%).Hidden = True
Next
End Sub
Ez kb. azt csinálja a ténylegesen üres sorokkal, amit szeretnék. Rá lehet venni, hogy ne a cella tényleges tartalmát (HA függvény), hanem az értékét ("") vizsgálja?
Nálam jól működik. Legalábbis ha az E oszlopba írom, hogy =g4<>1, akkor a 4-6. sorokban hamis az eredmény, a többiben igaz. A szűrést is próbáltam (autoszűrés), és nálam ott is működik.
Ha pimre képletét használva rászűrsz akármelyik oszlop üres stringet tartalmazó celláira, eltünteti a sorokat.
Egy kérdés a fentiekhez.
Ha nem használjuk pimre üresstring kiegészítését KelemenGy =HA(leltárlista!$G$4:$G$13=1;leltárlista!A7;"") képletében, akkor ha g4:g13<>1 hamis cella eredményeket ad. A hamis cellákat nem szűri ki a <>hamis kritérium. MIÉRT?
Ha pimre képletét használva rászűrsz akármelyik oszlop az üres stringet tartalmazó celláira, eltünteti a sorokat.
De megoldható feltételes formázással is: Az a4 cellat feltételeses formázod ezzel a képlettel: =a4="", a formátum meg szegélyek nélkül. Majd az a4 formátumot speciális beilesztéssel végigmásolod a táblázatodon.
Lehet, hogy kissé láma kérdés, de a neten nem találtam rá megoldást (feltételezve, hogy van...):
Excel-2010-ben (97-2003-as xls-verzióban lementett) táblázatban, VBA-makróban Advanced Filter használatánál kellene segítség, hogy megoldható-e, hogy a megadott kritériumnak NEM megfelelő elemeket szűrje le?
(Azért nem jó a pozitív lekérdezés, mert a megfelelő elemek száma folyamatosan nőhet, míg a nem megfelelőké viszonylag stabil - de legalábbis könnyebb kordában tartani...)
Ahogy én látom, a HA() függvényednek csak az "IGAZ" ágát töltötted ki, a másikat nem. Javasolnám például a =HA(leltárlista!$G$4:$G$13=1;leltárlista!A7) helyett a =HA(leltárlista!$G$4:$G$13=1;leltárlista!A7;"") képlet használatát. Ez megoldja azt, hogy ne látsszanak az ilyen adatok.
Hogy bele se kerüljenek, arra a így kapásból makró nélkül nincs ötletem.
Ejnye már! Az előbb magyaráztam el, hogy hogyan lehet cellákat törölni, illetve beszúrni, azaz az általad említett 5 táblázat valamelyikének "oszlopait" a többitől függetlenül kezelni.
És ne haragudj meg, de javasolom, hogy először alapszinten tanuld meg az Excel használatát, és ezután fogalmazd meg, hogy mik benne a hiányosságok, melyek azok a megoldások, amelyek "életszerűtlenek"!
Azt már nagyjából megoldottam, hogy a leltárlistából átkerüljenek az adatok a megfelelő helyekre, de azt vajon hogyan lehetne elérni, hogy a "HAMIS" értéket tartalmazó sorok ne látsszanak, esetleg bele se kerüljenek az 1-4-ig számozott lapokra.
Végső soron ez egy leltárnyilvántartó lenne, amit szeretnék, ha úgy működne, hogy csak a leltárlista lapon kelljen felvinnem, módosítanom az adatokat, az 1-4-ig lapokat pedig töltse ki az excel automatikusan a megfelelő adattartalommal. Ezek egyébként helységleltárak lesznek. Így 10 tétellel még elbánnék kézzel is, de többszáz tétel van és legalább 15 iroda.
Van erre valakinek ötlete? Egyáltalán képes az excel ezt lekezelni?
Ha nem titkos, esetleg át tudnád küldeni a weboldal címét, ahonnan leszeded az adatokat?
mert kehet, hogy az excel beépített, külső adatok importálása funkcióval sokkal jobban jársz, az ugyanis formázatlan adatokat is képes behúzni
Ha nem megy a fenti megoldás, akkor sajnos semmiképpen nem lehet megúszni a plusz oszlopot, de egy segédoszloppal simán működik, ha beteszed az alábbi függvényt a "C" oszlopba
Azt hittem ilyen alap dolgokat simán lekezel egyszerűbben az excell.
Vagy olyan életszerűtlen hogy van mondjuk 5 táblázatod egymás alatt, és abból az egyikből törölni kell adatokat / oszlopokat úgy hogy a többi ne változzon :) :) :)
Ugyanúgy, mint a fejléc rögzítést. Csak ekkor a b4-re állsz, és így rögzíted az ablaktáblát. (És persze ugyanígy lehet 2, 3 stb. oszlopot is rögzíteni)
"...nekem úgy kéne hogy a felső 30 sor, megmarad fix, az alsóban meg oszlopot szúrok be vagy törlök, akkor a felső nem változik": Ez így közvetlenül idegen az Excel szemléletétől, mert ez oszlop beszúrás, az oszlop beszúrás, nem pedig fél oszlop beszúrás. De 2 lépésben meg tudod oldani, amit akarsz:
1. Beszúrod az új oszlopot. (Mondjuk a C oszlop helyére egy új C oszlopot.)
2. A felső részen kijelölöd az új oszlopban azokat a sorokat, amik nem kellenek. (3 soros fejléc esetén a C1:C3 tartományt), majd kéred a cellák törlését (egér jobb gomb), és a kérdésre, hogy hogyan, válaszd az eltolást balra.
Elvileg lehetne fordítva, hogy az alsó részen jelölöd ki a fejléc alatt a C oszlop elemeit (a C4-től lefelé az összeset), majd a beszúrást választod, és a kérdésre azt választod, hogy cellák eltolása jobbra.
usor = Cells(Rows.Count, "A").End(xlUp).Row eredménye 13 a csatolt kép szerint, mikor az A oszlopban még csak a "Második tartomány" adatai szerepelnek. Az oszlopazonosítók nem szerepelnek a képen, csak feltételezem, hogy az A oszlopban vannak az adataid.
Mivel a következő tartományt a 17. sorban akarod kezdeni, a makróba
usor = Cells(Rows.Count, "A").End(xlUp).Row+4 -et írj. Az usor változó értéke lesz a másolás helyének a sora.
Sziasztok! Az alábbi probléma előtt állok, remélem, tudtok segíteni. A lapon van több, elkülönült tartomány, melyeket gombnyomással szeretnék másolni, mindig a saját típusú tartománya alá.
Ezt makróval próbáltam megoldani, ami sikerült is látszólag, ám amint egy felső tartományt saját maga alá másoltam, az alatta lévők rossz helyre másolódtak, kaotikus lett a kinézete, mivel a makróban a sorok adatai, számai nem illeszkedtek a változásokhoz, ahogy az a normál képletekben megszokott $ jel nélkül. Szeretném, ha valahogy meg lehetne vizsgáltatni, hol van annak a blokknak, tartománynak a vége, utolsó sora és mindig az alá beilleszteni az új tartományt, melyben a cellákat (a kitöltendőket) ezután törölni is kellene. Jelenleg ilyen az egyik tartomány másoló makrója, de nem jó így. Sub Makró2() ' ' Makró2 Makró '
' Rows("75:84").Select Selection.Copy ActiveWindow.SmallScroll Down:=3 Rows("85:85").Select Selection.Insert Shift:=xlDown ActiveWindow.SmallScroll Down:=9 Application.CutCopyMode = False Range("C86:M86").Select End Sub
Remélem, érthetően sikerült leírnom, mit is szeretnék, köszönöm segítségeteket.
Ez a 1-gyel való irányított beillesztéses szorzás nem akar nálam működni. Mert marad az eredeti eredmény, azaz nem akar számmá alakulni. A státusz sorban sem mutatja az összeget (és mást sem) ha ezeket a számokat kijelölöm.
ujszaszy - vagy bárki aki letölti a xls fájlt - megkérhetlek, hogy megnézd nálad működik-e nálad ez a fajta 1-gyel való szorzás?
A HELYETTE fv. külön oszlopot igényel, emiatt nem annyira szimpatikus.
még annyit tennék hozzá Delila megjegyzéséhez, hogy a nem nyomtatható karatkterekkel kezdődő tartlalnaknál nem mindig működik.
Jelen esetben is van minden cella előtt egy 160-as kódú valamilyen karakter.
így inkább képlettel csinálnám
=HELYETTE(L6;KARAKTER(160);"")-0
Így működik
:-)
pl. az eredeti C7 cellában "€ 0.060" volt. A cserék alkalmával az € jelet cseréltem (Ctrl+F) semmire. Tehát az € után volt egy szóköz, ami megmaradt.
Először a "€ " (tehát szóközt írva utána) akartam cserélni, de így nem engedte, az az üzenet jön, hogy a "Microsoft nem talált egyezést". Emiatt kényszerültem csak a "€" karaktert cserélni.
És úgy is ez az üzenet jött, ha az "€ 0"-t akartam cserélni, mert jellemzően 1-nél kisebb számok vannak az oszlopban. "€ 0.060"-ból lett volna így 0.06.
Nem tudom, hogy mi lehet a baj, mert "€ 0.060" ebben benne van ez: "€ 0"
Másolásoknál előfordulhat, hogy bár általános formátumúak a cellák, mégis szövegként szerepelnek a benne lévő számok. Ezt legegyszerűbben úgy tudod ellenőrizni, hogy kijelölsz néhány cellát, és ha a státuszsorban szerepel az összegük, akkor számok, másképp nem.
Ilyenkor egyszerűen számokká alakíthatod. Egy üres cellába beírsz egy 1-est, Ctrl+c-vel másolod. Kijelölöd a kérdéses oszlopot. Jobb klikk, irányított beillesztés, szorzás. Már át is alakultak, az 1-est törölheted.
Ez tévedés, valamit rosszul csinálsz. Mivel van Excel 2007-esem is (csak nem használom), megnéztem. A nézet menüben válaszd az ablaktábla rögzítést úgy, hogy a kívánt soron állsz! Tökéletesen működik. Ha a 31. soron állsz, akkor az első 30-at, ha a 180. soron, akkor az első 179-et rögzíti. Az más kérdés, hogy az utóbbinak kevés gyakorlati értelme lehet.
Nem tudom, hogy Te mit csinálsz másképp. Próbáld meg még egyszer!
Sőt ott meg csak a felső első sort rögzíti, a régi meg a felső 3 sor fejlécét is tudta rögzíteni. Ezt se találom hogy lehet megmahinálni :( mire jó ezt változtatgatni folyton :(
Ha jól értelmezem a kérdésedet, akkor ez a megoldás: Ráállsz az utolsó rögzítendő sor utáni első sor (a Te esetedben a 31.) első oszlopára, majd a fenti menüben az 'ablak' gomb kiválasztása után a legördülő menüben: 'ablaktábla rögzítése'. Ekkor az első 30 sor fix, és a 31-től scrolloznak a sorok. Ha nem az első oszlopon állva rögzíted az ablaktáblát, akkor a kiválasztott cellától balra lévő oszlopok is rögzítődnek, a többi pedig bal-jobb irányba scrolloz.
csinálok menetrendeket excellben (kb olyan mint a vasúti)
Egyik táblázatba megírom az oda irányt, aztán egy új munkalapon megírom a vissza irányt.
Namost kellene hétvégi oda és hétvégi vissza irány is, de nem akarok +2 munkalapot készíteni.
El lehet-e valahogy különíteni a felső (kb 30 sort) az alsó soroktól, tehát ha mondjuk be kéne szúrnom vagy törölnom kéne az alsó táblázatból sorokat akkor a felsőben ne változzon semmi?
Na ez lesz a vége, pont most jutottam idáig, mert a B adatbázis csak webes phpmyadminon érhető el, az meg simán hátast dob a 123 ezer számtól, hiába egyszerű a lekérdezés. Lesz egy CSV export, aztán vagy írok rá egy programot, mert van egy txt és egy csv, vagy megy mind a kettő Accessbe.
Esetleg még egyszerűbb, ha az egymás alatt levő számokat átteszed Wordbe, vagy bármely olyan szövegszerkesztőbe, ami tud speciális karaktereket is cserélni, és ott lereplaceled a paragrafusokat vesszőre. A Wordben. Ctrl + H >> a Keresett Szöveg mezőbe a ^p , a Csere erre mezőbe pedig a , (vessző, vagy amit szeretnél) írod. A beírható karakterek száma egyébként tök mindegy, mert pl a csere és keresésnél továbbra is csak 255 karakter.
Function SQL() As String Dim s As String s = Worksheets("f").Cells(1, 1).Value For i = 2 To Worksheets("f").Cells(Rows.Count, "A").End(xlUp).Row s = s & ", " & Worksheets("f").Cells(i, 1).Value Next s = "in (" & s & ")" SQL = s End Function
Na ez a következőt csinálja: egymás alá írt számokat vesszővel elválasztva egymás mellé tesz, előállítva egy SQL kódrészletet a lekérdezéshez. 5-6 egymás alatti számnál működik is. Tehát a kód jó. De ha ráeresztem miond a 123 ezret, akkor tíz percre lefagy az Excel, és utána #ÉRTÉK hibát ad. A szokott módszeremet, hogy egyszerű konkatenációval rakom össze sorról sorra, meg se mertem próbálni ekkora mennyiségnél.
Mit rontottam el? Most én tehetek róla, hogy ennyi szám van? Elvileg ez nem olyan sok Excel 2007 alatt.
(Sajnos két adatbázisunk van, és az egyikben futtatott lekérdezés eredményét kéne a másikban felhasználni, ezért nem tudok közvetlen allekérdezést használni.)
Reggel óta ezt a képletet próbálom, de sajnos egyelőre nem jön össze. A képlet alapján semmit nem mutat, még ott sem, ahol van kép.
Pedig már elvi szinten azt is kidolgoztam, ahol több kép van (gyerek neve + számozás), hogy ezeket hogy tudom a képlettel megcsinálni több oszlopban. Most már csak oda kellene eljutni, hogy csak ott mutassa a hivatkozást, ahol valóban van kép.
Próbáltam azt is, hogy csak a HA függvénnyel jelezze, ha van kép, de az sem működik. Minden cellában azt jelzi, mintha lenne kép, holott nincs.
jajaja, bár én még nem tettem fel a 2013-ast, sokat hallottam róla. Ilyen megbrutál függvényeket ritkán használok, és eddig a jól bevált "T" függvényt használtam a függvény részek kommentelésére :-)
a legdurvább nekem eddig az alábbi kis színes volt
Formula indentation normál excel user interface-ben. Tudott erről valaki? Nem olyan dolog amit mindennap használni fogok, de vannak hosszú egymásba ágyazott függvényeim, amiknél jó lehet.
Igen - eddig egyesével állítottam be a hivatkozásokat, évek alatt folyamatosan, ahogy jött az anyag hozzá.
Általában akkor szokott elszállni az össze hivatkozás, ha valami miatt meghal a gép, miközben meg van nyitva az Excel. Régen volt pl. áramszünet miatt (rossz volt a szünetmentes), volt, hogy sima kék halál miatt.
XP van a gépemen, és nem is engedem másra cserélni. ;)
Eddig azért volt jó, hogy egyesével csináltam a hivatkozásokat, mert így rögtön látni lehetett a kék betű miatt, hogy kinek van beszkennelt igazolványa. Most a függvénnyel viszont az összes gyereknél úgy tűnik, mintha lenne valós hivatkozás.
Nem tudom, hogyan állítottad be eddig a hivatkozásokat, ahogy olvastam a leveled, valószínűlek kézzel, egyenként.
Több oka is lehet, pl áttértél Win XP-ről Win7-re, ami néha felülírja a user beállításokat, lehet, hogy egy frissítést tölöttél le az excelhez, és az írja felül az ilyen profilokat.
Nem tudom, de biztos, hogy ha így "be van égetve" függvénnyel a link, az addig nem változik, amíg a képletben át nem írod.
Sajnos makro nélkül nem nagyon tudod megnézni, hogy egy adott file létezik-e, vagy sem, és azzal is bonyolult.
Esetleg azt tudom javasolni, hogy azoknak a gyerekenek, akiknek nincs képe, csinálj egy üres képet, saját nevével, a megfelelő mappába, így minden hivatkozáshoz lesz képed, véletlenül sem akad bele az excel.
Sikerült! :) Az "apróbb" technikai problémák miatt még nem tökéletes - amit írtam, hogy vannak olyan gyerekek, akikhez több kép is tartozik, és kb 90%-nál csak a gyerek neve a kép neve is, csak ott van megadva az anyja neve is, ahol névegyezőség van. Csak hogy gyorsabb legyen, valószínűleg sorszámozom a gyerekeket, akiknek azonos a neve - lesz Szabó 23 László :D, és a hozzá tartozó képet is sorszámozom, így nem kell minden képet átnevezni gyerek neve-anyja neve névre. Ez lényegesen kisebb munka.
Most már csak azt kell megoldani, hogy azoknál a gyerekeknél, akiknek nincs beszkennelve adata, valahogy jelezze az Excel - de mintha a Hivatkozás függvény erre készült volna, ahogy ránéztem.
Nagyon köszönöm a segítséged!
Azt nem tudod véletlenül, hogy miért mászik el a hivatkozás???? Miért változtatja meg önkéntesen az Excel, hogy hova mutat az össze hivatkozás?
abba az adattáblába, amiből készíted a kimutatást, (ami gondolom olyasmi struktúrában van hogy az A oszlop az ID, B a dátum, stb, szúrj be egy új oszlopot, ahol minden ID-hoz hozzárendeled a doboz számot. ez a része mehet akár Fkeres-sel, akár ofszet-tel, index-el, mindegy).
Így lesz egy olyan adattáblád, ami az adatokon kívül egy új oszlopot is atartalmaz, minden ID-hoz, a hozzá tartozó darabszámot.
Ebből az új táblából kérsz egy ugyanolyan kimutatást, mint amit eddig is csináltál, csak beszúrod a számított mezőt, amit írtam.
Vagy egy másik megoldás: a számított mezőbe képletként a VÁLASZT függvényt alkalmazod, ami 255 paramétert tud kezelni, és akkor nem kell megbolygatni az eredeti adattábládat
szerintem ha az eredeti adattábládba (amiből a kimutatás készül), felveszel egy plusz oszlopot, amiben az ID-hez hozzárendeled a doboz mennyiségeket, akkor zsírság.
Akkor már automatikusan tudsz szorozni a kimutatásba beszúrt képlettel
Ez a "95 csippantás", "104 csippantás"... dobozokat jelent. Amiben van a termék. A termék mennyisége egy dobozra vetítve az ID-től függ. És azt szeretném automatizálni, hogy 2013.01.02.-án legyártottunk 95 dobozzal ami darabszámra vetítve(95*18)1710db. 2013.01.07.-én legyártottunk 51 dobozzal ami 1020db(51*20).
Szóval azt akarom, hogy ne nekem kelljen egyesével kikeresni hogy az adott sorszámban hány darab termék van amit az adott napon legyártottunk.
Amit írtál "második lehetősget" szerintem erre van szükségem! :) Ide kellene valahogy olyan képlet ami a G oszlopban lévő sorszámhoz társítja a H oszlopban lévő értéket és megszorozza vele. Ha egy termék lenne akkor ugye sima szorzás lenne az egész ami menne is szerintem de az a baj, hogy 12 fajta különböző ID van és mindegyik más mennyiség.
Ahol a cím a konkrét file eléri útvonala "idézőjelek között", majd szintén idézőjelek között a cellában megjelenítendő szöveg, jelen esetben "MUTASD A KÉPET"
Próbáltam egy kis minta excelt csinálni a képletekkel
Természetesen ez azt feltételezi, hogy a mappa elnevezések konzekvensek legyenek pl Gyereknév_AnyjaNeve
nem teljesen értem. Jól gondolom, hogy a munkalapon szeretnéd megszámolni, hogy hány darab 400667-es kód van?
A szorzás/osztásra, vagy bármilyen műveletre pedig az egyénileg kalkulélt oszlopok jelenthetnek megoldást.
HA igen, akkor az eredeti adattáblából is könnyedén ki lehet ezeket az aggregátumokat számolni.
Egyébként vana amásik lehetőség, a pivot táblába való egyedi kalkuláció beszúrása. Ezt 2010-ben úgy éred el, hogy rákattintasz a kimutatásra, akkor megjelenik a "Kimutatáseszközök" menü.
Itt a Beállítások fül, majd a Számítások menü Mezők, elemek és halmazok opcióját választod.
Majd a Számított mező menüpontot. Itt gyakorlatilag minden az excel által használható képlet bármilyen kombinációját meg tudod határozni, és ez a kimutatásban egy új "oszlopként" jelenik meg. Ami azért jó, mert mindig a kimutatás méretével együtt változik.
Továbbra is csak a mappát nyitja meg, kb. 5000 kép hivatkozását kellene megcsinálni, úgy hogy felismerje a neveket a mappában, és hozzárendelje a cellához. Mi ez a MUTASD A KÉPET?? Ilyen függvényt nem találtam.
Az 1710,1872,1800,1020-as értékeket szeretném automatizálni valahogy :) Igaz a képen csak 2 darab van de amúgy 14 termék és elég sok munkanap van egy évben(sajnos :D)
A Hiperhivatkozással az egész mapppát nyitja meg, és én azt szeretném, ha csak az adott nevű gyerek beszkennelt adatait nyitná meg. Mit csinálok rosszul???
próbáltad már az excel beépített HIPERHIVATKOZÁS képletét? Ez egy linket heberál a megadott címre(amibe be lehet égetni az E megjatót). A hivatkozás lehet weblap, bármilyen file a gépeden, vagy a szerveren, esetleg az excel egy adott pontja.
Képlettel arra is van lehetőség, hogy összefűzd a neveket mappanevekké, és akkor cska le kell húzni a képletet, nem is kell makro.
Csak arra kell figyelni, hogy a gyerekek mappái konzekvensen legyenek elnevezve, amiket az excel adataiból is le tudsz generálni pl az ÖSSZEFŰZ függvénnyel
Van egy Excel (Office 2010) táblázatom, amiben évek óta gyűlnek az adatok tanulókról (minden évben másik munkalapon).
Nagyon sok gyereknek be vannak szkennelve az igazolványai, az összes képfájlt mindig ugyanabba a mappába mentem az E meghajtóra.
Ezekre a fájlokra szoktam hivatkozásokat létrehozni az Excelben, ami most már több, mint 5000.
Általában másolásnál követi a hivatkozásokat az Excel, de néhány alkalommal már volt olyan, hogy az egész elszállt , és a hivatkozások mind a C:Documents and SettingsuserApplication DataMicrosoft mappára mutattak, ahol persze egyetlen képfájl sincs.
Eddig sikerült megoldani úgy a problémát, hogy az egész mappát, amiben a képek, és az Excel volt, átmásoltam a fenti mappába, aztán vissza, és így helyreálltak a hivatkozások. Előfordult, hogy nem elsőre, de sikerült megcsinálni.
Most viszont már negyedik napja másolgatom a mappa tartalmát ide-oda, és semmi változás.
Kérdésem, hogy van-e valami lehetőség, amivel be tudom állítani, hogy a hivatkozások melyik mappára mutassanak, és mindig ott keresse őket – és persze most is találja meg ezeket, mert egyesével végigmenni a több mint 5000 hivatkozáson egy agybaj lenne.
A mezőfrissítést próbáltam, valamint a speciális tulajdonságoknál a Hivatkozások alapja is az a mappa, ahol a képek vannak – bár nem tudom, hogy ez a két lehetőség erre vonatkozik-e.
Másik kérdésem: lehetséges-e egy makrót írni a hivatkozások helyett, miszerint mondjuk Almási Márta adatait egy mappában keresse, és a talált képet rendelje hozzá a névhez, amit ugyanúgy, mint a hivatkozásnál meg lehetne nyitni.
Ami viszont megbonyolítja a dolgot – mivel jelenleg kb. 3000 gyerek van egy évben – van néhány olyan, akinek a neve ugyanaz, így a „gyerek neve - anyja nevével” szoktam elmenteni a képet.
Másik probléma, hogy vannak olyanok is, akihez nem egy kép tartozik, hanem több.
Ezeket a képfájlokat általában „név+sorszámmal” szoktam elnevezni, tehát van olyan gyerek, akinek a nevéhez akár 3-4 hivatkozás is kapcsolódik, csak más-más cellában abban a sorban, ahol az adatai vannak.
Megoldható-e az, hogy ha egyszerre berakok ebbe a mappába teszem fel 60 nevet, akkor a makró lefuttatásával megtalálja a hozzá tartozó tanulót, és létrehozzon egy automatikus hivatkozást, és esetleg egy gyerekhez nem csak egy hivatkozást, hanem többet is?
Tudnál írni egy pontos képletet? Mert nekem #HIV-el elszáll :(A oszlopban vannak az ID-k (pl 12345,54321...)B oszlopban a mennyiség(100,110,120)G4:G17 az IDH4:H14 az ID-hez tartozó kontsans.
az excel beállításai, speciális szeekció, a megjelenítés részben van egy választókapcsoló "alapértelmezett irány" felirattal. Ezt állítsd át "balról jobbra" állásba
Hát a pivot részeként nem tudod megcsinálni, de a pivot mellé tehetsz egy oszlopot ott simán megoldható.
Attól függően, hogy hány ID-d van és ahhoz hány konstans tartozik az új oszlopban az IF (HA) vagy a VLOOKUP függvényt kell használni, hogy az ID-hez tartozó konstanst meghatározhasd.
Van egy kimutatásom(azt hiszem Pivot a neve) ami tartalmaz egy időpontot egy dátumot és egy ID-t. A különböző ID-ket szeretném megszorozni konstanssal és a konstans az ID-től függ.
Azt hittem, hogy Fkeressel meg lehet oldani de valahogy nem akar összejönni. Egyáltalán jó irányba tapogatózok? :)
Van év nélküli számformátum. Nálam a mintában március 14 és 3.14. Ettől persze az excel elég intelligensen hozzáképzeli az évet, amit nem tudsz kiküszöbölni. Alkalmazkodni kell hozzá. Nem okoz különösebb problémát.
A LinkedCell tulajdonsághoz beírtad, melyik cellában jelenjen meg a kiválasztott elem. Ezzel már azt kezdesz, amit akarsz.
Ha mégis űrlapvezérlőt szeretnél, a bemeneti tartomány előtti oszlopba fegyél fel sorszámokat. A csatolt cella számához egy FKERES függvénnyel megkeresteted a listában a nevet.
Excel cellaformatumoknal szeretnek beallitani datumot ho.nap formaban, de nem sikerul, mindenaron kell neki ev is. Ha nem irok be evet, akkor 1900-at ir be.
Két oszlopot adtál meg bemeneti mezőnek. Gondolom, mindkettő megjelenik, de mivel egy értékkel tér vissza, azt az első oszlopból veszi. Nem erről van szó?
megtudja vki mondani, hogy ha készítek egy vezérlő elemmel egy lenyíló listát akkor a kiválasztáskor miért nem a kiválasztott tétel jelenik meg hanem a listában elfoglalt tétel sorszáma...
pl.
kiválasztom, hogy processzor, akkor kiírja nekem hogy 25
WTF???
(mert hogy 25. a processzor tétel a sorban ezt értem de nem ez volt a feladat)
az a válasz nem jó hogy készítsek a cellára érvényességet és válasszam a lista opciót mert ebben az esetben max 8 sor magas lenyíló menüt kapok, ami több száz soros lista esetén igen kárcsú...
Lehet, hogy az volt a baja, hogy egyáltalán nincs argumentuma? Most már mindegy, a felhasználói munkalapon csak egy szám és két szöveg van max. 100-200 sorban, és nem szerkesztik túl gyakran, nem fog gondot okozni a volatile sem. Az egész csak annyit csinál, hogy az A oszlopban egymás alá írt számokból a másik munkalapon elkészít egy SQL lekérdezést, amit a user bemásolhat az adatbázis-kezelő felületre.
Szerintem, ha írsz a függvénybe még egy (Range típusú) argumentumot, és a képletben beadod neki az A oszlopot, akkor az A oszlop bármi változására számolnia kellene, függetlenül attól, hogy esetleg nem is kezd semmit az A oszlop tartalmával.
Valahogy így:
Public Function AzÉnSzámolásom(Arg1, Arg2)
End Function
helyett
Public Function AzÉnSzámolásom(Arg1, Arg2, Arg3 As Range)
Nekem ennél egy faramucibb szitum volt. Két cellám értéke egy harmadik értékétől függött, amit manuálisan vittem be. A beírás után az egyik cella minden további kiszámolódott, a másik azonban csak az általad leírt F2 Enter hatására. Elég fura, nem?
Aztán valahogy megoldottam, csak már nem tudom felidézni, hogy miképp. Egy biztos: application.volatile nélkül. Talán egyszer beugrik. Akkor majd megírom.
Van egy felhasználói függvényem, az A oszlopba írt számokkal csinál valamit. Viszont ha hozzáírok az A oszlophoz vagy törlök a végéről, akkor nem frissül a függvényérték, hiába nyomkodom az F9-et. Csak akkor frissül, ha megnyitom szerkesztésre azt a cellát, ahova a függvényt beillesztettem, és entert nyomok.
Hogy lehetne rávenni, hogy F9-re is számolja újra a sorokat? Vagy mi a frissítés módja?
Csak közvetetten működik: beállítod a képet, a méretét a cella méretéhez igazítod, és azt mondod, hogy a cella méretétől és helyétől függően jelenjen meg a kép. (Így úgy működik, mintha a cella háttérképe lenne, de a valóságban nem az.)
ogyan lehet megcsinálni azt, hogy egy adott cellának a háttere egy kép legyen. Nem arra gondolok, amikor az egész dokumentumnak ad egy átteret, hanem konkrétan egy cella hátterét akarom megváltoztatni egy képeel.
Ha rákattintok az oldaltörés megtekintésére, majd visszaváltok a Normálnézetre, oldaltörést jelző szaggatott vonalak maradnak a lapon. El lehet ezeket tüntetni a filementés/újrahívás nélkül?
megpróbáltam elképzelni a táblázatodat, de ennyi info alapján nekem nem megy, túl sok variáció lenne lehetséges. Egy kicsit több info kellene nekem legalábbis.
Nem tudom mennyit gúgliztál ebben a témában, de én olyan hozzászólásokat látok, hogy helyenként a nyelvi vagy regionális beállítások okoznak problémát. Nézd meg mindkettőt, abból baj nem lehet.
Ha a Skydrive-on keresztül az Excel Web App-ban dolgozom, ott alapból .xlsx a fájl kiterjesztése, úgy tudom, azt nem is tudom átnevezni .xls-re. Az az érdekes, hogy 1 éve használom így a szolgáltatást, eddig rendben működött. Egyik napról a másikra történt ez. Ha van másnak is Windows Phone-os telefonja, és kipróbálta az általam leírtak, és ugyanezt tapasztalta, megoszthatná velem a véleményét. Nagyon jól jött nekem eddig a munkámnál, és most elég körülményes minden, hogy nem tudom szerkeszteni a korábban az Excel Office App-ban szerkesztett fájlokat.
Szeretném kérni valaki segítségét abban, hogy mi lehet az oka, hogy a hét eleje óta nem tudom szerkeszteni a Nokia Lumia 800-as telefonomon az olyan Excel fájlokat, amelyeket előtte a Skydrive-ban módosítottam. Üzenet: "Nem szerkeszthető a munkafüzet"
Ha létrehozok a neten a Skydrive-ban az Excel Web Apps-ban egy Excel fájlt, és csak 1 betűt írok bele, már akkor sem tudom szerkeszteni a mobilomon a Mobile Office-ban. Már alaphelyzetbe is visszaállítottam a Mobile Office-t, de hiába. A fájl kiterjesztése .xlsx, tehát még ez sem lehet gond.
Kérem valaki próbálja ki, és jelezzen vissza, hogy más is tapasztalja-e, mert nagyon nagy segítség lenne a munkámhoz, ha újra működne.
A 19982 kérdésemben segítettetek, hogy egyszerűen beírom a legnagyobb értéket és addig a legördülő listából átvált raktáron felirattal(egy sima ha() fgv-el)
Most az lenne a kérdésem, hogy meg lehet-e oldani valahogy ne a listából kelljen nekem egyesével kiválogatni a sorszámhoz tartozó "visszahozva" feliratot hanem csak beírom egy cellába egymás után az értékeket és átváltja mert nagyon széles a táblázat.
Példával(hátha értelmesebb :D)
E:KR-ig tart a táblázat.
Visszahozták pl a 50-51-52 sorszámot. Ez EY23,FB23,FE23.
És azt szeretném, hogy az "50", "51", "52"-t beírjam az A20-ba egymás után és a "raktáron"-ról átbillen a "visszahozva".
A problémám az, hogy ezt heti rendszerességel kell ami nem 3 tételt jelent hanem vagy 50-60-at. És egyesével átbillenteni nagyon nagy "élvezet" főleg, hogy nem is növekvő/csökkenő sorrendbe hozzák hanem össze vissza...Mert gépelni szerintem mégis csak gyorsabb mint keresgélni E-től KR-ig.
Kösz a mintákat. Megnézem. Egyébként azt hiszem, sejtem az Activecellel kapcsolatos kifogásaid okát. Amikor még programozásból éltem (ez még a DOS idején volt), akkor sokat foglalkoztam a strukturált programozással, és igyekeztem a programjaimat is ebben a szellemben felépíteni.
A VBA-ban nem sokkal vagyok túl egy kezdő szintjén, ezért itt nem foglalkoztam eddig ilyesmivel, de feltételezem, hogy hasonló elvek miatt javasolod kerülni az Activesheet, Activecell, vagy Selection hivatkozásokat. És ebben egyetértek. És feltételezem, hogy a sendkeys elleni kifogásod is hasonló tőről fakad. Szóval nem beszélsz összevissza:-)
Érdekes, nálam tbando makrója tökéletesen működik. És még az általa jelzett hiba sem jött elő. Persz nem próbálgattam órákon át. Bár amikor kipróbáltam egy Notebookon, ott előfordult, hogy a hüvelykujjam hozzáért a touchpad-hez, és elugrott a kursor.
Elfogadom. Tényleg okosabb lehetett volna activecellel. De a sendkeys jutott az eszembe. Azt abszolut nem értem, hogy nálad miért nem müködik. Nálam, eltekintve az időnkénti NUMLOCK-os gubanctól, kifogástalanul müxik.
ps. Nálam a sendkeys csak olyan problémát okozott idáig, hogy amikor F5-tel indítottam a makrót, beleírt a makróba :((.
A második az A oszlop utolsó (legalsó) töltött celláját találja meg, függetlenül attól, hogy a többi oszlopban mi van.
Az első viszont figyelembe veszi a teljes munkalapot, és (azt hiszem) az utolsó nem üres sor és az utolsó nem üres oszlop metszetét találja meg. De őszintén szólva nem vagyok teljesen képben a .SpecialCells(xlLastCell) elvi működését illetően.
Igazad van, és a tegnapi válaszod nyomán végülis így oldottam meg a feladatot, tehát az 1. lapon állva olvastam be a 2. munkalap adatait. Így valóban elegánsabb. Sajnos nem vagyok profi az Excel VBA parancsait illetően.
Egyetlen ponton nem tudom, hogy lehetett volna kiváltanom a munkalapváltást. A 2. munkalap utolsó sorának meghatározását csak az ActiveCell.SpecialCells(xlLastCell).Row paranccsal tudom elérni. Ezt is meg lehet oldani hasonló módon?
A makróm időnként megmagyarázhatatlan hibát produkál. Úgy tűnik, hogy a füzetbehívást követő első bill_15 indítása után fordul elő, de akkor sem mindig, csak néha. Az szok ilyenkor előfordulni, hogy az első értéket még beírja, majd utána a NUMLOCK kikapcsol, az ember meg csak nézi, hogy hova is ugrott a kurzor. A NUMLOCK bekapcsolásával a hiba ugyan gyorsan reparálható, és utána a működés problémamentesnek. A kérdésem csak annyi, hogy a makróm bugos vagy az excel?
"Erről az a véleményem, hogy rég eláshatnám magam a programozási ismereteimmel, ha megengedném magamnak azt, hogy a program bármely pontján ne legyek halálosan biztos abban, hogy éppen melyik munkalapon állok."
Erről az a véleményem, hogy ha valaki Activesheet, Activecell, vagy Selection hivatkozásokat használ, az nem lehet teljesen biztos benne, hogy éppen hol áll. Számtalan lehetőség van, hogy hol tud kisiklani a biztosnak hitt hivatkozás.
Másrészt meg sose értettem, hogy minek váltogatni a lapokat, ha egyszer a Munka1 lapon "állva" a Munka2 lap bármelyik cellája, de még a [Munkafüzet2.xls]Munka2 lap bármelyik cellája is elérhető és lekérdezhető anélkül, hogy arra "állnánk rá". A Select utasítás csak arra jó, hogy vibráljon a kép a makró futása közben. (Persze ez is lehet cél, de akik a legtöbb Selectet használnak, azok általában le is tiltják Screenupdating=False paranccsal :o)))
Köszönöm. Igen, ezeket a hivatkozásokat máskor már használtam is, amikor más fájlból kellett adatokat beolvasnom, meg amikor több különböző munkalapról kellett adatokat összehoznom. Csak itt egy viszonylag egyszerű feladatról volt szó, ahol csak egy pillanatra megyek át egy új munkafüzetlapra néhány adat beolvasásáért aztán megyek is vissza a másikra, ahol az adatok vannak. Szóval szó sem volt lustaságról, csak szükségtelen volt a teljes hivatkozás használata. Mindenesetre a DIM és Set sorokat köszönöm, valahogy eddig nem használtam ilyen megoldást.
Egy ponton vitatkozom veled. Azt írod: "...ha biztos akarsz lenni benne, hogy a hivatkozásod nem téveszt célt, mindig odateszed őket". Erről az a véleményem, hogy rég eláshatnám magam a programozási ismereteimmel, ha megengedném magamnak azt, hogy a program bármely pontján ne legyek halálosan biztos abban, hogy éppen melyik munkalapon állok.
Amit a sorszámra való hivatkozásról mondasz, abban teljesen igazad van. Csak itt speciális eset volt, hogy nem akartam a felhasználó kezét megkötni a munkalap elnevezésében, hanem azt írtam le a programleírásban, hogy a működés feltétele, hogy az első munkalapon legyenek az adatok, amivel számol, és a másodikon a kihagyandó dátumok listája.
Persze aztán megoldottam a dolgot azzal, hogy a munkalap nevét szerencsére megengedte a 2007-es is kiolvasni, így a cells hivatkozásokat már meg tudtam adni a munkalap nevével.
Köszi mindenkinek az erőfeszítést, ki fogom próbálni, csak sajna nem tudtam várni és reggel korán elkezdtem, és mostanra végezve be is fejeztem az összes kérdőív rögzítését. De mindeképpen ki fogom próbálni a héten a megoldást, amint lesz rá egy pici időm (először a kiértékelést kell megcsinálnom :) ), mert még kell majd jópárszor hasonlót csinálnom.
Ebből a kékkel írt rész elhagyható, de ha elhagyod őket, akkor az Excel azzal helyettesíti, amit jónak lát.
Olyannal még nem találkoztam, hogy az Application qualifier elhagyásából probléma lett volna, de a másik kettő fontos, és ha biztos akarsz lenni benne, hogy a hivatkozásod nem téveszt célt, mindig odateszed őket. És ez nem is jelent feltétlenül sokkal több gépelést. Csak egy Worksheet típusú változó kell:
Dim ML As Worksheet
Set ML = Application.Workbooks(1).Worksheets(2)
és innentől kezdve plusz 3 karakter az egzakt cellahivatkozás:
ML.Cells(sor, oszlop)
Javaslom a kódod átalakítását, és szertintem csont nélkül menni fog xl2007-ben is.
A másik dolog:
Sorszámmal hivatkozni a munkalapra veszélyesebb, mintha a nevét adnád meg.
Ha névre hivatkozol, és a felhasználó átnevezi a munkalapot, akkor max. hibát dob a makró és leáll.
Ha sorszámra hivatkozol, és a felhasználó egy munkalap-beszúrással átrendezi a képet, akkor a makró esetleg hiba nélkül lefut, és fel sem tűnik senkinek, hogy fontos adatokat írt felül egy másik munkalapon.
Ezekre egy lehetséges megoldás, ami munkafüzeten belül viszonylag bolondbiztos:
Nevezd el a cél munkalap A1 celláját pl. "kapocs" néven, és legyen a név munkafüzet hatályú.
Utána akárhogy nevezgeti a felhasználó a munkalapot, azt az Excel névdefiníció automatikusan leköveti, és mindig meg lehet találni a munkalapot így:
Ez nehezen képzelhető el, amikor egy működő xls (2003) fállból copyzom a programszöveget egy xlsm (2007) fájlba, és míg az előbbi rendesen lefut, az utóbbi meg nem.
Persze te is elnézhettél valamit. Van ilyen. Én épp most vagy 2 óra hosszat kerestem egy makrómban a hibát, aztán amikor meglett, kiderült, hogy valami egészen banális apróság volt. Amit kapásból illett volna észrevennem..
Most utólag jut eszembe, hogy még abban sem vagyok biztos, hogy maga az Excel 2007 a hibás, vagy csak az a transzformáló program, amit az office tölt le, amikor a 2007-ben készült adattáblázatot akarom megnyitni. És az így transzformált fájlba másoltam be a 2003-as alatt írt programomat, és találtam meg a hibát. Lévén, hogy Excel 2007-esem nincs.
Van itt még valami speciális. A probléma ugyanis nem egyszerűen az, hogy az excel felülről nem kompatibilis, hanem, hogy az egyik müveletnél kompatibilis, a másiknál meg nem. Legalábbis ez következik számomra abból, hogy azt írod: " Worksheets(2).Select után a munkalapváltás látszólag rendben megtörtént. Az ActiveCell.SpecialCells(xlLastCell).Row parancs is rendben megtalálta az utolsó sort. Viszont a Cells(sor, oszlop) parancs meg rosszul hivatkozott. "
Köszönöm, ez múködik. Eredetileg szándékosan szerettem volna elkerülni, hogy a munkalapok nevével foglalkozzam az aktuális programban, rá akarom bízni a felhasználóra a munkalapok elnevezését. De végülis nem gond kiolvasni azt.
Viszont ez felvet egy elméleti kérdést: Létezik, hogy az Excel újabb verziói nem teljesítik a felülről kompatibilitás alapvető követelményét? Erre nem számítottam, és ha így van, akkor ez méltán váltja ki a neheztelésemet. Mondhatnám üzleti szempontú disznóság. Vagy csak figyelmetlenség? Vagy rosszul értelmezek valamit, és más szempontok miatt volt szükséges a munkalapok használatának alapvető átdolgozása?
Na elkészült! Te biztos hamarabb elkészültél volna vele. De végül nekem is sikerült összehozni :))).
Hyperstroke FIGYU!
Elinditod a bill_15-t, onnantól elég az 1-5 értékeket leütnod, erre beírja, és lép egyet jobbra. A '6' billentyű hatására új sort kez, a '7'-re meg leáll az onkey kényszer.
OOO köszi! Nagyon jó! Működik! Most ha másik oszlopot szeretnék akkor csak a B3 at átírom és ugyanígy működni fog! Nem igazán értem maúgy, jobb lenne ha megérteném, de az a lényeg h működik!
Örülök, hogy valaki hasznát is látta, mert az eredeti kérdező azóta se járt erre, talán nem is érdekli.
Az INDEX(HOL.VAN()) párost általában így együtt használjuk (alternatívája az FKERES, de az csak rendezett táblázatokban működik, és én kevésbé is szeretem). A belső megmutatja, hányadik sorban van meg egy adat egy táblázatban, a külső kikeresi egy megfelelő másik adatot egy másik táblázatrészlet ugyanannyiadik sorából.
A CELLA egy ronda függvény, olyankor jó, ha valamilyen lehetőség nincs beleépítve rendesen az Excelbe, és jobb kézzel kell a bal fülünket vakarni, mint a lenti Munka1!$B$3... sorozatnál is. Veszek egy cellát, megkérdem az Excelt, hogy hányadik oszlopban van, és ezt már lehet jobbra húzással folytatni, míg egy sima 1, 2, 3... számsort a képletnek azon a helyén nem. Maga az A1 cella ebben az esetben a kutyát sem érdekli, lehetne A2345 is.
Tehát akkor megpróbálom még egyszer! Sajnos nem értek annyira az excelhez! Egyenlőség jel nélkül csináltam különben nem látszana. A fekete rész az jó! Tehát minden munkafüzeten a B3 as cellát szeretném állandóra azért raktam a $ jelet de van 150 munkalapom. És minden munkalapon a B3 as kellne tehát az 5. sorba az kellene hogy munka Munka4!$B$3 a 6. ba Munka5!$B$3 hogy csak a munkalap változzon de nem változik!!!
Beritam az első hármat kézzel ami feketével van jelölve, utána kijelöltem mind a hármat hogy akkor a b3 állandó marad és a munkalap száma pedig nőni fog, de ez lett belőle! Értitek mit szeretnék, hogy csak a munkalap száma változzon a lehuzásos másolás során mert nem akarom külön bemásolni egyenként a 150 et hanem csak ugy h lehúzom mert még sok oszlopba kellene ugyan ezt megcsinálni!!!
Nem tudom. Lehet, hogy az meg a fordítottja, és azért van benne, mert az Excelben is benne van? Vagy mert ha makróban ilyen értéket írsz a cellába, automatikusan pénznemként jelenik meg? De ezt nem próbáltam, csak tipp.