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.
Elnézést a kései válaszért, de nem voltam gépközelben. Amit írtál az működik, de nekem nem ez kell teljesen. Van egy felhasználói függvényem, amelyik a táblázat bármelyik cellájának kiértékelése után egy szöveges változót ad eredményül.
Példának leírok egy kis részletett
Function kiir(x) As String
szov=””
…..
….
Ide kéne beszúrni egy feltételt ami a kérdéses (x) cella formájától függően írja ki az eredményt
kiir=szov + "általános” ’a CELLA fgv értéke ”G”
kiir=szov + ”pénzügy” ’a CELLA fgv értéke "C0”
End Function
A beépített függvények közül a CELLA() elvégzi ezt a műveletet, de én ezt a saját függvényen belül szeretném megcsinálni.
Köszönöm szépen! HOlnap ki is próbálom mert ma már agyilag zokni vagyok! :)
Többnyire máshol vannak az adatok csak azért írom így mert ha leírod/játok akkor szeretném megérteni. És úgy meg nehezebb hogy az egyik a B12-ben van a másik a G600-ban. Így meg megértem(legalábbis az előzőt sikerült) és át tudom ültetni az enyimbe. Mellesleg még két munkafüzeten alkalmaztam ami nagyon jól jött! :)
Végül is mindegy mennyi termék van mert FKeressel ez is megoldható egyszerűen :)
Ha az eddigi adataid mellé szeretnéd iratni akkor ha jól számolok :) a darabszám az E a súly pedig az F oszlopba fog kerülni.
Ha ez így van akkor valahova fel kell vinned a súlyok értékét, ezt én az N és z O oszlopba tettem, ennek megfelelően a kód: =FKERES(D1;N:O;2;HAMIS)*E1
Ha neked máshol vannak ezek az adatok egyszerűen írd át az oszlop betűjelét, a képlet lefelé húzható, és ha esetleg 12-nél több súly érték is lenne a jövőben csak fel kell vinni egyszer, arra is működni fog a keresés.
Most, hogy sikerült kiíratni a termékeket a napi statisztikához kellene olyat alkotnom, hogy a súlyt is kiszámolom de ezt sajnos nem tudom mert nem ciklikusan termeljük. És ugye a scanner sem tartalmazza, hogy csak bedobnám a listába.
2012.06.18 1termék 20db
2termék 30db
2012.06.19
2termék 40db
1termék 30db
2012.06.20 1termék 50db
3termék 70db
2termék 60db
Súlyok
1 termék 100kg
2termék 200kg
3termék 300kg
Tehát így szeretném kiíratni
2012.06.18 1termék 20db => 2000kg
2termék 30db => 6000kg
2012.06.19
2termék 40db =>8000kg
1termék 30db =>3000kg
2012.06.20 1termék 50db =>5000kg
3termék 70db => 21000kg
2termék 60db =>12000kg
És ez a problémám, hogy én csak soronként tudnám megírni a sima cellák közti szorzást nem pedig cella tartomány függően.
Mármint tegyük fel, hogy van az 1-es számú munkafüzet, amelyiknek egyik cellájában meg van hivatkozva a korábbi, 2-es számú munkafüzet. Amikor megnyitom az 1-est, akkor automatikusan nyissa meg a 2-est is, ugye?
És a 2-esben meg van hivatkozva a 3-mas, ami szintén automatikusan meg fog nyílni, a 3-masban meg van hivatkozva a 4-es, ezért az is megnyílik, és így tovább, amíg el nem éri a legkorábbi állapotot (vagy a hardverkorlátokat).
FKeres függvénynel írasd a 4. oszlopba a termék nevét a cikkszám mellé , ha pl a termék száma és a termék neve az I és J oszlopokban vannak és a scannerből jött adatok az A,B,C oszlopban akkor ez a függvény: =FKERES(C1;I:J;2;HAMIS). (a képlet lefele húzható)
Ha megvan akkor már csak bele kell venned a kimutatásba a termék oszlopot is.
Sajnos azt nem tudom megoldani mert ez a pivot amit készítek egy teljes másik munkafüzeten van ahol egy vonalkód olvasóból csak a cikkszám az időpont és a dátum van. Ezért kellene valahogy összepárosítani ezen a munkafüzeten ahova ezt készíti.
Ez általánosságban teljesen igaz, de ebben az esetben nem volt az !! :)
Amúgy azért írtam le ezt , mert épp ekkor kérdeztem az egyik kollégámat (beosztottam), hogy mikorra tervez elvégezni egy neki kiadott feladatot, erre azt válaszolta felgmán, hogy neki ma előbb el kell mennie ?!?!
hát annyira felb**ott idegileg, kurvára nem ez volt a kérdés, mondhatta volna hogy péntek délelőttre meglesz...
Olyan cégnél dolgozom, már 14+ éve ahol nagyon fontos a gyors és hatékony munka. A te megoldásod gyors volt és hatékony, míg a többi nem. Ezzel nem akarok megbántani senkit, ez egyszerűen tény.
Úgy érzem senkivel nem voltam bunkó, sőt becsülöm azt aki meg tud oldani egy ilyen feladatot. Köszönöm.
Oh köszönöm szépen! Pontosan ilyenre gondoltam! :)
Abban még tudnál(tok) segíteni, hogy most ebbe a PIVOT-ban a cikkszámot írja ki nekem nem a nevet. Hogy lehetne megoldani, hogy ha a B1 mezőben 0123 van akkor az A1 mezőbe írja, hogy termék1 ha B1 mezőben 321 van akkor az A1 mezőbe írja, hogy Termék 2.
Ha függvénybe ányazott ha függvénnyel szerintem meg lehet oldani de kíváncsi vagyok, hogy van-e valami elegánsabb megoldás! :)
"annyira fel tud bosszantani, ha valaki nem a feltett kérdésre válaszol, hanem kerülőutakon próbál eljutni a célig"
Ez nézőpont kérdése. Nem biztos, hogy mindenki azért javasol más módszert, mert az "akinek csak kalapácsa van, az mindent szögnek néz" elv érvényesül. Talán jó oka van rá. Lehet például az, hogy látja a hibáit annak a megoldásnak, amit te szeretnél, és ő jobbat tud. Hidd el, erről az oldalról nézve is roppant idegesítő tud lenni, amikor a kérdező váltig ragaszkodik a hibás elképzeléséhez, és nem hagyja, hogy segítsenek neki. Bármelyikük tévedhet, a kérdező is, meg a válaszoló is. De általában mindkettő meg van győződve a maga igazáról :)
Ezek olyan konfliktushelyzetek, amiket csak megfelelő türelemmel és alázattal lehet helyesen feloldani.
Köszönöm szépen a kimerítő felvilágosítást kedves Jozsef !
Ezt a makrót, most csak valóban copyztam és másoltam, mert mint az elején is írtam NEM ÉRTEK A MAKRÓHOZ ! tehát aki volt olyan rendes és megírta nekem ezt a kódrészletet valószínűleg tudta, hogy ettől nem fogok és nem is lehet elmélyedni a makrók világában, annyira, hogy magamtól megírjam, és valószínűleg csak copy-pastelni fog. Ennek tudatában volt mikor megírta nekem a kódot !
Látom szúrta a szemed (másét is), hogy csak copy pasteltem, de annyira fel tud bosszantani, ha valaki nem a feltett kérdésre válaszol, hanem kerülőutakon próbál eljutni a célig. Ezzel is leginkább szemléltetni akartam a két megoldás közötti különbséget, ami nyilvánvaló. Amúgy sem hiszem el, senki nem copy-pastelt még semmit innen, én is csak azt amit nem tudok megoldani.
Én elhiszem, hogy kurvára értesz a makróhoz, meg szét programozod a jövő hetet is, respect, de tényleg , király vagy stb..!
De hidd el, hogy nem mindenki él a számítógépek világában és gondolja azt, hogy "nem írok makrót, ha valamit meg lehet sima Excel fügvényekkel is oldani" . Rendben van tedd ezt, látom rengeteg időd is van erre mert teljesen oktalanul pörögsz a témán. Kaptam ezt feladatot, és miközben csináltam manuálisan, már a következő ugyanilyen táblázaton járt az eszem, hogy mennyi időt elvesz, de jó lenne egy makró rá. Gondoltam itt vannak segítőkész emberek (és tényleg van itt olyan is) pont egy ilyen megoldásra volt szükségem mint amit Jimmy adott.
Természetesen, abszolút nem zárkozom el Jimmy folyadékháztartásának pótlásától ! :) (E-mail címem publikus, megbeszéljük)
Sőt ha itt lakna a közelemben még órákat is vennék tőle,makró programozásból , ha lehetne. (Jozsef kedvéért: természetesen pénzért !!!!)
A1:I10 tartományban készítettem egy táblázatot, amelyben a boltok nyitvatartása van listázva.
Az első sorba kerülnek, B1-től H1-ig a hét napjai: H, K, Sze, ... V, illetve I1-be az, hogy "Ünnep"
Az A oszlopba kerülnek, A2-től lefelé a boltok neve: 1. bolt, 2. bolt, stb.
Egy másik lista kerül a K:L tartományba. K oszlopba a spéci dátumok, L oszlopba pedig a hozzájuk tartozó cserenap.
Ha pl. K2-ben 2012.06.04 (hétfő) van, és ez a minisztériumi rendelet szerint szombatnak számít, akkor az L2-be 6-os kerül, ami a szombat sorszáma a héten (és az A1:I1 tartományban).
Ha pl. K3-ban 2012.06.05 (kedd) van, és ez valami ünnep, akkor az L3-be 8-os kerül, ami az ünnepnapok sorszáma az A1:I1 tartományban.
Ezek az alapadatok.
Egy adott hónapban adott bolt nyitvatartási idejének kiszámítása:
Legyenek a hónap napjai A14-től lefelé kilistázva:
A14 = 2012.06.01
A15 = 2012.06.02
stb.
Legyenek a boltok nevei B13-tól jobbra kilistázva:
B13 = 1. bolt
C13 = 1. bolt
Ekkor az 1. bolt nyitvatartása 2012.06.01-én (vagyis a B14 cella tartalma) az alábbi képlettel számolható ki:
0. Elég jól tudok VBA-ban (is) programozni, tehát nem azért mondom :)
1. Szinte soha nem írok makrót, ha valamit meg lehet sima Excel fügvényekkel is oldani. (és főleg nem javaslok mások használatára ilyen megoldás :) )
Fő indokok, amik hosszú évek alatt ülepedtek:
Kompatibiltás, Excel verziók két-három évente jönnek-mennek, ugyanaz a VBA-kód akár Visual Basic, akár komponensek, akár biztonsági változások miatt nem marad működőképes
Mellékhatások lekezelése, a példában pl. megváltozik a valamelyik munkalap neve. Ilyen esetben VBA csak akkor működik rendesen, ha programozó erre odafigyelt, pl. a függvény kódjában szerepel az Application.Volatile sor. A hibakezeléstől kezdve elég sok ilyen példát lehet mondani.
Sajnos, a Visual Basic nyelv elég "pongyola", előnye, hogy gyorsan lehet benne programot írni csekély programozási tudással, de a rendesen működő kód előállítása nagy figyelmet igényel
3. VBA programozásnak ott van értelme
Nincs rá beépített Excel módszer, vagy függvény
Automatizálni kell (példádban pl. egyszerre végigmenni az összes fájlodon, megcsinálni rá az összesítő munkalapot, és így visszamenteni)
4. A kész megoldást lemásolni, akár ha VBA kódot, akár munkalapot másolod le, ugyanannyi idő. De rajtad múlik, hogy a különböző megoldásokból mit hasznosítasz a későbbiekben. A topik "törzslakói" nem azért írunk be ilyen-olyan megoldásokat, hogy kötelezően azt kelljen használni, és csak az az egyetlen jó megoldás, hanem a különböző problémákból, megoldásokból lehessen tanulni.
5. Ha azonban csak a Ctrl+C- Ctrl+V esett le, akkor legtisztább az lenne, ha Jimmy-nek küldesz egy sört, vagy más általa kedvelt italt. Amerikai freelancer portálokon ilyen mélységű feladatokért 10-20 dollárt szoktak fizetni.
Egy üzletnek van egy excel táblája amiben az összes árú rögzítve különböző adatival (besz ár, eladási ár, utolsó vásárlás, stb). Ebből a táblázatból szeretnék csinálni egy leltározásra alkalmas táblázatot úgy hogy rögzítek egy makrót ami átvariálja az oszlopokat, kitöröl néhány a leltár szempontából felesleges munkalapot stb, majd mentem mondjuk letrá_datum.xls néven. Viszont ahhoz hogy a leltárt ki tudja számolni hivatkozni kellene az előző leltárkor készített ugyanilyen leltár táblázatára (ami egy külön file -ba lenne).
A kérdésem az, hogy meg lehet e valahogy oldani hogy egy mezőbe beírom az előző leltár file nevét és azt a megfelelő cellákban lévő hivatkozások file részébe behelyetesítené. Pl: =[leltár_elozo.xls]Aru!$B$17 hivatkozásnál magától behelyetesítse a "leltár_elozo.xls" file nevet.
1. Egy új munkafüzetben hozz létre egy Összesítő nevű munkalapot.
2. Hozd be a névkezelőt pl. Ctrl+F3 és add hozza egy új nevet pl. Munkalapnevek, a hatókörhöz az Összesítő munkalapot, a hivatkozáshoz a következő képletet:
A2-t lehúzod annyi sorra lefelé, amennyi munkalapod van, ugyanígy a B3 cellát is.
A 2. sor ami Összesítő munkalapnevet tartalmazza, akár el is rejtheted, ha akarod.
Egy érdekes trükk a VÉL() függvény, a VÉL() minden változásra frissül, így ha átneveznek egy munkalapot, akkor azonnal az új név jelenik meg a cellában.
4. Mentse le a munkafüzetet mondjuk ÖsszesítőAlap.xls névvel.
Használata:
1. Megnyitod ÖsszesítőAlap.xls és az a fájl, ahová összesítést akarsz
2. Az ÖsszesítőAlap.xls jobb egérgomb az Összesítő munkalapfülre Másolás vagy áthelyezés menüpont
A melyik munkafüzetbe kiválasztod a célt, az első munkalap elé legyen beillesztve és Legyen másolat legyen bepipálva
3. Az új helyen az aktulális munkalapnevek jelennek meg a darabszámokkal, esetleg a képletet itt még utána kell húzni fel, vagy lefelé. De ez már csak pár másodperc.:)
A pivot még ezt is tudja :) húzd bele a cikkszám listát az érték területre a kimutatásban.
Ha esetleg nem darabszámot számolna (hanem pl összeget ) akkor gördítsd le a kis nyilat a listád mellett és a mezőbeállításokban válaszd ki a darab függvényt, és máris mutatja a darabszámot :)
Ezer hála! Ez nagyon egyszerű és nagyon jó is! :) Még egy olyan kérdésem lenne, hogy esetleg ezeket meg lehetne számolni a cikkszámokat hogy naponta mennyi készült el belőle mert már most pár ezer sorbol áll amit nem szívesen számolok meg egyessével! :D
Rákerestem az Excel topikba írt hozzászólásaidban az "sql" karaktersorozatra, és csak abban az egyben fordul elő, amire most épp válaszolok. Lehet, hogy leírtad valahol, hogy sql-ben dolgozol, de nem ebben a topikban, és nem ehhez a feladathoz kapcsolódva. Igaz, egy 15 hónappal ezelőtti hozzászólásodban írtad, hogy "adatbáziskezelésben gondolkoztam", de ezt valamiért nem jutott eszembe összekapcsolni a jelenlegi kérdéseddel.
A kérdéseddel pedig az a gondom, hogy pongyolán fogalmazol. Te érted, hogy mit akarsz, és azt gondolod, hogy mindenki érti, pedig nem. Ott van pl. a 17980-as, az indító felvetés. Nincs benne leírva, hogy mit is szeretnél pontosan. Csak annyi, hogy "kezelni a problémát", amit az ünnepnapok okoznak. Azt én kapásból félreértettem, mert azt hittem, hogy pusztán munkanapokat és munkaszüneti napokat kell megkülönböztetni, és erre van egy jól bevált módszerem. Akkor te kijavítottál, hogy nem ez kell, de továbbra sem írtad le, hogy mi.
Most azt gondolom, hogy talán egy adott napra vonatkozó nyitvatartási időt akarod visszakapni, figyelembe véve az esetleges munkanap-áthelyezéseket és ünnepnapokat. Ez mondjuk logikus lenne, sőt, talán ez az egyetlen logikus kimenete az általad csepegtetett információnak, de szerintem célravezetőbb lenne a kérdéseket explicit módon leírni, és nem ránk bízni, hogy rakjuk össze, ahogy tudjuk.
Aztán leírtad, hogy egy lista kell, amelyben ki vannak gyűjtve a problémás napok, és mellettük (gondolom) az aznapra érvényes nyitvatartási rend.
Mi kell ennél több? Ez gyakorlatilag megoldás, már csak implementálni kell. Vagy mi hiányzik még?
Sub izé() Dim ws As Worksheet, newWs As Worksheet, rng As Range Set newWs = ThisWorkbook.Worksheets.Add For Each ws In ThisWorkbook.Worksheets If ws.Name <> newWs.Name Then Set rng = newWs.Range("A" & Rows.Count).End(xlUp).Offset(1) rng = ws.Name rng.Offset(, 1) = Application.WorksheetFunction.CountA(ws.Range("A:A")) - 1 End If Next End Sub
Nem értem miért probléma a 40 lap. Kijelölöd mind a 40-et, és az egyikbe beirod a képletet. És akkor ott lesz mindegyiken. Majd kreálsz egy összesítö képletet és bemásolod valamelyik cellába. És kész.
van egy file amiben van a 40 lap, te azt tennéd, hogy egyesével becopyzgatod a számolást, utána, egyesével belinkelgetnéd a 40 féle nevű lapról a cellahivatkozást ?
vagy lenne egy makród, amit a file ba bemásolsz és kész ?
3 ilyen filet kapok egy héten, KÉRLEK HIDD EL, hogy így sokkal egyszerűbb lenne.
Köszönöm az eddigi hozzászólásaidat. (kérlek ne ird le mégegyszer, hogy egyesével kéne ezt megoldani, köszi) :)
Szerintem nem lassú, és makróval nem is próbálkoznék.
Amúgy most is kénytelen vagy egyesével megnyitni, ha tudni akarod, hány sor van benük, nem? Messze gyorsabb összesítéssel megcsinálni, de ezek szerint valami más is van a háttérben.
Tehát akkor nem oldható meg makróval az alábbi probléma ?!
ezt a módszert én is tudom, de ez nem jó megoldás, mert nagyon lassú ezért szeretném ha valaki válaszolna a kérdésre, hogy meg lehet e oldani makróval ?
Nem igazán értem a problémádat. Igen, megnyitod a 40 lapot egyesével, legalsó sor első oszlopába bemásolod a függvényt, és irsz egy összesítőt, ami minden egyes lap első oszlop utolsó sor eredményét összegzi.
Én leirtam, hogy csak sql-ben dolgoztam, abban lenne megoldásom, de kapcsoló tábla kell hozzá.
Érdekel, hogy excelben van-e erre megoldás.
A másik példánál is azt válaszoltátok, hogy lényegében az excel erre nem jó, belső adatbázisa se jó, külső adatbázisra kell csatlakozni, és abból tudtok elemezni pivot táblával. Hát, ha már megvan a külső adatbázis, akkor abban sokkal egyszerűbb megirni a lekérdezéseket, mint excelhez biztositani az állandó hozzáférést és pivot táblákkal szórakozni.
A következő a szitu: Kapok egy közel 40 Sheet et tartalmazó excel filet, amiben változó mennyiségű adat van.
Az általad említett módszer (ami alapban jó) de lássuk be nagyon macerás egy makróhoz képest. MInden egyes lapra, bemásolgatni a kódot, és még összesítő sincs :)
Szóval továbbra is köszönöm annak aki megoldást talál !
Gyakorlatilag erre találták ki a pivot (kimutatás) táblát.
Persze lehetne mondjuk SZUMHATÖBB függvénnyel számoltatni, de mindig deffiniálni kellene a megszámolandó értékeket, a pivot meg megcsinálja a fejléc nevéből.
Hogyan tudnám megoldani egy egyszerű statisztika készítést.
Van három oszlopom
Dátum Idő Cikkszám
06/18/12 8:32:07 0123456789 Dátum Idő Cikkszám
06/18/12 8:35:07 0123456789 Dátum Idő Cikkszám
06/18/12 8:38:07 9876543210
Olyan függvényre lenne szükségem ami megmondja, hogy 18-án a 012345678 termékből legyártottak 2db-ot a 9876543210-ból pedig egy darabot. Erre létezik előre definiált függvény vagy valahogy nekem kellene egyet írni?
Lehet olyan makrót írni ami tetszőleges számú és nevű lapokon (egy file-on belül) megszámolja, hogy mondjuk minden lapon az A oszlopban hány cellában van valami (szám vagy betű mindegy, csak nem üres cella) beírva. Úgy is mondhatnám, hogy hány sor van az adott lapon :).
A sok lapos (kb 40 db) file adott, mindenféle lapnévvel ebben kellene megszámolni a sorokat, és folyamatosan bővül.
Sajna nem értek a makróhoz, nagyon szépen megköszönöm, ha valaki tud segíteni !!!
Esetelg olyat is lehet, hogy egy üres lapra, egymás alá beírja a sheet nevét és mellé, hogy hány sort tartalmaz az adott lap, és egészből levonni 1 et, mert a fejléc nem játszik :) ?
Az a baj, hogy a táblázatomból más munkalapok is dolgoznak, így eléggé macerás lenne az általad javasolt megoldást választanom L Valamit az elmúlt 5 hónap alatt elég sok adat került bele, amik fontosak.
Azt szeretném megkérdezni, hogy egy makróban lehet e feltételként szabni a kérdéses cella típusát. Olyanra gondolok, ha a cella formátuma – pénznem(Ft) – akkor másképp hajtsa végre az utasítást, mintha mondjuk – általános – lenne.
pl. If A1=”cella típusa” Then ….stb
Ha lehet akkor hogyan kell beírni?
Más, a régebbi VB-ben a változók értékeit meglehetett nézni a Debug ablakban, (pl. ?a), de a mostani VB-ben (6.5) nem találom a sehol sem.
A felhasználói függvénnyel kapcsolatban találgatok egy kicsit.
1. Azt ugyan nem tudom, 2007-ben hogy van ez, de 2003-ban, ha egy függvény egy bővítmény része, akkor az nem a felhasználói függvények között jelenik meg, hanem egéb kategóriákban. Biztos, hogy ennek van köze bővítményekhez?
2. Az ügyben részt vevő összes munkafüzet makróbarátként van elmentve?
3. Próbáltad direktbe beírni a függvényt?
4. Nincs ott a VBA kódban a függvény neve előtt, hogy "Private"?
Excel 2007. Van mikor a nyílbillentyük megsüketülnek, és nem hajlandók mozgatni a kurzort. Csak az egérrel lehet a kivánt cellára ráállni. Nyomogatom az összes elképzelhető gombot, gombkominációt, de semmi hatás. Aztán kilépek a fileból, majd újra behívom, és erre megjavul. Ti is tapasztaltatok effélét? És ha igen, van tippetek az okára?
A mellékelt képen látható táblázathoz szeretnék egy kis segítséget kérni. Van egy terméklistám ( G oszlop ) ami mellé heti ciklusban ( H2 - L2 ) be kell írnom a termék árát. Természetesen az eredeti táblázatban sokkal nagyobb :) Mivel az eredeti táblázatban találhtó lista elég terjedelmes, ezért szeretném az árak bevitelét kicsit leegyszerűsíteni. Arra gondoltam, hogy készítek egy adat bevitelre szolgáló részt. Legördülő listából kiválasztom a termék nevét ( A3 ), másik legördülő listából pedig a hetet, amikor a termék akciós ( B2 ). Ezek kiválasztását követően a 3. cellába ( B3 ) beírom az árat és a gomb segítségével beillesztené a megfelelő cellába az árat. Ezt követően kiválaszthatnám a következő terméket stb... Két függvény segítségével ( Hol.van „B5” és a „B6” ; Cím „B7” ) sikerült meghatározni a pontos cellát, ahová az árnak kerülnie kellene ( B7 ). Viszont itt megállt a tudomány, mert itt megakadtam. Nem tudom, hogyan tudnám a B3-as cella tartalmát ( a példában található B7-es cellában található ) I4-es cellába bemásolni.
Boltok nyitvatartása egy táblázatban, hétfőtől vasárnapig nyitás-zárás. - Szerintem ezen ugrottál át.;)
Dátumból lekérdezem, milyen nap van, és megvan a megoldás. - azaz hé-vas 7 féle nap nyitvatartása megvan
Csakhogy vannak ünnepnapok, amikor zárva van, és vannak munkanap áthelyezések, amikor szombat helyett hétfő van, stb.
Évente max. 20 ilyen eset van. Ezeket hogyan lehet kezelni, ti hogyan oldottatok meg ilyen problémát?
- vagyis kell egy lista, amikor a különleges eseteket kezelem. Ezt kérdeztem, hogyan oldjátok meg.
Én feltétel figyelésre gondoltam, ha az adott dátum benne van a listában, akkor felül kell irni a dátum alapján kapott napot a listában szereplő nappal. A listában viszont már 8 elemnek kell lennie, a 8. az "ünnep miatt zárva" eredményt adja.
Nagyon köszönöm a segítségeket, minden jól működik, és úgy ahogy én szeretném. Lenne egy más jellegű problémám Excel 2007-tel. Van egy régebbi felhasználói függvényem ami a 2003-mal nagyon jól megy. A függvény beszúrásnál megjelenik egy sor "Felhasználói függvények”, és ott van az én függvényem is. A 2007-es változatban a munkalapon sehogy sem tudom megjeleníteni, pedig az Excel beállítása/Bővítmények ablakban látható, és aktívvá van téve, a VB szerkesztőben is bent van, de ha visszamegyek a munkalapra sehogy sem tudom előcsalogatni. A másik kérdésem az, hogy a 2007-ben CTRL+: gyorsbillentyű kombóval az aktuális dátumot lehetne beszúrni, de nálam pont ez nem megy, a többi igen. A helpben is ez a kombó van. A 2003-ban simán megy.
Ezt nem teljesen értem. Odáig tudtalak követni, hogy a logikai változód ellentettjére fordul. Az itt kevés, be kell sorolni, hogy melyik napnak felel meg. A munkanap/szabadnap logika kevés, 7 napról van szó.
1. Ha az általad korábban feltöltött minta táblázatból inulok ki, akkor a makró eredményén az sem változtat semmit, ha 100 sorral lejjebb van ez Excel szerint az utolsó sor, hiszen a tényleges és a vélt utolsó sor között csupa üres cella van, se színük nincs, se adat nincs bennük. A makró futása persze picit tovább tart, de vajon ez nagy problémát jelent?
2. Ha csak az a probléma, hogy az Excel eltéved az utolsó cella meghatározásánál, akkor tudd, hogy egy mentés helyreteszi az agyában ezt a kérdést.
De meg lehet határozni az utolsó sort más módokon is, csak a megfelelő módszer kiválasztásához több infó kell.
1. Van egy olyan lehetőség, hogy egy adott oszlop legalsó cellájától (pl. A65536) felfelé megkeresni az első nem üres cellát, és azt kinevezni utolsó sornak. Lényegében arról van szó, hogy ráállsz az A65356-ra, és nyomsz egy Ctrl+felfele nyíl kombót. Ez a módszer akkor jó, ha a feldolgozandó adatoknál lejjebb nincs már más tartalom a táblázatban.
2. Van egy olyan lehetőség, hogy A3-ról indulva megkeresni az összefüggő cellatartomány alsó végét. Lényegében arról van szó, hogy ráállsz az A3-ra, és nyomsz egy Ctrl+lefele nyíl kombót. Ez a módszer akkor jó, ha legalább A3-A4-ben vannak adatok és az A oszlop adatai közt nincs üres cella.
3. Van egy olyan lehetőség, hogy az A oszlopban megkeresni az első SZUM képletet, és azt kinevezni utolsó sornak.
A táblázatod szerkezete alapján melyik tűnik a legjobbnak? Ezeket a módszereket le lehet programozni, viszont mindegyik mutatvány bukik, ha előfordulhat hogy a B oszlopban több adat van, mint az A oszlopban.
Hogy lehet az Excel 2007-et rávenni, hogy ha egy makrót elérhetővé akarok tenni minden munkafüzetből, akkor ne nyisson meg minden egyes indításkor egy personal.x...akármi ablakot is, amire a kutya se kérte (és ha ezt mégis bezárom, akkor továbbra is használható maradjon a makró)?
Hogy lehet az Excel 2007-et rávenni, hogy a visszavonás csak az adott munkafüzetre vonatkozzék, és ha az aktív munkafüzetben vissza akarom vonni az utolsó módosítást, ahhoz ne kelljen visszavonni három másik megnyitott munkafüzetben azóta végzett huszonkét változtatást?
(És ki volt az a beteg agyú perverz alak, aki ezt így programozta be, és eltiltották-e már örökre a foglalkozásának gyakorlásától?)
Az a gond, hogy amikor elkezdtem csinálni a táblázatot akkor volt amikor beszúrtam sorokat, majd később töröltem belőlük. Minden beszúrásnál az utolsó cellát lejjebb tolta, de törlésnél viszont nem emelte feljebb. Amikor készlett az oldalon a végleges formátum akkor azt szeretném hogy az utolsó sor a bekeretezett táblázat végén legyen, de úgy hogy az adatok feltöltésénél megmaradjon az a lehetőség hogy sor beszúrásakor a utolsó cella helyét lejjebb tolja. Ezért nem jó ha fix értéket írok be.
Ezt most nem egészen értem. Az usor = ws.Range("A3").SpecialCells(xlLastCell).Row - 1 kód mindig az aktuális munkalapon határozza meg az utolsó cella helyét, függetlenül attól, hogy a többi lapon mi van.
Az a gond, hogy nem ígyműködik? Vagy az, hogy így működik, de nem így akarod? Rögzíteni kellene, hogy pl. mindig csak B40-ig nézze?
Köszönöm!!! Most már nagyon jól működik, de lenne még egy kérdésem az utolsó cellával kapcsolatban. A munkafüzet oldalain nem egyformák az utolsó cella helye. Azt nem lehet valamilyen módon megadni, hogy hol legyen ez a hely?
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) DelilaMakrója End Sub
akkor fut le, amikor egy cella értéke megváltozik. Működése ebból áll, hogy meghívja Delila makróját, ami cellaértékeket változtat, és annak következtében a fenti kód újra lefut, és így generál végtelen ciklust. A megoldás az, ha letiltjuk az eseményfigyelést a makró végrehajtásának idejére.
Ezzel és még egy aprósággal kiegészítve a működőképes kód ilyen lesz (ezúttal kipróbáltam, mielőtt beküldtem, és nekem működött):
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) DelilaMakrója Sh End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) DelilaMakrója Sh End Sub
Private Sub DelilaMakrója(ws As Worksheet) Dim CV As Range, usor As Long Application.EnableEvents = False ws.Range("D3:G3") = 0 usor = ws.Range("A3").SpecialCells(xlLastCell).Row - 1 For Each CV In ws.Range("A3:B" & usor) Select Case CV.Interior.ColorIndex Case 6 ws.Range("D3") = ws.Range("D3") + CV.Value Case 14 ws.Range("E3") = ws.Range("E3") + CV.Value Case 3 ws.Range("F3") = ws.Range("F3") + CV.Value Case 23 ws.Range("G3") = ws.Range("G3") + CV.Value End Select Next Application.EnableEvents = True End Sub *******************************************************************
Range("A3").SpecialCells(xlLastCell)
Ez annyit tesz, mintha ráállnál az A3-ra, és nyomnál egy Ctrl+End-et. (Pontosabban akárhová állhatsz, a Ctrl+End mindig ugyanazt a cellát adja ki.)
.Row
Megadja a pont előtt meghivatkozott cella sorának számát. Pl. a K28 cella sorának száma 28.
Sajnos a makró automata lefutását nem tudtam megcsinálni. Nem értem teljesen hogy milyen formátumba kell beírni (amatőr vagyok). A munkalap kódlapjára beírtam úgy ahogy javasoltad, majd visszamentem a táblázatba és egy végtelen ciklusba kezdet állandóan futatta a macrót, csak ESC-vel tudtam leállítani. Most jelenleg billentyűkombinációhoz rendeltem az indítást, de nagyon szeretném ha ez automatikusan menne. Egyébként Delila makrója alapján írtam egy makrót ami igazodik az én táblázatomhoz és jól működik, egy dolog kivételével. Az usor változó gondolom az utolsó sor lehet ami a tömb méretét, és a ciklus számát adja.
Ha ezt a sort elmagyaráznád, hogy mi miért van beírva, megköszönném. Mitől függ az utolsó sor értéke, mivel tudom a tömb méretét behatárolni, de ha kell tudjam bővíteni. A táblázatom kb. 40 sorból áll, de menet közben többször kell beszúrni sorokat, ezért lenne jó az usor változó használata.
Én egy külön listába felveszem azokat a napokat, amelyek módosulnak. Tehát ha pl. kedden ünnepnap van, és a hétfői munkanapot áthelyezik szombatra, akkor felveszem a listába
- a hétfőt, mert az rendesen munkanap lenne, de most szabadnap
- a keddet, mert az rendesen munkanap lenne, de most ünnepnap
- a szombatot, mert az rendesen szabadnap lenne, de most munkanap
Amikor egy adott dátumot megvizsgálok, akkor először is az, hogy naptár szerint munkanap-e van sem (Igaz/Hamis), aztán pedig hogy bent van-e a listában, és ha igen, akkor az Igaz/Hamis az ellentettjére fordul.
"Mit értesz azon, hogy "a munkalap formátuma ne változzon meg"?" - Arra gondolok, hogy az oszlopok adatai ne csússzanak össze az "A" oszlopba + a dátumok formátuma se legyen nn/hh/éééé éééé.hh.nn helyett.
Ha a rögzített kóddal mentem, akkor ezt fogom látni megnyitásnál:
A1 cella = Hétfő,piros,20/06/2012
Tehát minden belesűrűsödik az A oszlopba.
Azért nem értem, mert szerintem ebben az esetben mindent rögzít a VBE, amit csinálok manuálisan. Tehát nem találom a manuális mentés és kód közötti eltérést. :(
True saves files against the language of Microsoft Excel (including control panel settings). False (default) saves files against the language of Visual Basic for Applications (VBA) (which is typically US English unless the VBA project where Workbooks.Open is run from is an old internationalized XL5/95 VBA project).
Ha azt akarod, hogy minden munkalapon ugyanez működjön, akkor a munkafüzet kódlapjára kell tenni a kódot.
Én így csinálnám:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) DelilaMakrója End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) DelilaMakrója End Sub
Private Sub DelilaMakrója() Dim CV As Range, usor As Long Range("D3:G3") = 0 usor = Range("A3").SpecialCells(xlLastCell).Row - 1 For Each CV In Range("A3:B" & usor) Select Case CV.Interior.ColorIndex Case 6 Range("D3") = Range("D3") + CV.Value Case 14 Range("E3") = Range("E3") + CV.Value Case 3 Range("F3") = Range("F3") + CV.Value Case 23 Range("G3") = Range("G3") + CV.Value End Select Next End Sub
A vastaggal kiemelt sorban történt módosítások nem lényegesek, elvileg működne az eredeti formában is, de így jobb.
Cellaszín változása nem generál semmi olyan eseményt, amihez makrót lehetne kötni. Más szóval: Excelben nem lehet megoldani azt, hogy a cellaszín változására automatikusan lefusson egy makró. Lehet kapcsolni például a kijelölés változásához. Ez tehát akkor fut le, amikor az aktív kijelölés megváltozik. Akár egérrel jelölsz ki más cellákat, akár Entert nyomsz, akár valamelyik nyilat, vagy PageUp, PageDown....
A munkalap kódlapjára (Alt+F11, aztán duplaklikk a munkalap nevén a képernyő bal felső részében) ez a kód kell :
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Delila_Makrója End Sub
A ColorIndex kiderítése így a legegyszerűbb:
1. beszínezel egy cellát
2. aktívvá teszed ugyanazt a cellát (vagyis "ráállsz")
3. Alt+F11
4. Immediate ablekba beírod az alábbi utasítást (Enterrel kell zárni):
Debug.Print ActiveCell.Interior.ColorIndex
Ha nincs Immediate ablak, akkor Ctrl+G-vel vagy a View menüből előcsalogatható.
Tetszik az a hozzáállás, hogy "Egyébként órákon keresztül tanulmányoztam a makródat mire nagy nehezen megértettem hogy nagyjából mi mire való". Ne aggasszon, hogy amatőr vagy. Olyannak mindig szívesen segítünk, aki beleteszi a maga részét :)
Köszönöm nagyon jól működik. Egy baja van csak, hogy nem csinálja automatikusan amikor az adatok oszlopban megváltoztatok egy szint, mindig lekell futatni a makrót. A másik problémám, hogyha felakarok venni további színeket nem tudom a színekhez tartozó colorindex számokat. A súgóban hosszas keresés után sem találtam meg. ha ebben is tudnál segíteni megköszönném. Egyébként órákon keresztül tanulmányoztam a makródat mire nagy nehezen megértettem hogy nagyjából mi mire való (én eléggé amatőr vagyok).
Valahogy asszem be lehet állítani (vagy importálásnál, vagy mentésnél), hogy a határoló karakter tabulátor vagy pontosvessző legyen, mert igazságszerint asszem az echte verzióban pontosvessző határol. A mi környezeti beállításaink esetén meg tabulátor.
Mit értesz azon, hogy "a munkalap formátuma ne változzon meg"?
Csináltam egy Excel makrót, aminek a végén el kell mentenie egy új munkafüzetet .csv formátumban. Rögzítettem a kódot, mert nem tudtam hogyan kell ilyen formátumban menteni:
ChDir "C:Documents and Settingsuserasztal"
ActiveWorkbook.SaveAs Filename:= _
"C:Documents and SettingsuserasztalTESZT36rendelkezes.csv", _
FileFormat:=xlCSV, CreateBackup:=False
Ez sztem felesleges is bele: CreateBackup:=False
A problémám:
Amikor megnyitom a makró által mentett .csv-t, akkor teljes lesz a káosz. Minden adatom bekerül az "A" oszlopba, egymástól vesszővel elválasztva. A dátumok nn/hh/éééé formátumot kapnak éééé.hh.nn helyett.
Ezeken még nem sokkolódnék annyira, ha a manuális mentés (ahogy rögzítettem) nem őrizné meg a mentés előtti formátumom.
Makróval visszaalakítani sem tudom a tábla felépítését, mert a mentést követően bezárom, hogy egy másik alkalmazás importálhassa. (Ám a káoszos forma miatt nem lehet importálni...
A kérdésem: Milyen kóddal menthetek el egy új munkafüzetet .csv formátumban úgy, hogy a munkalap formátuma ne változzon meg?
Office 2007-et használok, de a kódnak mennie kell Office 2003-as Excellel is.. :(
Szeretnék megoldást találni Excelben az alábbi feladathoz:
pl.:
A B C D
2012.01 ki 21 1
2012.01 ki 12 11
2012.01 be 12 5
2012.02 be 0 22
2012.02 ki 1 20
2012.02 ki 5 12
2012.03 be 22 3
...
a listából dátum-, mozgás (ki/be)-, és C-D oszlop szerint szűrve és szummázva kellenének az adatok.Tehát pl. 2012.01 dátum alatt mennyi volt összesen a "ki" mozgás a C oszlopban (21+12=33). Természetesen a táblázat sokkal több oszlopot és sort tartalmaz.
FKERES függvénnyel nem mentem semmire, mert csak az első találathoz tartozó adatokat hozza így nem tudtam mit szummázni sem. Próbáltam soronként is, de egy hatalmas adathalmaz lett belőle és ekkora adatmennyiségnél ez nem járható út.
Nagyon nagy segítség lenne, ha valaki tudná a megoldást!
ráadásul ha ez megvan valamilyen adatbázis file-ban, akkor a pivottal rá lehet kapcsolódni és ki azon keresztül lehet riportálni excelbe. Úgy rendezed/szűröd ahogy akarod
egyelőre csak elméleti síkon érdekelne, hogy megoldható-e szerintetek az alábbi elképzelésem.
Vettem egy 50e-s cégadatbázist, illetve ahhoz való hozzáférést. Ebből csak az e-mail címekre van szükségem. De nyilván úgy van megoldva, hogy ne lehessen csak úgy egyben kimásolni az egészet, hanem az egyes cégek neveire keresve és kattintva látszanak az adatok. Egy oldalon egyszerre csak egy cég.
Tudom, hogy az excel képes weblapok tartalmát behivatkozni, ilyet már csináltam, és a tartalomból is kitudnám bányászni a címeket, ezért 2 kérdésem marad.
Lehet-e olyan weboldalak tartalmára hivatkozni, vagy lekérni azt, amikre fejlhasználónév/jelszó-val kell belépni?
A másik, hogy makró szinten (mert gondolom arra lenne szükség) megoldható-e olyasmi, hogy ezen az oldalon a makró "megnyomjon egy gombot" - a következőt, majd az így megjelenő új oldal tartalmát kérje le?
Próbáld meg ezzel a makróval, ami az A3 cellától a B utolsó előtti sorig összegez a D3:G3 cellákba (utolsó a szum függvény).
Sub SumColor() Dim CV As Object, usor As Integer Range("D3:G3") = 0
usor = ActiveCell.SpecialCells(xlLastCell).Row - 1 For Each CV In Range("A3:B" & usor) Select Case CV.Interior.ColorIndex Case 6 Range("D3") = Range("D3") + CV.Value Case 14 Range("E3") = Range("E3") + CV.Value Case 3 Range("F3") = Range("F3") + CV.Value Case 23 Range("G3") = Range("G3") + CV.Value End Select Next End Sub
Sajnos az általad írt megoldással próbálkoztam, de nem tudtam megcsinálni, sőt a plusz oszlop sem kivitelezhető megoldás nekem. Feltettem a data.hu-ra egy mintát http://data.hu/get/5218270/Cellak_szine.xlsx, amivel talán érthetőbb hogy mit akarok csinálni.
Nekem ez az érzés kétszeres, mert a 2007-est a munkahelyemen kell használnom, és tegnap este már fél kilenckor elszabadultam onnan, és örülök, hogy most itthon is lehetek pár órát. :-)
Szerintem a legegyszerűbb, ha nyitsz mellette egy másik oszlopot, ahova számokat írsz mellé. Mondjuk az A oszlopban vannak az adataid, a B oszlopba pedig számjegyeket írsz mellé 1-től 5-ig. Eztuán az A oszlopra feltételes formázást állítasz be, és a számok alapján kiszínezi neked, valahol máshol meg összeadod őket a SZUMHA függvénnyel. Ezt csinálni is sokkal gyorsabb, mint a színezést. Utána ha zavar, a B oszlopot átállíthatod nagyon keskenyre és 2 pontos betűméretre, vagy elrejtheted.
Van ennek sajnos egy korlátja, de nem tudom fejből, és most hál'istennek nincs előttem a 2007. A 2003-asban csak 3 feltételes formázást enged, a 2007-es ennél többet, de nem tudom, hányat.
Excel 2007-ben hogyan lehetne megoldani, hogy egy oszlopban egymás alatt vannak külömböző értékek. Úgy szeretném szétválogatni (pl. egy másik cellában összeadni), hogy az oszlopban egyes cellákat külömböző színekkel megjelölök, és az értékek a színhez rendelt cellába kerül.
Kösz. Ez a HELYETTE nagyon hasznos lesz nekem. Idáig nem ismertem.
Lenne még egy kérdésem. Excel 2003-ban ha beálltam egy adattáblába (a tábla kijelölése nélkül), akkor az autószűrő automatikusan felismerte az adattáblát, akárhol is volt a táblázatom. A 2007-esem szűrőjének viszont ki kell jelölnöm az adattáblát, mert anélkül a teljes Munkalapot tekinti adatbázisnak és az első sort a fejlécnek. Nem lehetne valamilyen beállítással a 2003-as szerinti működésre bírni?
"Or, hey, come to think of it, maybe it’s just your expectations that are wrong: Since “ ” is explicitely intended to be _Non-Breaking_, why on Earth would you think it should be handled like an ordinary space by “trim()”? The whole point of a Non-Breaking Space is that it is NOT to be considered a word boundary, but left intact with the letters to either side of it, just like an ordinary letter."
A probléma félig megoldódott. Az 'xxxx' stringek valójában 'xxxx ' stringek voltak. Annyi különbséggel, hogy amit számmá tudott alakítani annál az üres hely szóköz volt 32-es kóddal, amit meg nem tudott konvertálni azé meg 160. Így most már csak azt kérdezném, hogy milyen célt szolgál ez a 160-as?
Excel 2007. Hogyan lehet megnézni, hogy egy cellában vannak-e rejtett karakterek? Ugyanis nem tudok másra gondolni az alábbi jelenség kapcsán: Egy internetes árlistát excelbe másolva a 'Price: xxxx' stringek zöméről az xxxx (ezek számok) leválasztható és számformátumúvá alakítható, de néhányuk megmakacsolja magát, és bár az xxxx leválasztható, de nem lehet számmá konvertálni. A problémás és a problémátlan stringek ugyanolyan hosszúak.
Mivel látatlanban feltehetőleg nem igen lehet megadni a magyarázatot a miértre, néhány problémás és problémátlan cellát tudnék küldeni tanulmányozásra, már amennyiben valaki felajánlaná, hogy hajlandó megnézni őket.
Olyan kérdésem lenne, hogy hogyan tudom megoldani azt az Excelben, hogy egy adott cella háttere egy kép legyen, ne pedig egyszerű színes kitöltés vagy valami mintázat, mitn amit felkínál a cella formázásán belül.
Ilyenkor fkeres helyett a index függvényt szokták használni, a hol.van fgv-t beleágyazva - ami megkeresi azt a sorszámot az index fgv-nek, ahol az első találat lesz.
Köszönöm szépen, így már gyerekjáték lesz. :) Én meg már írtam az oldalnyi széles függvényt hozzá. :D
Még annyit elárulnátok, hogy törlöm ki az üres sorokat egy adott oszlopból? Mármint, hogy az olyan cellák kihagyás nélkül kerüljenek egymás alá, amiknek van valami tartalma?
Másolás, beillesztésen kívül persze, mert van belőle vagy 16e. A cím mindig a sor végén van, tehát a JOBB függvénnyel el tudok indulni, csak utána hogy mondom meg neki, hogy csak annyi karakterig menjen balra, amíg szünetet talál?
Adott egy táblázat egy cellája, benne egy valamilyen értékkel, ami szövegesen van tárolva. Arra keresnék megoldást, hogy valamilyen módon ezt az értéket össze kellene hasonlítani egy sor 6-12 cellájával. (a pontos szám még nem ismert, de gondolom ez mindegy is). Ha van teljes egyezés, akkor egy másik cella értékét állítsa 0-ra, ha nincs, akkor 1-re.
Megoldható ez valahogy, lehetőleg makrók nélkül?
Az már csak hab lenne a tortán, ha a teljes egyezéseket is meg tudná jelölni valahogy.
oldalon van a megoldás: a Skype nemrég letöltött "Click to Call" progija okozta a hibát, amit a frissített verzió letöltésével orvosolhatunk. Letöltöttem, ismét a szokott módon működik a ctrl+c és a ctrl+v. Üdv mindenkinek.
Használd Firefoxot Lazarus kiegészítővel. Segítségével elszállt írásodat eredeti állapotában visszatudod állítani még shut down esetén is. Szenzációs kiegészítő.
Egy kérdésem volna. Hogyan lehet lekérdezni, hogy a default printer létezik-e?
A kérdés alapja: hálózati printer különböző okokból elszáll ezér az a makró ami printelni akar hibár hoz és elekad az egész. A hozzánemértő felhasználó ezzel nem tud mit kezdeni.
Nekem akkor viselkedett így, amikor a munkafüzetemet weblapnak nézte. Az segített, hogy elmentettem a munkafüzetet más néven. Mentéskor a fáljtípust át kellett állítani "Excel munkafüzetre", mert alapértelmezésben html dokumentum volt. Próbáld ki.
Segítséget kérnék az alábbi hibajelenségre (XP-n futó Excel 2003): cellából akarok másolni másik cellába. Ctrl+C-vel kijelölöm a cellát, de nem jelenik meg a cella körül a szokásos vastagított animált mozgó keret. Ha ezután több hasonló pl. egymás alatti cellát kijelölök és ctrl+v-vel be akarom illeszteni a kimásolt cella tartalmát, a "A vágólapon lévő adatok méretükben és alakjukban különböznek a kijelölt területtől. Szeretné mégis beilleszteni az adatokat?" hibaüzenet jön. Ugyanígy, ha Irányított beillesztéssel akarom betenni az adatot, nem a szokásos, hanem az "Unicode szöveg" vagy "Szöveg" opciók jönnek be és nem az Irányított beillesztés opciói (azaz hogy képletet, értéket, formátumot stb.). Korábban "normálisan" működött ugyanezen a gépen ugyanez a táblázat ugyanezzel az excel programmal. Ugyanez a hiba jön elő bármilyen korábban készített vagy új táblázatnál is.
Természetesen próbáltam - köszönöm. De közben rájöttem...
a google találtok alapján jó páran beleszaladtak ebbe a problémába ahogy elnézem...
A lényeg az, hogy nem a weblekérdezés háttérbeállításaiban kell frissíteni (azokat ki kell kapcsolni), hanem a VBA kódban egy
Workbooks("fuzet").RefreshAll
paranccsal.
Így a frissítés lefut és a Workbooks("fuzet").Close csak ez után zárja be... - egyébként bezárja frissítés nélkül, ha a weblekérdezésnél kapcsolom be és nem a RefreshAll-al frissítem...
Köszi. Az érdekes az, hogy pont pár nappal korábban használtam az ofszetet, mégsem jutott eszembe. Gyakorlati szempontból mégsem előrelépés, mert ez meg az első blokk kialakítását nehezíti meg annyival, amennyivel megkönnyíti a többiért (eddig ugye annyi volt, hogy =, és aztán katt a megfelelő cellára a másik munkalapon).
Ezek szerint nem voltam egyedül azzal, hogy a 2. pontban leírt kérdés alapján halvány fogalmam sincs, hogy mit szeretne megoldani a kérdező. Egyébként a google elég sok találatot ad a készletnyilvántartásra, nem biztos, hogy ezt most kell kidolgozni.
Nem tudom, hogy jól értem-e e feladatot, de ha Munka1!G1, Munka1!M1, Munka1!S1 stb celláknak tartalmát mondjuk a Munka2!A1-től kezdve szeretnéd függőlegesen megkapni, a következő képletet lefelé másolod, akkor pont ezt kapod
Szépen elszállt a hozzászólásam, köszönet az ún. szoftver ún. fejlesztőinek. :-(
Szóval már csak rövidítve írom újra. Van egy sorban n*k adatom (nagyon hosszú a sor, mondjuk 60-100 oszlop, áttekinthetetlen és nyomtathatatlan). Az n*k azt jelenti, hogy k adatfajta ismétlődik n*szer azonos típussal és szereppel, de más entitáshoz tartoznak, más az értékük. (Ez egy webes űrlap exporttevékenységének az eredménye, nincs rá befolyásom.)
Ezeket kéne kulturáltan elrendezni egymás alá. Mondjuk az A5:F8 téglalapba egy sablonnal ízlésesen megformázva kiteregettem az első entitás adatait, tehát efféle hivatkozások lesznek benne: =Munka1!G1
Hogyan lehet kulturáltan, ésszerű munkával lemásolni ezt alá n-1 példányban úgy, hogy a képletekben mindig k oszlopeltolás legyen, tehát pl. k=6 esetén a másodiknál =Munka1!G1 helyett =Munka1!M1, a harmadiknál =Munka1!S1 stb.?
A legjobb, amit kitaláltam, hogy S1O1 stílusúra állítom a számozást (hogy az oszlopszámokhoz is könnyebben tudjak k-t adni), és bekapcsolom a kélpletek láthatóságát az értékek helyett. Így könnyebb ugyan elvégezni a korrekciót, de így is kézzel kell átírni (n-1)*k képletet. Van erre értelmes megoldás?
Vagy a másik kérdésem, hogyan tudom megoldani, hogy egy cella értéke nem lehet kisebb mint 0 ?
Hali!
Excelben meg lehet oldani a következő problémámat ami készletnyílvántartással kapcsolatos vagy erre már esetleg kevés?:
Külföldről kapok alapanyagot egy bizonyos árfolyamon. Ennek kiszámolom a Forint értékét. Ahogy csökken az alapanyag mennyisége úgy csökken a pénzbeni értéke is.
Valamikor kapok (pl hó közben) hozzá még alapanyagot más árfolyamon. Ugyan úgy kiszámolom a forint értékét a darabnak.
FIFO elvet követve ahogy legyon a "gyártósorról" a termék először az első árfolyamon kapott alapanyagot szeretném csökkenteni és ha az eléri a 0-t akkor a második árfolyamon kapottat csökkenteném
azt nem is feltételeztem hogy wordben vagy acrobatban vagy egyéb más programban működni fog a dolog, hiszen ez nem is volt elvárás...
de ha megnyitok egy microfos féle excel táblát nekem az ugyan az mintha open office ban vagy libre office ban nyitnám meg...
...persze tudom hogy ua. a file az említett 3 programban teljesen másképp fog kinézni és viselkedni... de azért már bocsásson meg a T. világ... (legyünk már kompatibilisak)
...miért nem lehet már megírni vmit úgy, hogy ha vmi működik akkor működjön már máshol is...
...és itt a jogdíjak nem érdekelnek...
szóval akkor ismételten kérdezem a hozzáértő szakembereket (only Libre Office) mi lehet ebben az ügyben a megoldás...
...és mielőtt jön az "okos" megoldás hogy írjak be egy 0-át az első cellába, majd a ctrl gomb nyomvatartása melélett huzzam le a kívánt celláig...és láss csodát...!
Excelben meg lehet oldani a következő problémámat ami készletnyílvántartással kapcsolatos vagy erre már esetleg kevés?:
Külföldről kapok alapanyagot egy bizonyos árfolyamon. Ennek kiszámolom a Forint értékét. Ahogy csökken az alapanyag mennyisége úgy csökken a pénzbeni értéke is.
Valamikor kapok (pl hó közben) hozzá még alapanyagot más árfolyamon. Ugyan úgy kiszámolom a forint értékét a darabnak.
FIFO elvet követve ahogy legyon a "gyártósorról" a termék először az első árfolyamon kapott alapanyagot szeretném csökkenteni és ha az eléri a 0-t akkor a második árfolyamon kapottat csökkenteném.
Ezt a feladatot Excelben Solverrel meg lehet oldani, az Access erre nem lesz jó.
Azonban, a megoldás csupán kb. 10 százaléka Excel, a 90 százaléka optimum- és mátrixszámítás (Lineáris programozás), először annak olvass utána, különös tekintettel a "Hozzárendelési feladat" nevezetes problémára.
Ha a fejléc az oszlopcím nálad, valamint a minden "oldal" az nyomtatási oldal akar lenni, akkor be lehet állítani ezeket.
1.
Oldalbeállítás - nyomtatási terület kijelölése. Ezt beállítod mind a kettőnek. (az utolsó oldalnak, meg a többinek külön-külön (Nyomtatási terület bővítése v. kijelölése)). Viszont egy munkalaphoz egy ilyet tudsz beállítani.
2. Oldalbeállítás - Lap. Itt beállítod a fennt ismétlődő sorokat - ezek lesznek minden oldal elején.
Nekem egy olyan gondom van, hogy a táblázatom tetején lévő fejléc (2 sor) minden oldalon megjelenjen. Azonban az utolsó oldalon már más jellegű tartalom van ezért ott már nem szeretném, hogy látszódjon a fejléc. Sajnos akárhogy is próbáltam, sehogyan sem sikerült ezt beállítanom.
a munkahelyem lenne egy feladat amit megkellene oldanom excelbe,ehhez kérném a segítségeteket, hogy miként tudnám megcsinálni. Próbálok mindent leírni.
-Jelenleg a munkbeosztás kézi beírással történik. Ezt minden műszakban a vezető írja ki mind a 30-40 főnek. Egy sima excel táblában kézi beírással.
pl.: Kiss József dolgozó délelőttös műszakban a 45AB munkahelyen dolgozzon.
Ezt szeretném automatizálni, mert nagyon sok időt vesz el ezt tervezgetni.
- Nagyon sok munkaállomás van(25-30), és egy dolgozó akár több munkaállomáson is dolgozhat,mert többfajta terméket is tud gyártani, de mivel több műszakban dolgozunk ( de.,du.,éj. illetve van folyamatos is) ezáltal
bonyolultabbá válik a dolog.
- Az adott munkaállomásra mindig van egy aktuális rendelés,hogy mi után mit kell csinálni. pl.: 45 AB munkahely ---> 100db 1234c típus---> 200db 1234d típus--> és így sorba. Az adott munkaállomásokra mindig a következő 24 órára
előre meg van adva a rendelés egy excel táblázatba (meddtől meddig kell gyártani, mennyi darabot, milyen típus) .
- Ami még problémás az az, hogy nem mindegyik dolgozó fix munkaidőbe jön. Valaki csak de., valaki csak du., de. ,van aki de. és éj., vagy de. és du. . Figyelembe kellene venni még azt is, hogy ki az aki táppénzem, és ki az aki szabaságon
van.
- Olyanra gondoltam, hogy lenne egy táblázat ami tartalmaza a rendeléseket, egy táblázat ami tartalmazza a dolgozókat(de,du,éj tud dolgozni, melyik munkahelyen) illetve egy ami összesíti a kettőt , hogy ki hol dogozzon.
Ötletem sajnos nincs, hogy hogy kellene belekezdeni, vagy inkább Access-ba kellene?
Excel statisztikai próbákról lenne kérdésem. Két csoport adatait hasonlítanám össze kétmintás T próbával, de az F próba szerint eltérő a szórásnégyzetük, így Welch (vagy d) próbára lenen szükségem (azt hiszem). Ez megfelel az excelben található T próba 3-as típusának (kétmintás, nem egyenlő variancia (heteroszcedasztikus))? Vagy mit kellene használnom ezesetben?
Persze hogy nálam volt a galiba. Az még hagyján, hogy valóban volt hivatkozás egy másik munkafüzetre, de ez nem szokott akadályt jelenteni, ha jó az útvonal. Esetemben azonban, mint erre épp néhány perce jöttem rá, a másik munkafüzet a hálózatom egy nem bekapcsolt gépén volt....
Ha netántán a gondolatjelnek látszó jelek nullák könyvelési számformátumban, ill. ha elfogadható hogy a nem szorzót tartalmazó cella üres legyen, vagy nullát tartalmazzon, akkor az alábbi egyszerű képletet javaslom: {max(A1:C1*D1)}. A képlet tömbképlet, CTRL+SHIFT+ENTER-rel kell aktiválni.
Sziasztok. Új vagyok itt, és egy olyan kérdésem lenne, hogy most telepítettem az office 2007-et és az excel munkalapokra ha kattintok, csak egy táblázat nélküli üres excelt nyit meg, és csak a fájl megnyitással tudom megnyitni az adott dokumentumot. A társításnál megnéztem, rendben van, próbáltam újratelepíteni, de eddig semmi javulás. Ha valaki tudna megoldást...
Excel 2007. Mostanában ezzel az üzenettel kezd, amikor az egyik filem behívom: Biztonsági figyelmeztetés! A rendszer letiltotta a hivatkozások automatikus frissítését.
Tulajdonképpen semmi probléma ezzel, csak kiváncsi vagyok, hogy miért csinálja, miért nem csinálta eddig, miért nem csinálja többi filenál. Az üzengetős munkafüzet saját gyártmány, semmilyen külső hivatkozást nem tartalmaz, és makrót sem írtam hozzá.
A makró mindkét kérdésedre válasz. Mivel nem adtad meg pontosan, mi hol található a füzetedben, a saját belátásom szerint írtam meg.
A billentyűzetről történő bevitel, amit a makró figyel, az első lap A1-es cellája. Ennek a függvényében változik a B1 cella értéke IGAZ-ra, vagy HAMIS-ra.
A két terület nálam a Munka2!C1:E9 (Első), és Munka2!G2:J15 (Második) tartomány. Az Első-t a B1=IGAZ esetén az indító lap D3 cellájába másolja – a D3 lesz a tartomány bal felső sarka. B1=HAMIS esetén a Második tartomány adatai törlődnek.
A makró utolsó sora az F (hatodik) oszlop bevitelét figyeli. Mikor Enterrel elfogadtatod a bevitelt, a fókusz az azonos sor J oszlopába ugrik.
A makrót a bevitel lapjához kell rendelned. Lapfülön jobb klikk, a VB szerkesztőbe bejutva a jobb oldalon kapott üres lapra másold be.
Private Sub Worksheet_Change(ByVal Target As Range) Dim Első As Range, Második As Range
If Target.Address = "$A$1" Then Set Első = Sheets("Munka2").Range("C1:E9") Set Második = Sheets("Munka2").Range("G2:J15")
If Cells(1, "B") Then Első.Copy Sheets(1).Range("D3") Else Második.ClearContents End If End If
If Target.Column = 6 Then Cells(Target.Row, "J").Select End Sub
Ha Robbantómester tanácsa alapján lapvédelemmel oldod meg a fókusz helyét, az End Sub fölötti sort törölheted.
ha zárolod a cellákat és a zárolt cellák védelmét aktiválod - akkor enter leütésére az egyik cellából a következő NEM ZÁROLT cellába fog ugrani. Vagy makrós ez is....
Az első: lehet-e mondjuk egy HA függvénybe olyan utasítást adni hogy "ha igaz" érték esetén egy komplett névvel ellátott tartományt másoljon be egy másik munkalapból az adott helyre, vagy mondjuk "ha hamis" értéknél töröljön egy színté névvel ellátott tartományt?
A másik kérdés hogy meg lehet-e oldani hogy egy munkalapon adatok beírásánál hogy miután egy cellába bírtam az adatot és lenyomtam az entert, akkor automatikusan egy meghatározott következő cellába ugorjon a cursor? Van erre valami egyszerű megoldás?
Előre is köszi a válaszokat és jó hétvégét mindenkinek!
igen, ez is jó sőt még jobb is, mert az én pédámnál a dátumoknak növekvő sorrendben kell lenniük, ennél viszont ez nem fontos.
ez tulajdonképpen két részből áll: a "*" jobb és bal oldalán
a bal oldal:
MAX((($D$2:$D$7011)=D2)
ezzel kapsz egy olyan tömböt, amibel 0-k (hamis) és 1-ek (igaz) vannak. Ott lesz 1, ahol a dátum a maximum, a többi 0 lesz.
a jobb oldal:
Ezek pedig a tényleges dátumok egy ugyanakkora tömbben, mint fentebb a $D$2:$D$7011.
Tulajdonképpen a nullák és egyesek vannak tömbként összeszorozva - tehát ahol 0 van, ott 0 lesz mert a nullával szorzás 0-t ad vissza a többi (ahol 1 van) pedig vissza adja a dátum maximumot (mert eggyel szorzol - tehát u.azt kapod vissza)
Szia! Köszi szépen, közben rákerestem a neten és találtam egy max-os megoldást:
C D E F G H
fv Customer Number Customer Name City Customer Number Invoice Date
=MAX((($D$2:$D$7011)=D2)*($H$2:$H$7011), aztán ctrl + shift + enter-rel rögzíteni
Így elvileg működik, már csak a logikát lenne jó megérteni, mert egyedül tuti nem tudnék egy ilyet legközelebb megcsinálni... Esetleg ha van időd, akkor el tudnád magyarázni, hogy miért ez a megoldás? az =E2-t sem értem, illetve a * jelet.
azt hiszem jobban jársz, ha a pivottábla hátteréül szolgáló adatokban egy segédoszlopban határozod meg a vevő dátumának maximumát - majd így készíted el a pivottáblát.
Sziasztok! Tudnátok segíteni abban, hogy van egy adatbázisom vevőkről excelben és egy olyan listát szeretnék ebből készíteni, ami minden vevőnél a legutóbbi számlát tartalmazza csak.
Csináltam egy pivot táblát, megpróbáltam a top10...-et az invoice date-nél, de sajnos nem jutottam vele előrébb... :( Hogyan tudnám ezt a feladatot megoldani?
Szia köszönöm a válaszodat, van egy program is a munkafüzet mellé oda kell beírni az eredményt :) Ezen lehet gyakorolni a zh-ra. Annyit megtudnál tenni, hogy átküldöd nekem (vagy feltöltöd valahová) a megoldást, sokat segítene, mert nekem sehogy nem adja azt az eredményt. (Órán egyébként ilyesmirő szó nem volt)
Töltse ki a Kritérium lapon található kritériumtáblát úgy, hogy a feltételeknek az alábbi leírásban szereplő rekordok feleljenek meg, majd a kapott ellenőrző kódot írja a mezőbe!
A nem győri, Levendula utcai kétnapos kölcsönzések.
Nem az volt a probléma. Rögtön kipróbáltam szüz cellákkal, és ott sem tudta hivatkozassal megoldani. Végül megtaláltam a hiba okát. Be volt kapcsolva a másodlagos képletkiértékelés. Amint azt kikapcsoltam, megszűnt a hiba. Így csak az a kérdés, hogy a másodlagos képletkiértékelésnél miért fuccsol be. Elvileg semmi sem indokolja.
Minek kispályázol? Egyből diplomát kellene vásárolnod a kínai piacon.
Komolyra fordítva, ez egy szakmai fórum. Kétlem, hogy itt bárki ócsítani akarná a nicknevét azzal, hogy egy efféle alantas üzetbe partnernek ajánlkozik. Szerintem két héttel ezelőtt kellett volna jelentkezned, hogy korrepetáljunk. Azt többen is szívesen vállaltuk volna.
Helo Mindenki! Lenne egy hatalmas problémám! Holnap Azaz Szerdán reggel 9:50től Zh-t írok Excel témaköréből (gyakorlati zh, annuitásos, kereső függvények, solver), jobban mondva pótzh-t. Most keresek valakit aki ezt a holnapi ZH-t megtudja nekem oldani olyan módon hogy én azt a zh-t elküldöm emailben és ő kitöltve visszaküldi! Kérlek segítsetek!! 2000 forintot tudok érte felkínálni ha átmegyek! Jelentekzni: bugatti1992@citromail.hu-n! Nagyon fontos lenne!!!!! Csak 40%-ot kell jól teljesíteni és meg van a kettes!
A másolás és spec. beillesztásben van transzponálás, de az a képleteket eltolja (mert ugye nincsenek a cellákban $ jellel rögzítve a hivatkozások). Egyesével meg macerás lenne mindenhová beírni a $ jeleket.
Az ehhez hasonló esetekben a $-jel betoldására ill eliminálására én a CSERE funkciót szoktam használni. Egyetlen lényeges feltétele van, hogy a cserélendőt kellően szelektíven lehessen megadni. Ez $-jel eliminálásakor általában nem probléma. Fordított esetben jobban oda kell figyelni.
Excel 2007. A MARADEK függvény hibát jelez, ha cellahivatkozassal adom meg az osztandót. Azt írja ki, hogy nem megfelelő az adattípus. Ha értékként irom be a függvénybe, akkor normálisan kiszámolja. Mi lehet az oka, hogy nem fogadja cellahivatkozással?
Sajnos ez nem viszi át helyesen a képleteket. Az A1:E1 tartományba a +sor()*2 függvényt vittem be, a képlettel az F1:F5 tartomány minden tagja az eredeti 2-t adta vissza. :(
Most tudtam meg, hogy a római számokat arabokká lehet konvertálni a
{=HOL.VAN(A1;RÓMAI(SOR(INDIREKT("1:3999")));0)} képlettel. Hátha valakit érdekel. A tartományt az 1:3999 módosításával lehet növelni, vagy csökkenteni.
Tömbképlet (lehetséges, hogy a fórummotor lenyeli a kapcsos zárójeleket).
a1:e1 tartományt akarod transzponálni a függvénnyel pl f1:f5-be:
jelöld ki az f1:f5 tartományt, nyomj egy F2-t. Írd be, hogy =TRANSZPONÁLÁS(a1:e1) és nyomj egy ctr+shift+enter bill. kombinációt (a tömbképletek kell így bevinni, ez a fgv ugyanis így működik)
VA egy 10 tagól álló sorom. Mindegyikbe képlet van, tehát nem konkrét szám.
Ezt szeretném függőleges oszlopba rendezni.
A másolás és spec. beillesztásben van transzponálás, de az a képleteket eltolja (mert ugye nincsenek a cellákban $ jellel rögzítve a hivatkozások). Egyesével meg macerás lenne mindenhová beírni a $ jeleket.
Na most van egy Transzponálás függvény, amiben tartományt adok meg (pl. egy sort), de az csak egy cellára ad ereményt, nem alakít ki oszlopot. Szóval hogyan lehet
1. A 2010-es verzióban is elérhető az automatikus formázás az alábbi módon: File - Beállítások - Gyorselérési eszköztár - Választható parancsok helye - Menüszalagon nem szereplőparancsok - Automatikus formázás . Innen felveheted az eszköztárba vagy akár a szalagra.
2. A formázás táblázatként is jó. Miután kiválasztottad a megfelelő stílust, a Táblázateszközök fülön az eszközök csoportban, kiválasztod az átalakítás tartománnyá utasítást. Ezzel megtartod a formátumot de megszűnik un. Excel táblázatnak lenni.
Kösz a tippet. A segítségével rájöttem, hogy én voltam hülye, nem az excel. A kereső oszlopcím ugyanis kétszer szerepelt a táblázat fejlécében. Tehát jól szűrt az excel, csak nem abban az oszlopban amelyikben gondoltam, hanem a másik ugyan olyan nevűben.
Már vagy egy órája próbálok, rájönni hogy mi a fene lehet rosszul beállítódva az excelemben (2003), de nem jövök rá. Az írányított helyben szűrés ugyanabban a fileban az egyik lapon nem találja meg a keresett rekordot, rekordokat, egy másikon meg minden további nélkül hozza őket. Ha van valakinek valami ötlete, hogy mit nézzek meg, kérem ossza meg velem. Az olyan triviális hibalehetőségek ellenőrzésén, hogy létezik-e a keresett rekord, van-e rejtett kritérium oszlop, nem látszó szóközök, stb. túl vagyok.
Sziasztok! Eddig Excel 2003-at használtam, nemrég tértem át a 2010-re. Az automatikus formázásnál elakadtam. Kijelölöm a formázni kivánt táblázatot, rákattintok a formázás táblázatként gombra, a felbukkanó ablakban kiválasztom a kívánt stílust, de ahelyett hogy megtörténne a formázás, még felugrik egy új ablak, melyben a táblázat adatainak helyét lehet megadni, valamint, hogy kérek-e rovatfejet. Ezután az oszlopfejek adatszűrő módba váltanak, de én ezt nem szeretném, én csak formázni akarok. Hogy lehetne ezt kikapcsolni? Arra már rájöttem, ha átalakítom normál tartománnyá, akkor eltűnnek a nyilacskák, de ez nem teljesen jó megoldás, mert ha más stílust akarok, akkor megint kezdődik előlről. Láttam olyan táblázatot, amelyben a formázott táblázat nincsen normál tartománnyá alakítva, mégis működik a formázás, és anélkül lehet más stílusra átváltani, hogy az adatok helyét kérő ablak felugrana. Nem tudom ezt hogy oldották meg. Kérdezés előtt mindig keresgélni szoktam, de erről semmit sem találtam (talán csak annyit, hogy Excel 2007-ben elvileg úgy működik, ahogy én is várnám).
A levél küldéshez az ActiveWindow.Close sor után kell ezeket betenni outlook használata esetén:
Set ouApp = CreateObject("Outlook.Application", "localhost") ouApp.Session.Logon Set levelou = ouApp.CreateItem(olMailItem) levelou.To = "címzettek" 'ide kell betenni a címzetteket levelou.Subject = "tárgy" 'levél tárgya levelou.Attachments.Add (nev$) levelou.display Set levelou = Nothing Application.Wait (Now + TimeValue("0:00:03"))
Az utolsó sor elhagyható, de nekem valamiért kellett a helyes működéshez. A címzetteket pedig vagy valamilyen változóba kell beletenned, vagy a táblázatban valahol felsorolni és onnan kiolvasni. A változó vagy a cellák léptetéséhez a már definiált lap% változót kell felhasználnod.
Egy excel feladatot kellene megoldanom, viszont segítségre lenne szükségem, mert eléggé elakadtam. A táblázat:
Termék Minőség Selejt% A 1 5,2% A 2 4,2% A 3 4,3% B 1 1,8% B 2 0,3% B 3 1,1% C 1 0,9% C 2 4,1% C 3 8,2% D 1 7,7% D 2 5,7% D 3 5,2% E 1 5,61% E 2 5,13% E 3 0,57%
Ebből a táblázatból kéne ab.darab függvénnyel kihozni azt, hogy hány olyan termék volt, aminél 1%-nál kevesebb a selejt.
Sziasztok. Excel 2007el dolgozom és elakadtam. Egy fajta futballszurkolói füzeten dolgozom, melyben szeretnék góllóvőlistát kiiratni , természetesen rendezve.
Példa hogy értem:
Debrecen:
Varga József 3 gól
Yannick 2 gól
Szakály 1 gól
Pápa:
Marics 4 gól
Szűcs Lajos 2 gól
szóval így fel van sorolva a 20 csapatom nevekkel, gólszerzőkkel és ezt akarom 1 másik munkafüzeten, névvel, csapattal, gólok számával kiiratni, valahogy így:
4 gól Marics PÁPA
3 gól Varga DEBRECEN
2 Gól Yannick DEBRECEN
Szakály DEBRECEN
és persze ezt úgy hogy az idő előrehaladtával, ha a játékosok újabb gólokat szereznek és átírom a gólok számát, akkor frissüljön folyamatosan.
szóval ha Yannick 2jéhez rúg még 3at akkor ő kerüljön előre majd ha Marics rúg2-t akkor megint ő.
Próbáloztam Fkeres függvénnyel de nem sikerül összehoznom úgy hogy kiirassam a neveket is meg a gólok számát is és még a csapatnevet is.
2. kérdésem pedig az lenne hogy a tabellát hogyan tudom úgy frissíteni hogy a csapataim is mozogjanak fel vagy le a pontszámuk függvényében. Mert az megy hogy a pontok alapján rendezem a csapatokat , de az eredményeik tehát (lejátszott meccsek, győzelem, vereség stb.) ugyan abban az oszlopban marad, csak a csapatnév mozog el az adott irányba. Köszönöm előre is a segítséget.
Nem kell lementened. A makró első lépésben külön lapokra dobja szét az adatokat. A lapok neve az ügyfélszámhoz tartozó név lesz (FKERES).
Második lépésben a lapokat egyenként átteszi 1-1 új fájlba, amiknek az ügyfélkód nevet adom. Ezeket lementi – a makró elején – általad megadott könyvtárba.
Érdemes egy másolatot készíteni a füzetedről, és abban kipróbálhatod.
Robbantómester biztosan segít a levelezésben. :)
A fórummotor a backslash-ekkel táplálkozik, most is lenyelte az utvonal = "E:Eadat" sorban.
Helyesen utvonal = "E\:Eadat\". Remélem, most átviszi.
Annyit csináltam meg, hogy az egyes ügyfélszámokhoz tartozó sorokat külön lapokra átmásolja. A lapok nevét az FKERES függvénnyel kikeresett névvel látja el, és ezeket a lapokat egyenként új füzetbe teszi át, majd lementi az adott könyvtárba az ügyfélkód nevével. A levelezést majd valaki beírja a Mentés nevű részbe. Ehhez meg kell adnod, melyik levelezőt alkalmazod.
Az ügyfélkódokat a V, a hozzájuk tartozó neveket a Z oszlopba tettem – innen veszi az FKERES a neveket –, a másolást soronként az A:K cellára írtam meg.
Sub Ugyfelek() Dim sor As Double, usor As Double, usor_1 As Double, nev$, WS1 As Worksheet Dim utvonal$, lap%
utvonal = "E:Eadat" 'itt írd be a saját útvonaladat ehelyett usor = Cells(Rows.Count, "A").End(xlUp).Row Set WS1 = Sheets("Munka1") 'ide jön a saját indító lapod neve
'Másolás lap%okra For sor = 2 To usor nev$ = Application.WorksheetFunction.VLookup(WS1.Cells(sor, "A"), _ WS1.Range("V:Z"), 2, 0) 'itt a V:Z módosítandó az fkeres függvényhez On Error GoTo Uj_lap usor_1 = Sheets(nev$).Cells(Rows.Count, "A").End(xlUp).Row + 1 If usor_1 = 2 Then Range(WS1.Cells(1, "A"), WS1.Cells(1, "K")).Copy Sheets(nev$).Cells(1) Range(WS1.Cells(sor, "A"), WS1.Cells(sor, "K")).Copy Sheets(nev$).Cells(usor_1, "A") Next
'Mentés, zárás For lap% = 1 To Sheets.Count - 1 nev$ = utvonal & Sheets(1).Cells(2, "A") Sheets(1).Move
uj munkakoromben fantasztikus feladatokat kapok, melyet szeretnek leegyszerusiteni. Adott egy adatbazis, A oszlopaban ugyfelszamok, B ben a rendelt termekek, a tobbi nem erdekes.
pl
A B
001 alma
001 korte
001 malna
002 alma
002 malna
003 korte
004 alma
stb
A feladatom, hogy ugyfelszamonkent kulon fajba mentsem a megrendeleseket es elkuldjem az ugyfelnek. Egymas adatait nyilvan nem lathatjak, igy nem tartalmazhatja oket a file.
Arra gondoltam, hogy ez annyira manualis, hogy macroval kellene megoldani, de sajnos Makroban meg nem tartok ott, hogy irjak is egyet, csak felvenni tudok es azt modositgatni, ha valamit elront.
Szoval valami olyat keresek, hogy gyujtse ki a 001 ertekeket az A ban, es mentse el egy kulon fajlba 001 nev alatt. Aztan keresse ki a 002-ket, mentse le, es igy tovabb. Kb 150 kulon ugyfelszam van, nehany ezer sorral.
A masik kerdesem, hogy ugyanezeket el is kellene kuldenem mailben. Egyazon szoveg nelkuli levelet mas mas melleklettel, mas mas cimekre. Azt szeretnem tudni, hogy lehet-e olyat, hogy egy makro automatikusan megnyit egy levelet, egy listabol megcimezi, es automatikusan minden levelbe beteszi a megfelelo mellekletet? az elkuldest mar vallalnam, ha az gond :-)
Lehetseges ilyen makrokat letrehozni, ill tudtok ebbe segiteni?
Van egy problémám, amire nem sikerül megoldást találnom. Ha tudtok, segítsetek.
Az excel táblázat azt tartalmazza, hogy egy termék aktuálisán mennyibe kerül. Az "A" oszlop celláiban vannak a kezdő dátumok, a "B"-ben pedig a vég dátumok. A "C" tartalmazza azt, hogy a megadott dátumintervallumban mennibe került a termék. Az alábbi kis példából látható, hogy mit kellene megoldani.
Tételezzük fel, hogy az alábbi excel táblám van:
A1: 2012.01.01
A2: 2012.01.18
A3: 2012.01.24
B1: 2012.01.17
B2: 2012.01.23
B3: 2012.02.15
C1: 25000
C2: 30000
C3: 35000
E1: 2012.01.19
F1: képlet, ami az "E1" cella éréke alapján megkeresi a "C" oszlopban azt az értéket, aminek a dátuma "A" és "B" oszlop értéke között van. Az eredménynek ennek a konkrét példában 30000-nek kellene lenni.
Van erre a problémára valamilyen beépített képlet?
Remélem érthető, amit szeretnék. Ha ismered az SQL-t, akkor abban így oldanám meg: SELECT 'C' FROM tablazat WHERE 'E1' BETWEEN 'A' AND 'B';
Hát, a bonyolultság az a dologban, hogy ha az Excel éppen nem aktív (és nem aktív, mert pont az a baj, hogy más program aktív és eltakarja) akkor hiába is programozol rá valamit bármelyik billentyűre Excelben...
A sima mezei Alt+Tab nem felel meg, esetleg? Csak blöffölök.
Esetleg még azt lehet megcsinálni (nem tom lehetséges-e), hogy az Excel sose engedje át semmilyen más programnak a fókuszt.
Én élek a gyanúperrel, hgoy itt valami excel-en kívüli megoldás működhet.
Kiváncsi vagyok mások mit mondanak, mert ezért van itt egy-két feketeöves Event kezelő nindzsa...
Egy egyszerű kérdésem lenne, bár a megoldást rá nem találom.
Arról lenne szó, hogy van egy excel munkafüzetem, melyben elinduláskor egy VBA makró fut, és amely automatikusan elrejti az excel munkafüzetet a VBA formok mögül (application.visible = false programkóddal) , és a windows tálcáról egyaránt.
Ha a programom használata közben másik programot is be kell töltenem, akkor az eltakarja az én programomat, és zavaróan hosszadalmas, amíg minden takaró programot lepálcázok (Kis méretre rakok a tálcára), hogy az én programom újra látható legyen. Szeretném, ha egy billentyű (Pl.: ALT) megnyomására az én programom jönne fel a legfelső programnak.
(Ugye a windows tálcáról nem tudom felnagyítani, mert a makrókód eltűnteti a tálcán lévő excel megjelölést).
A ×60 esetében percben kapod meg. Be kell szorozni még ×24-gyel és még egyszer ×60-nal is (az idő az Excelben [0;1] tartományba eső tizedestört, ahol 0 a 00.00.00, az 1 pedig a 24.00.00).
Sub izé() Dim Src As Range, Dst As Range, c As Range Dim MaxCount As Long, i As Long, j As Long, RandX As Long, RandY As Long Dim VoltMár As String
Set Src = Range("C4:G16") Set Dst = Range("I4") Dst.Resize(13, 5).ClearContents For Each c In Src If Application.WorksheetFunction.CountIf(Src, c.Value) > MaxCount Then MaxCount = Application.WorksheetFunction.CountIf(Src, c.Value) If MaxCount > 13 Then MsgBox "A következő szám:" & c.Value & " többször forfdul elő, mint 13. Így a feladat nem megoldható." Exit Sub End If End If Next VoltMár = "_" For i = MaxCount To 1 Step -1 For Each c In Src If (Application.WorksheetFunction.CountIf(Src, c.Value) = i) And (InStr(VoltMár, "_" & c.Value & "_") = 0) Then For j = 1 To i Do RandY = Int(Rnd() * 13) Loop Until (Application.WorksheetFunction.CountIf(Dst.Offset(RandY).Resize(, 5), c.Value) = 0) _ And (Application.WorksheetFunction.Count(Dst.Offset(RandY).Resize(, 5)) < 5) Do RandX = Int(Rnd() * 5) Loop Until Dst.Offset(RandY, RandX) = "" Dst.Offset(RandY, RandX) = c.Value Next VoltMár = VoltMár & c.Value & "_" End If Next Next End Sub
A dolog lényege az, hogy előfordulási gyakoriság szerint csökkenő sorrendben szórom szét a számokat egy 13x5-ös mezőben. Először tehát mindig annak keresek helyet, aki a legtöbbször fordul elő. Holtverseny esetén az kerül sorra előbb, akivel a C4:G16 tartományban (balról jobbra majd fentről lefelé haladva) hamarabb találkozom. Ennélfogva a számok elhelyezése nem teljesen véletlenszerű (hiszen a fenti szabályszerűség benne van). De a célnak talán megfelel.
A másik dolog, hogy létezhet olyan kiindulási számsor, ahol a fenti algoritmus zsákutcába (végtelen ciklusba) fut. Minél kevesebb az egyedi szám, vagyis minél több az ismétlődés a kezdeti számok között, annál nagyobb a zsákutca esélye. Ilyenkor Ctrl+Break gombokkal lehet leállítani a makrót, aztán meg lehet próbálni újraindítani. Ha többször/mindig végtelen ciklusba kerül, az szívás, és nincs rá megoldásom.
Nem vagyok valami rutinos exceles, csak néha kell használnom, így aztán erről a függvényről nem is tudtam, de aztán a szomszéd srác telefonon felhomályosított. Mindenesetre köszi a segítséget! Próbálkoztam, hátha mázlim lesz, és van itt épp valaki, aki azonnal válaszolni tud. :)
Ha egy hosszú oszlopban minden egyes szám elé be kell írnom azt, hogy D, azt hogyan tudom a leggyorsabban megcsinálni? Tehát pl. az van a cellában, hogy '3423', de nekem az kellene, hogy 'D3423', és így tovább minden szám elé az egész oszlopban. Próbáltam azt, hogy az előtte lévő oszlopba írom a D-t, aztán egyesítem a két cellát, de nem hajlandó összevonni a két oszlop beírt adatait, hanem törli a jobboldalit.
Bevallom töredelmesen, hogy a makrókhoz nagyon nem értek. Az írt javítással működik, el is indul, le is fut, de csak a számok felét használja fel. 13 csoport helyett csak 7db 5ös csoportba osztja a számok. Megpróbáltam a kódból kitalálni, hogy mit kéne átírnom, de sajna nem sikerült megtalálnom.
Szóval, tényleg köszönöm a segítséget. Elkészítettem a makrót, de a Dst.Offset((i - 1) 5, (i - 1) Mod 5) = Val(Selected) sornál nálam sintaktikai hibát ír.
Sub izé() Dim i As Long, Maxi As Long, Randi As Long Dim Numbers As String, Selected As String Dim Rng As Range, c As Range, Dst As Range
Set Rng = Range("C4:G15") Set Dst = Range("K4") For Each c In Rng If InStr(Numbers, c.Value) = 0 Then Numbers = Numbers & "," & c.Value Maxi = Maxi + 1 End If Next
For i = 1 To UBound(Split(Numbers, ",")) Randi = Int(Rnd() * Maxi) + 1 Selected = Split(Numbers, ",")(Randi) Dst.Offset((i - 1) 5, (i - 1) Mod 5) = Val(Selected) Numbers = Replace(Numbers, "," & Selected & ",", ",") Maxi = Maxi - 1 Next End Sub
Az első vastagított sor a forrás tartomány definíciója, a második pedig a céltartomány bal felső sarka.
Nem ellenőriztem alaposan az eredményt, de szerintem jó.
Egy búzatáblában a szálak magassága normális eloszlású valószínűségi változó 70 cm várható értékkel és 5 cm szórással. Mennyi a valószínűsége, hogy egy véletlenszerűen kiválasztott szál magassága 68 és 75 cm között van?
Valószínűséget kiszámoltam, az 0,4968.
Melyik értéknél lesz a standard normális eloszlásfüggvény értéke 0,8? Na ez nem megy. Valaki tud segíteni? Hogy kell, milyen fv-el.
Sajnos ez a funkció nem jó nekem, mert lefelé görgetéskor az A oszlop elemei is gördülnek a többivel együtt... Én azt szeretném, hogy pl. az A1:A25 tartomány mindig ugyazon pozicióban látszódjék lefelé görgetéskor is.
Főnök átküldte a lenti instrukciókkal a táblát. Hogy mihez kell, azt nem kötötte az orromra, de lottóhoz nagyok a számok :).
Feltöltöttem a táblát. Kerestem neten, de azt nem tudtam megoldani, hogy ha meg van az első 5 szám, utána azokat már ne vegye figyeleme, amiket kiválasztott, meg azt sem tudtam 1000%-ra belőni, hogy ne válasszon két azonos értéket egy 5ös csoportba. Egyáltalán ez megy excelben? Vagy programozni kéne valamit?
Sziasztok! Megoldható valahogyan az, hogy az A oszlop minden esetben fix legyen, lefelé görgetéskor a B oszloptól és az ettől jobbra lévő oszopok tartalma változzék csak? Köszönöm a válaszaitokat! :)
2007-es excelt használok és a következőt kéne megoldanom: Van egy táblázatom csak számokkal C4től G16ig ami tartalmaz azonos számokat is. A benne található számokat kéne véletlenszerűen ötös csoportokba rendezni úgy, hogy a kapott ötös csoportokon belül egy szám nem szerepelhet többször, viszont minden elem felhasználásra kerül a táblázatból.
Ha van "Munka1" nevű munkalapod, és azon a R5 cella nincs levédve, akkor csak egy gond lehet: végtelen ciklusba kerül.
Próbáld ki ezt:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Application.EnableEvents = False Worksheets("Munka1").Range("r5") = Now() Application.EnableEvents = True End Sub
Kérdésem az lenne, hogy egy 25000 db-ól (első táblázat) álló termékcsoport 2000 db (második táblázat) terméke árát és darabszámát szeretnénk frissíteni.
Így a 2 táblázat összehangolására lenne szükségünk.
Az első dolgunk a 2000 termék kiszűrése lenne a 25000ből, amit az állandó értékű cikszámok egyezése alapján tudnánk megoldani.
Kérdés:
Hogyan szürjünk a cikszám alapján?
A szűrés után hogyan frissítsük az első táblázat árai és darabszámai alapján a második táblázat darabszámait és árait?
A Ctrl+f-re bejön a kereső ablak. A szó beírása után a "Listába mind" gombot nyomd meg, mire kapsz egy ablakot az összes találati hellyel. Amelyiket ezek közül kiválasztod, oda ugrik a fókusz, bezárhatod a kereső ablakot.
Bár nemtudom létezik-e ilyen makró vagy valami ami megoldást jelentene a problémára; végülis olyan lenne ez mint egy cellába épített kereső amibe csak bele kell kattintani egyszer és beirni a szöveget, a végén ütni egy Entert és kijelöli a találatot.
"Az FKERES függvénnyel egy cellatartomány első oszlopában kereshet, majd eredményül megkaphatja a találatnak megfelelő sorban lévő bármely cella értékét.
keresési_érték: Kötelező megadni. A táblázat vagy tartomány első oszlopában keresendő érték. A keresési_érték érték vagy hivatkozás is lehet.
Tábla: Kötelező megadni. Az adatokat tartalmazó cellatartomány. A tábla argumentum lehet tartomány (például A2:D8) vagy egy tartomány neve. A tábla első oszlopában lévő értékek a keresési_érték argumentum szerint keresett értékek. Ezek az értékek lehetnek szövegek, számok vagy logikai értékek. A függvény a kis- és nagybetűk között nem tesz különbséget.
Oszlop_szám: Kötelező megadni. A tábla azon oszlopának a táblán belüli sorszáma, amelyből az eredményt meg kívánja kapni. Ha az oszlop_szám értéke 1, akkor a tábla első oszlopában lévő értéket kapja eredményül, ha az oszlop_szám értéke 2, akkor a tábla második oszlopában lévő értéket, és így tovább."
A "Tartományban keres" leírása kicsit hosszabb, azt nem másolom be ide.
Nálad az első keresési érték a Munka1 lap A2 cellájában van, mert ide írod az első iktatószámot.
A tábla a Munka2 lap $A:$D oszlopa, de megadhatod úgy is, hogy $A$2:$D$4 – csak akkor a sorok bővülésekor a képletet is át kell írnod. Ennek a táblának a 2. oszlopa tartalmazza a nevet. Eszerint a B2 képlete: =FKERES($A2;Munka2!$A:$D;2;HAMIS). A HAMIS helyett írhatsz nullát, az IGAZ helyett 1-et.
A képletet jobbra másolod a D2 celláig, és csak az oszlop számát kell módosítanod. Mikor ez megvan, a 3 képletet együtt másolhatod a többi sorba.
Látsz itt $ jeleket. Ezeknek az értelmezéséhez nézz utána a fix-, a relatív-, és vegyes hivatkozásnak. Nagyon hasznos dolog ezeknek az ismerete.
fkeres függvény.
vagy ha ugyanaz a sorrend, akkor egyszerűen áthivatkozod a cellákat a másik munkalapról. (= jellel kezdessz és átkattintassz a másik munkalapra, majd "lehúzod")
Szeretnék segítséget kérni. R1 cellába beírt, szám és betű(vegyesen beírt) karaktereket akarom megkerestetni az A, D, G, J, M, P, S, V oszlopok 8. sorától lefele úgy, hogy amikor írom az R1 cellába az értéket és lenyomom az Enter-t odaugrik automatikusan a keresett cellatartalomhoz és kijelöli azt a cellát. Ha nem találja a keresett értéket akkor az R1 cellába beírja hogy "Nincs találat" . Lehet-e olyat csinálni, hogy az R1 cellába, de csak az R1-be ne duplán, hanem csak egyszer kelljen beleklikkelni a keresett tartalom begépeléséhez; ha lehet akkor hogyan? 2007-es Excelt használok. Előre is köszönöm a segítséget!
Sziasztok, segítségre lenne szükségem. Nem tudom milyen képlettel tudnék megoldásttalálni a problémámra. A B2 mezőben szereplő név, ha szerepel az L1 től L30 ig terjedő névsorban, akkor a C2 mezőbe irjon 1est, ha nem szerepel, akkor 0 át. Le tudnátok irni a teljes beirandó részt? Köszönöm:)
Sajnos nem igazán. Engem mindig is az SQL lekerdezések érdekeltek, azt meg - számomra - megfelelő mélységben taglalja az a könyv amit régebben ajánlottam.
A múltkor bennem is felmerült ez a kérdés. Ránéztem a nickjére, és láttam, hogy más topikokban megszólalt. Tehát itt van valahol, csak biztos nincs ideje tömbképleteket gyártani.
Mivel számadatok is szerepelnek a nevek mellett, a B, E, ... W oszlopok bevitelét figyeltetném.
Private Sub Worksheet_Change(ByVal Target As Range) Dim sor As Integer, oszlop As Integer, usor As Integer Application.EnableEvents = False sor = Target.Row: oszlop = Target.Column If Target.Row > 7 Then If oszlop = 2 Or oszlop = 5 Or oszlop = 8 Or oszlop = 11 Or oszlop = 14 _ Or oszlop = 17 Or oszlop = 20 Or oszlop = 23 Then usor = ActiveCell.SpecialCells(xlLastCell).Row Range(Cells(8, oszlop - 1), Cells(usor, oszlop)).Select
Selection.Sort Key1:=Cells(sor, oszlop - 1), Order1:=xlAscending, Header:= _ xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortTextAsNumbers Range(Target.Address).Select End If End If Application.EnableEvents = True End Sub
Nem írtad, melyik verziójú Excelt használod, a makró a 2003-asnak megfelelő rendezést tartalmazza. Azt sem írtad, hogy az A:B, D:E, stb. párosok közötti oszlopokban vannak-e adatok. Ez a makró a párban lévő oszlopok adatait rendezi együtt.
Még annyit, hogy a program úgy működik, hogy amennyiben egy új tétel nevét írod be az állomány végére, akkor azt elhelyezi a névsor szerint megfelelő helyre, amennyiben egy meglévő tétel nevét írod át, akkor azt a hozzátartozó darabszámmal együtt átteszi a megfelelő helyre. És persze máris találtam hibát. Két helyen is javítottam, de azért inkább az egészet újra küldöm. Remélem, most már jó lesz.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False ' A futtaás alatt kikapcsoljuk
Dim sor As Integer, oszlop As Integer, utolsósor As Integer, név As String, darabszám As Integer
sor = Target.Row
oszlop = Target.Column
If sor > 7 Then ' Csak ha a 7. sor felett vagyunk
If oszlop = 1 Or oszlop = 4 Or oszlop = 7 Or oszlop = 10 Or oszlop = 13 Or _
oszlop = 16 Or oszlop = 19 Or oszlop = 22 Then ' Ha A,D....V oszlopon állunk
Mindenekelőtt egy egszerűsítő javaslat. Az egyes oszloppárokat rendezd le a munka elkezdése előtt a nevek sorrendjében. Hogy ne kelljen a programnak minden alkalommal újra és újra rendezni a teljes állományt. Igaz, hogy a bináris rendező - a quicksort - egy nagyon gyors algoritmus, de jobb elkerülni, hogy mindig újra kelljen rendezni a teljes (egyébként már rendezett) állományt.
Szóval, ha már rendezett állományba akarsz új tételt beírni (esetleg egy meglévőt módosítani), akkor a következő megoldást gondolom. A munkalap kódlapjára írd be az alábbi programot:
Megjegyzés: A program feltételezi, hogy az adatsorok száma nem haladja meg a 32767-et, ezért integer változókat használ a sorok megadására. A programot teszteltem valamelyest, de azért próbáld ki Te is többféle helyzetben, nem maradt-e benne valami poloska. Ismered a Murphy mondást? "Hibátlan program nincs, csak olyan, amiben még nem találták meg a hibát."
Íme a program:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False ' A futtaás alatt kikapcsoljuk
Dim sor As Integer, oszlop As Integer, utolsósor As Integer, név As String, darabszám As Integer
sor = Target.Row
oszlop = Target.Column
If sor > 7 Then ' Csak ha a 7. sor felett vagyunk
If oszlop = 1 Or oszlop = 4 Or oszlop = 7 Or oszlop = 10 Or oszlop = 13 Or _
oszlop = 16 Or oszlop = 19 Or oszlop = 22 Then ' Ha A,D....V oszlopon állunk
Sziasztok! Egy Excel makró megírásában kérnék segítséget. Az A, D, G, J, M, P, S, V oszlopok mindegyikének a 8. sorától kezdve nevek szerepelnek. Azt szeretném, hogy mikor irom őket egymás alá, akkor automatikusan rakja őket ABC sorrendbe. Azonban a nevek melletti cellákban darabszám szerepel és rendezéskor a neveknek és a hozzájuk rendelt darabszámoknak együtt kellene mozogniuk.
Excel 2003-at használva, egy kis adatbázist kezelek. Egy táblában azonosítók nevek és különféle adatok vannak. VBA kódból, egy combobox-al kiválasztok egy nevet, majd Application.CountIf fügvény hívásával kigyüjtök adatokat a táblából. Szépen működik a megoldás, mindegyik névre. Egy másik részén a programnak, teljesen ugyanolyan meghívással, de ciklusban gyüjtve ugyanazokat az adatokat, időnként hibás értéket ad a CountIf!
Alaposan végigbogarászva a kódot, semmi eltérést nem látok a meghívás között. Az átadott 3 papaméter ugyanaz. A második paraméter (kritérium) mindkét helyen long tipusú. A ciklus körülbelül 70-szer fut le, és négy-öt esetben ad hibás értéket vissza.
Létezik az, hogy esetleg valami ismert Excel bug-ba futottam bele?
Esetleg próbáljam a CountIf funkcióját VBA fügvénnyel kiváltani?
Sajnos, nem. A konkrét feladat egyébként árajánlatok összesítése. Egy oszlopon belül több partner van, és ezekre van rászűrve (mert véletlen szerűen helyezkednek az oszlopon belül). A beérkező árakat pedig értelem szerűen be kéne illeszteni a megfelelő cégnév mellé, mivel ilyen formai megoldása van, ezért az FKERES formula sem jó.
Hogyan lehet megoldani, hogy egy autoszűrövel megszűrt oszlop mellé, adatokat illeszek be (pl.:a szomszédos oszlopba), úgy, hogy a két oszlop "szinkronba" legyen egymással., tehát a beillesztésnél figyelembe vegye a szűrőt is, és ne csússzon el a két oszlop. Egyáltalán kivitelezhető ez? A segítséget előre is köszi.
Semmi. Ötletelés szintjén elakadt a dolog. Egyelőre nincs egyetértés abban, hogy mi lenne a megfelelő forma. Viszont az is igaz, hogy nem sok aktivitás volt ez ügyben mostanában. Jó is, hogy felhoztad. Ez alkalomból szeretnék közvéleménykutatást tartani, hogy ki az, akit a tudástár létrehozásának projektje foglalkoztat annyira, hogy legalább véleményformálóként részt akar venni benne. Ha nincs más jelentkező erre a posztra, akkor én megpróbálom összefogni a projektet, csak ehhez tudnom kell, kikkel dolgozom együtt.
A tapasztalati szórásnégyzet (s2) Excelben a VAR (Excel 2010-ben VAR.S vagy valami hasonló) függvénnyel tudsz számítani.
A d-próbához, ha kritikus érték alapján akarsz dönteni a hipotézisvizsgálathoz, akkor az INVERZ.T, ha p-érték alapján, akkor T.ELOSZLÁS-ra még szükséged lehet. Mivel a d-próba kétoldali próba, így normális esetben a szignifikaciaszint/2 alapján kellene számolni a kritikus értéket, de Excel-specialitás, hogy az INVERZ.T alapból kétszélűvel számol, így a valószinűség paraméterhez a szignifikanciaszintet kell beírni a szignifikaciaszint/2 helyett. Egyébként ez azt is jelenti, hogy egyoldali t-próbánál a 2*szignifikanciaszint értéket kell beírni a valószínűséghez.
Most kezdtem el fejleszteni excel tudásom, tehát az elején járok még, és mindezt autodidakta módon két könyvből, netes oldalakról. Érettségire készülök középszinten, tehát gurunak nem kell lenni, de azért olyan dolgokra még nem jöttem rá, hogy adott egy táblázat, sok időeredménnyel egy versenyről. A verseny távjából és az időkből ki kéne tudnom számítani az átlagsebességet, de erre nem találtam függvényt konkrétan, tehát tuti nekem kell összefésülni valahogy a dolgot, csak nem tudom merre induljak. Ötletek? :)
Ugyanez a megoldás másképpen megfogalmazva tömbfüggvénnyel:
=SZUM(1/DARABTELI(A1:A20;A1:A20)) (Ctrl+Shift+Enterrel kell lezárni)
Mindkét képlet lényege, hogy egy adott érték mellé felírod az 1/"az összelőfordulás számát", ha csoportosítva összegezed a különböző értékekre, akkor 1/"az összelőfordulás szám" összege minden értékre 1 ad eredményül, pl. Dávid kétszer szerepel, akkor mindkét előfordulása mellé 1/2-1/2 írsz fel, tehát ha Dávidok összegezed, akkor 1 kapsz. Minden értékre megcsinálva az összezést, pont annyi lesz az összeg, mint ahány különböző értéked van.
szevasztok. Egy egyszerű dologban szeretném a segítségetek kérni. Nem tudom melyik függvénnyel lehetne a problémámon segíteni.
pl:
Dávid
Béla
Dávid
Judit
Enikő
Béla
Például van egy ilyen oszlopom, amiben ismétlődnek a nevek, és azt szeretném kiszűrni,h hány fajta név szerepel a sorban, és nem azt hogy hányszor szerepel. Melyik függvénnyel tudnám? Le tudnátok irni a teljes formáját, ha az oszlop terjedelme A1:A10, és üres cellák is vannak benne. Köszi:)
Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False
'Helyfoglalás Dim sor As Long, usor As Long, kezd As Long, keres$, sorM As Long Dim WS As Worksheet
'Kezdő értékek megadása Set WS = Sheets("Árlista") 'A WS változóba tesszük az Árlista lapot sor = Target.Row
If Target.Column = 4 Then 'Ha a D (4.) oszlopba írsz Range("E" & sor) = "" 'Az aktuális sor E cellája legyen üres keres$ = Range("C" & sor) & "_" & Range("D" & sor) 'Értékadás Range("M1") = keres$ 'Beírás az M1-be
'Hol.van a kezd változóba. A lap 5. oszlopában keres kezd = Application.WorksheetFunction.Match(keres$, WS.Columns(5), 0) sorM = 1 'Értékadás, majd ide ír az O:P tartományba Range("O:P").ClearContents 'Előző O:P törlése
'Első üres sor a WS lapon usor = WS.Range("B" & Rows.Count).End(xlUp).Row + 1
'Ciklus, ami kikeresi a keres$ értékhez tartozó sorokat a WS lapon 'az előzőleg kikeresett "kezd" értéktől kezdve For sor = kezd To usor 'Ha WS lap 5. (E) oszlopa aktuális sorának az értéke =keres$, If WS.Cells(sor, 5) = keres$ Then Range("O" & sorM) = sor 'az O oszlop sorM-edik cellája az akt. sor száma lesz, 'a P oszlopba pedig bekerül az INDIREKT függvény Cells(sorM, "P") = "=INDIRECT(""'Árlista'!D""&RC[-1])" sorM = sorM + 1 'sorM értékének növelése 1-gyel Else Exit For 'Ha már a WS.E <> keres$, kilépünk a ciklusból End If Next End If
'A méret beírásakor beírja az akt. sor L oszlopába a Főcsop_Alcsop_Méret nevet. 'Erre hivatkozik a H oszlop képlete. 'Ez a sor a küldött fájl makrójában az M2-be írt, írd át! If Target.Column = 5 Then _ Range("L" & sor) = Cells(sor, 3) & "_" & Cells(sor, 4) & "_" & Cells(sor, 5)
Application.EnableEvents = True End Sub
Az Árlistához rendelt makró nem változott, a Module1-ben lévőt rendeltem a gombhoz. Az utóbbi az indító lap (Árajánlat) celláit írja át az Árajánlat első üres sorának a megfelelő celláiba.
Minden sorban lenne egy terméknév pulssz két cella az egyikben egy utoljára bejövő mennyiség és mellette egy másikban pedig a dátum, hogy mikor változott meg utoljára a mennyiség.
Nagyon érdekes megoldás. Jó sok munkát fektethettél bele. Nagyon szépen köszönöm!!!
Csak nekem egy picit így már bonyolult, mert nem látom át teljesen a makrók / gomb működését.
Lehet hogy nekem sem kéne bonyolítanom, és azt amit az előbb leírtam úgy kellene megoldanom, hogy egy munkafüzetlapra másolom az árajánlatot, az árlistával, és a végén elrejtem ami nem kell?
Hol van a cella, amit módosítasz? Egyetlen cellához, egy teljes oszlophoz, vagy egy meghatározott területen lévő cellákhoz szeretnéd ezt a beírást létrehozni?
Nem az "Árlista" lapon akarom kiválasztani, hanem az "Árajánlat" lapon, a 17. sortól, a 41. sorig. (Be is állítottam a listákat, a méret kivételével... Ez nem ment, de elnevezéssel ezt már elméletileg meg tudom oldani.)
Gyakorlatilag, ha kész akkor csak az "Árajánlat" lapon kell dolgozzak. A segédszámítások az "Árlista" erre elkülönített (rószaszín) területén jelennének meg.
Az árlista lapon csak elkülönítettem egy területet (rózsaszín) azoknak az adatoknak a számára, amelyeket segédként valahol meg kell jelentetni, mint például a makró "kezd" értéke, vagy az "Árajánlat" lap 17.sorának főcsoport&alcsoport&méret összefűzve. És mint láthatod csak az első terméknek csináltam helyet (Árajánlat 17.sor), a többi sornak, lehet hogy még kellesz hely, de ezt még nem látom át világosan. Végül is ha a 17. sorra már működik, onnan remélem már magam is boldogulok, és át tudom bővíteni az alatta lévő 24 sorra is.
Az "Árlista" zöld területe az amit eddig csináltunk. Ezt szerettem volna átvinni az "Árajánlat" lapra, csak hát nem olyan egyszerű mint gondoltam.
Neked ez lehet hogy zavaró, nekem viszont ez a súgás a hogyan is csináljam tovább kérdésre :-)
Az én meglátsom szerint az általad írt makrót kell áttenni az "Árajánlat" lapra, és módosítani hogy a D17 -et figyelje induláskor az első terméknél, (a másodiknál a D18 -at, harmadiknál D19 -et, így tovább D41 -ig.)
Az első terméknél a méret pontos beazonosításához az adatok az "Árlista" lapon a rózsaszín részen jelennének meg. A "kezd" értéke jelenne meg az "Árlista!C22" -ben a meddig (ennek nincs neve a makróban) pedig az Árlista!C23. (Ezt nem tudtam megoldani, mert az "Árajánlat" - on futó makrót nem tudtam módosítani hogy az "árlista" lapba írjon.)
Ezek után már egy sima OFSZET -vagy SZÓKÖZ operátor-, az Árajánlat H17-ben kiszámolja az árat a Árlista!C25, és a kategória alapján.
A makró végül is teljes egészében csak azt szolgálja (ha jól tudom), hogy a legürdölű menüknek a méret sorát leszűri az adott termék méretválasztékára. Utánna már az így kiválasztott 3 jellemző (főcsoport&alcsoport&méret) összefűzése adja az OFSZET függvény számára a "mit keressen" útmútatást.
Alakítottam az Árlista lapon, pontosabban az arról készített, Árlista (2)-n.
Mivel a tartományod folyamatosan bővülhet, nem szerencsés dolog adott sorok (58:260) közötti keresés.
Az új lapon elrejtettem a B:T, és az AE:AF oszlopokat. Adtam egy kitöltendő cellát a mennyiséghez, hogy a vevővel való megbeszéléskor azonnal mondani tudd neki a kiválasztott darab(ok) teljes árát.
Mikor megegyeztetek a V4:AB4 cellák adataiban, az "Árajánlat lapra" gomb beviszi ezeket az értékeket az Árajánlat lap első üres sorába.
Van egy cella aminek az értékét ha megváltoztatom akkor a mellette lévő cellábban lévő dátumnak meg kellene változnia az aktulális dátumra (tehát jelzi, hogy mikor lett utoljára változtatva a cella értéke).
Tudsz az érvényesítéssel más lapra hivatkozni, de csak úgy, hogy előbb nevet adsz a tartománynak, és ezzel a névvel hivatkozol rá. Nehéz megjegyezni a neveket, de van hozzá egy segítség. Mikor az érvényesítésnél beírtad az = jelet, F3 billentyűre megjelennek az addig megadott nevek, amikből választhatsz.
Ha jól értem, az Árlista lapon akarod kizongorázni az egyes tételeket az A4:D4 cellákban, és ezeket egymás után megjeleníteni az Árajánlat lap 17. sorától kezdődően.
Azt próbálom megcsinálni, hogy az "Árajánlat" fülön szépen lehessen dolgozni, ott vinném be az adatokat, és ott jelenne meg az ár. Csak a függvény átírása nem sikerül, mert nem tetszett neki az én kis naiv elgondolásom, hogy majd "Árlista!..." módon hivatkozgatok a másik lapra, hogy onnan vegye az adatokat....
Meg nem tudtam, hogy a makrót egymás alá másolom 25-ször, (25 termékbeviteli sor van), és a
"If Target.Address = "$B$4" Then"
sorban átírom a "$B$4" -t a 25 megfigyelt cella nevére, vagy hogy is pontosan?
És még felmerült egy kis probléma azzal is, hogy az "Árajánlat" lapon, a méretnél , az érvényesítés nem enged másik lapra hivatkozni.. :-((
Úgy gondolom, hogy a zöld hátterű területről kell venni az árakat, megcsináltam azzal.
Az volt az egyik fő hiba, hogy a C4 cella érvényesítését nem írtad át. Most is a példa szerinti S1 és S2 cellából vette az adatot (az üres stringeket), holott már az F1 és F2-ből kellett volna.
A másik, amit már írtam, hogy nem a kellő címet írtad a makróba a beírás ellenőrzéséhez.
Azért nem találja, mert az Árlista lap D (4.) oszlopában keres. Mellesleg én sem találom, pedig én mindenhol keresem. A Tipusnevek!A144:A162 tartományban látok ugyan egy halom méretet, de nem tudom – és a makró honnan tudhatná – melyik méret mihez tartozik?
A makróban a Target.Address = "$C$4"-nél a figyelt cella címét átírtam "$B$4"-re, mert ennek a beírásakor kellene ehhez a Fő_alcsop-hoz megkeresni a kezdő- és záró sort.
Az az elrendezés, amit előbb adtál, jobb, világosabb, áttekinthetőbb.
Addig jutottam, hogy a hiba ebben a sorban keresendő:
kezd = Application.WorksheetFunction.Match(keres$, Columns(4), 0),
Feltettem a doksit.
Az első mint oldalt csak azért tettem oda, hogy jobban lásson mi lenne majd a vége a dolognak, de azt csak a régiből kimásoltam, így nem működik, csak a látszat miatt.
Az árlista oldalon van a lényeg.
A tipusnevek oldalon vannak a legördülő listához a csoportok.
A méretek nem jól működik, mert nem sikerül meghatározni az oszlopban a kezdő sor, és a végső sor helyét...
A kezd nevű változóba bekerül a HOL.VAN függvénynek megfelelő VB-s MATCH függvény eredménye, a keres$ első találati helye a C oszlopban:
és ezt az értéket azonnal beíratjuk az S1 cellába.
Azt levettem, hogy a "Columns(3)" lehet a C oszlop harmadik sorától, vagy valami ilyesmi, de hogyan módosítsam ezt a paramétert az E oszlop 59 sorától-ra ? :-)
Beírhatsz egy új sor, mondjuk a Dim ... alá. Legyen ez Range("O1") = "" . Amikor az alcsoportot kiválasztottad, üressé teszi az O1 cellát, és akkor látszik, hogy ki kell választani a méretet, nem maradhat benne az előzőleg bevitt adat.
Egy makró érvényes, a másik csak egy kis maszat, törölhető.
A küldött füzet lapfülén jobb klikk, Kód megjelenítése. Beléptél a VB szerkesztőbe. Bal oldalon látod, hogy a füzet Munka1 lapja van kiválasztva, jobb oldalon ott van a
Private Sub Worksheet_Change(ByVal Target As Range)
kezdetű makró. Az egészet jelöld ki, másold, bal oldalon a saját füzeted lapját (ahol a kiválasztásokat akarod elvégezni) jelöld ki, és jobbra másold be a kódot.
Az ilyen jellegű makrók akkor indulnak automatikusan, mikor a lapra beviszel egy adatot. Az
If Target.Address = "$N$1" Then sor azt adja meg, hogy akkor végezze el a következő, End If utasításig tartó műveleteket, ha ez a bevitel az N1 cellába történt.
Nézd meg itt a fórumon pippancs 17586-os hozzászólását, ami megmutatja, hogyan kell a sor- és oszlopcímekből névvel megjelölt tartományt létrehozni.
Azt megtaláltam hogy hogy a fejlesztőezközök/makrók/szerkesztés menü alatt tudom a saját celláimra átírni a makrót, de hogyan tudom az ott található két makrót (ha egyátalán mind a kettő makró?), átteni az én munkafüzetembe?
Én sem ragaszkodom a bonyolúlt, és plusz munkához.. Ez a gyakorlatban úgy néz ki hogy egy másik munkafüzetlapon van egy megrendelő nyomtatvány, és azon látszik minden. Színek, elemek, munkalapok, fogók, stb... (Ezen fog majd működni a választós rész) És ezt szoktam kinyomtatni a vevőnek. Már én sem tudom mindig, hogy melyik elemnek van szériaméretben ajtaja, és azért jó ha a saját hülyeségem ellen is véd :-) A másik gyakori eset, amikor az árajánlatba ölt munka után a vevő tizedjére is a "Mia lenne ha az inkább fiókos lenne?" "Mi lenne ha ez kisebb lenne 10 cm-el, az meg nagyobb?" és bizony itt kezd elpattani a cérna, de milyen jó lesz ha klikkelek egyet és már látjuk is az eredményt, aztán nyomtat, vagy ment másként .pdf és már küldöm is.
Nekifekszek a makros változat feldolgozásának, és biztos hogy jelentkezek hol is akadtam el ... :-))
Mikor az N1-be beírod az alcsop-ot, indul a makró.
Egy keres$ nevű változóba összefűzi a Fő- és alcsoport kiválasztott értékeit:
keres$ = Range("M1") & "_" & Range("N1")
A kezd nevű változóba bekerül a HOL.VAN függvénynek megfelelő VB-s MATCH függvény eredménye, a keres$ első találati helye a C oszlopban:
kezd = Application.WorksheetFunction.Match(keres$, Columns(3), 0), és ezt az értéket azonnal beíratjuk az S1 cellába:
Range("S1") = kezd
Ettől a sortól egy ciklus indul a C oszlop celláin lefelé:
For sor = kezd To usor (az alsó sort az usor = Range("A" & Rows.Count).End(xlUp).Row + 1 határozza meg).
Mikor az aktuális sor 3. cellája már nem azonos a keres$ értékével:
If Cells(sor, 3) <> keres$ Then, akkor az S2 cellába bekerül a fölötte lévő (még azonos) sor száma:
Range("S2") = sor - 1, és kilépünk a ciklusból:
Exit For
Az O1 cella érvényesítése erre a két, sorszámokat tartalmazó cellára hivatkozik az INDIREKT függvénnyel, így sikerült elérni, hogy mindig a kiválasztott Fő_al-nak megfelelő méreteket adja.
Ez a lényege a makrónak, a többi helyfoglalás a változóknak, és az eseménykezelés tiltása, -engedélyezése (bármit is jelentesen). Az utóbbit majd valaki szabatosan leírja.
Nem kell félni a makróktól, nem harapnak.
Az A oszlopban feltételes formázással láthatatlanná (háttér színével megegyezővé) teheted a sokszor szereplő egyforma adatokat, de kellenek a segédoszlopokhoz.
A segédoszlopokat elrejtheted, sőt, az egész táblázatot is, mikor már minden rovatát kitöltötted.
Na igen, ha webshopba szánod, pl. letölthető árkalkulátornak, akkor ez a szépséghiba nem megengedhető.
Ha viszont személyesen akarod használni, és azzal a céllal, hogy gyorsan kikeresd egy termék árát, akkor úgyis tudod, hogy mi a termék és milyen paraméterei vannak. Az meg nem a táblázatból fog kiderülni számodra, hogy egy adott bútor választható-e 350 mm-es ajtóval, vagy sem. Szóval akkor egyszerűen nem választasz olyan paramétereket, amelyek hibát eredményeznek.
Nyilván, meg lehetne csinálni bolondbiztosra is, csak kérdés, hogy kell-e, megéri-e. Én biztos nem erőlködnék. De lehet, hogy a bútorasztalosok nem olyan lusták, mint a programozók :)
Igen látom az én gondolatmenetem csak akkor működne, ha az E oszlop adatait csoportosítanám egy legördülő menűhöz, az "O1"-be, de elég nehéz lenne mindent elnevezni úgy hogy ne legyenek átfedések a csoportok között... Kialakul lassan a megoldás csak a makróhoz abszolút nem értek, és mindenféleképpen olyan megoldást akarok amit 100%-ban átlátok működésileg.De muszály fejlődni...
Nézzük a kérdéseket:
Ha jól sejtem az X oszlop az törölhető nincs jelentősége?
A "segédoszlop2" az a keresésbe segít, de a "segédoszlop1" jelentőségét nem látom.
És nem értem a makro mi alapján tudja megadni egy választott termék kezdő (S1), és záró sorát(S2).
Kezdetnek ennyi kérdés, de biztos lesz még mire át tudom ültetni a teljes termékpaletára a dolgokat.
Most jut eszembe! A makrót nem kell indítani, azért hiszed, hogy anélkül is működik.
Ez egy eseményvezérelt makró. Árgus szemekkel figyeli, mikor változik meg az N1 cella értéke, és akkor sebtében beírja a két értéket az S1 és S2 cellába. Az O1 érvényesítése csak erre vár, és a kellő helyről veszi a listája értékeit.
A makró ahhoz kell, hogy a kiválasztott fő- és alcsoporthoz tartozó kezdő-, és zárósort kikeresse. Ennek alapján adja az ezekhez tartozó méreteket az O1 érvényesítése. Nélküle a méret érvényesítés meghalna, vagy mindenhez mutatná az összes létező méretet.
Látom, Jimmy nyert az ofszet-es, hol.van-os függvényével, pedig a =HA(HIBÁS(HOL.VAN(S3;D:D;0));"";INDIREKT(P1) INDIREKT(S3)) képletben hibakezelés is van. Amíg nem választod ki a méretet, hibára futhat (az ofszet-es is), ha az újonnan kiválasztott csoportban nincs olyan méret, mint ami az előző választásból benn maradt az O1 cellában.
Érdemes az ofszet-es képletbe is betenni ezt a hibakezelést.
Nos nagyon nagy vagy! Bár egy kicsit módosítottam a dolgon, de a két segédcella nagyon sokat segített a helyes meglátáshoz, mert bár én is errefelé keresgéltem a megoldást, de Te (Ti) kellettél (kelletetek) a sikerhez. Én ezt írtam be egy cellába és makró nélkül is megoldódik a probléma:
Csináltam egy képet, de ez csak részlet, ettől több adat van sorokban, de mindegyik ennyi oszlopból áll, és ilyen "hármas" kategória felosztásba belefér. Én is gondolkodtam olyanba, hogy az első és a második kategória már jelent egy sorszámot és ahoz adódik hozzá a harmadik kategória HOL.VAN fügvénye és így az összeg meghatározza a tényleges helyet de nem jöttem rá mivel lehetne megoldani...
Csak felmerült egy kis probléma. A lényeg az lenne hogy egy táblázatból kellene az oszlop és a sor álltal meghatározott cella értékét visszaadni. Ezt mint Jimmy the Hand elmndta az OSZFET és a HOL.VAN függvényekkel meg is oldottam. De a probléma az lett, hogy mivel a változókat legördülő listából adom meg, így egy olyan nagyon hosszú lista keletkezik hogy görgethetem egy hétik is míg kiválasztok valamit. Ha viszont a legördülő listákat egymásba ágyazom akkor szétesik a fent említett két függvény.
Hogy jobban érthető legyen elmondom hogy mihez kell:
Konyhabútorokat készítek, és az árajánlatokat excelben szoktam csinálni. Van egy árlistám ahol a legtöbb elem ki van számolva. Példáúl "Alsó elem 2 ajtó 800 mm széles" , és ennek van több ára attól függően, hogy milyen kategóriájú ajtó megy rá. Azt nem kell mondanom, hogy nagyon sok elem van, sok méretben. A végső feladat az lenne hogy egy másik munkafüzet lapján kiválasztom egy legördülőből a kategóriát, egy másik cellában az elemet, és kiírja egy harmadik cellában a hozzá tartozó árat. Ez menne is, csak be kellene ágyaznom a legördülőket egymásba, mint példáúl Alsó elem -> 2 ajtós -> 800 mm széles. Csak ha beágyazom akkor a fenti függvények nem jól működnek mert a HOL.VAN fügvénnyel nem tudom meghatározni a sort. Mert ugye az már csak az adott "szülő" legördülő listától számol.
Remélem értelmesen meg tudtam fogalmazni a kérdést.