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.
Szia! Használd a KICSI, NAGY, SORSZÁM függvényeket. A legritkábbra most kapásból nem tudom a választ de más nem mondja meg utánanézek. Elvileg: {=MIN(DARABTELI(A1:A13;A1:A13))} tömbképlet megadja ezt is
Azt szeretném megkérdezni, hogy mi okozhatja egy sima excel fájl megnyitásakor a "Fájlhiba:az adatok elveszhetnek" hibaüzenetet.
Az érdekes az, hogy csak akkor jelenik meg ez az üzenet, ha egy adott gépről (mindig erről a gépről ) valaki előzőleg már megnyitotta ugyanezt a fájlt, esetleg beleírt egy értéket (mondjuk egy cellához megjegyzést szúrt be), majd elmentette és bezárta. Ezután több különböző gépről már csak a fent leírt hibaüzenettel lehet a fájlt megynyitni (érdekes, hogy vannak olyan gépek is amelyek simán, hibaüzenet nélkül nyitják meg). Vajon mi lehet ennek az oka?
Természetesen megengedhető a nagybetűsítés de nem csak ez alkalommal szeretném elsikálni a problémát : Ha ez tényleg így van ez egy komoly gond lehet. Ilyen kivételej nem szabadna, hogy legyenek hibaüzenet nélkül hiszen a mezei user ráhagyatkozik az excelre.
Pénzügyi-kontrolling területen azért néhány szót rövidítünk pc-vel. ( számítógépnek, profit center, production cost stb. ) Ez mellé azért sanszos hogy valaki még odabiggyeszt egy S-sel kezdődő szót, szórövidítést.
Konkrét éles esetben amikor nincs mód, idő keresztellenőrizni akkor azért ez okozhat ez némi gondot.
Ezenfelül ki tudja, hogy vannak más betűkombinációk is aminél elfogadod, hogy a SZUMHA nem összesített semmit közben pedig kellett volna.
Abban szeretném a segítségeteket kérni, hogy mi modon lehetne az exponencinális függvényt létrehozni excelben? Az =exp(szám) parancs sajnos nem működik. Vagy saját függvényt kell rá írni?
Kaptam egy excel file-t havi pénzügyi számokkal angol excel-lel dolgozó kollégámtól. Megnyitottam a magyar excel-lel és meglepve tapsztaltam, hogy nálam más a végösszeg.
A táblázat alapvetően szumha függvényekkel szedi össze más táblázatokból az eredményeket.
Egy cella okozta az eltérést. Eddig úgy tudtam, hogy a szumha kis-nagybetűt nem különböztet meg.
Most viszont az eredménytáblámba "pcStationery"-re szumházva a forrás file "PCStationery" sorait nem összegzi.
Ez a pcS ( kis "p" - kis "s" - nagy "S" ) valami vezérlőkarakter ? Vannak még más ilyenek is ?
Angol excelben miért nem gond ez - miért csak a magyarban ?
Elnézést ha ez a téma már volt ezen a fórumon, most nincs időm visszaolvasni. Köszönet minden tanácsért !
No igen. Minden viszonylagos. Kinek mi a szemét, és mi a hasznos. Bizonyára vannak esetek, amikor jól jön(nek) eme funkció(k) - már ha júzer egyáltalán ismeri őket -, és vannak esetek, amikor feleslegesek. Ám ez a topic nem erről szól.
Sajnos mind a Word-nek, mind az Excel-nek sajátossága, hogy sok szemetett is elment a fájlokba. Nálam már sok alkalommal segített, hogy egy M$ fájlt OOo-val (OpenOffice.org-gal) nyitottam meg, aztán vele ismét elmentettem open document formátumban is, és M$ formátumban is. Mindenféle változtatás nélkül. Az open document formátum eleve tömörített, így kisebbek a fájlméretek, csakhogy a M$ programok nem tudják kezelni őket. :( Ám a legtöbb esetben a M$ formátunban is lecsökkentek a fájlméretek. Volt, amikor kevesebb, mint a fele lett. A szemét nem lett elmentve. Próbáld ki!
Megér egy próbát, mentsd el más néven a dokumentumot.
A Wordnek megvan az a sajátossága, hogy a doc eltárolja a benne végzett módosításokat, amik növelik a méretét. Ha az új fájl mérete kicsi, OK. Ha nem, akkor egy újonnan megnyitott doc-ba másold át a régi szövegét, mentsd el, ezután csatolj.
Mivel sok diagramot kell csatolnod, érdemes az első csatolást makróra rögzíteni, billentyű kombinációt rendelni hozzá, és a többit már ezzel csatolni.
Adott egy Form, melyen van egy Combobox, melynek a Text-e alap állapotban üres. Labelekben megjelennek különböző adatok, melyek a Combobox értékétől függnek. Gombnyomásra megnyílik egy másik Form, ahol a Labelekben megjelenő értékeket lehet módosítani a "Lezárás" gombbal. Amennyiben a Combobox üres, nincs is baj, de ha nem akkor a Combobox folyamatában hibát jelez. A probléma az, hogy egy olyan munkalapon próbálja végrehajtani a feladatot ami nem is szerepel a Combobox eseményében. A konkrét kérdés igazából az, hogy a Combobox Click eseménye miért fut le amikor nem is történik benne változás és nem is kattintok rá csak egy másik Form bezárul, vagy ha ez mindenképpen lefut, hogyan lehet, hogy olyan munkalapra megy, ami nem is szerepel az eseményben.
Számomra rejtélyes ügyben szeretnék segítséget kérni. Excelből Wordbe másoltam át sok diagramot, az eredmény egy 16 MB-os doc lett, nekem pedig kisméretű fájl kellene. Már rájöttem, hogy képként kellett volna átmásolni a diagramokat Irányított beillesztéssel, nem pedig sima vágólappal. Nekiálltam kitörölni az ábrákat és az említett módon újra beilleszteni, de a doc fájl mérete nem változott - még akkor is 16 MB maradt, amikor minden létező ábrát és szöveget kitöröltem belőle. Meg tudná mondani valaki, hogy hogyan tudnám csökkenteni a méretet úgy, hogy csak az ábrákat cserélem?
szűrő mindent átenged, aminek az első karaktere chr(64)-nél kisebb. Pl. "#", " ", "3vnsfgder" Ezek mind átmennek. Attól függően, hogy az 1-2. feltételben beállított számhatárok micsodák, ezek a karaktersorozatok átmehetnek mind 3 szűrőn, és nem lesznek pirosak.
Cells(2,2).Value = 3 ), majd a makró futása után (a táblázat felhasználásakor) "jelezzen a cella", ha esetleg valaki szám helyett szöveget írna ide.
Bocs, de nem inkább érvényességi feltételt kellene beállítani erre cellára, nem feltételes formázást?! Ilyenkor a szöveget be sem engedné írni a cellába. (Normál Excelben Adat/Érvényesítés menüpont, de le is makrózható) Üdv József
Makrórögzítéssel vittem be. A 100 alatti, az 500 fölötti, és a szöveges értékek hátterét pirosítja ki. Ha a betűt akarod színezni, az Interior helyett írj Font-ot.
Úgy gondoltam, hogy makróból beírok egy számot egy adott cellába ( mondjuk Cells(2,2).Value = 3 ), majd a makró futása után (a táblázat felhasználásakor) "jelezzen a cella", ha esetleg valaki szám helyett szöveget írna ide.
Minden lehet. Nézegettem a beállításokat, de nem emléxom olyanra, hogy sorok vagy oszlopok védelme. Most nincs nálam excel, csak OOo Calc, abban nincs ilyen opció. Majd holnap megnézem a munkahelyemen. De nem is ez a fontosabb, mert ez csak nagyon ritkán fordul elő. A cella elmozgatás az ami rendszeresen megtörténik, aminek a következtében egy csomó számolás hibát ereményez, és eléggé macerás a visszakeresés, hogy hol kefélődött el a dolog. Szóval minden ötlet érdekel.
Jajj. Az első Sub-ból a Sheets("Munka2").Range("A1") = Sheets("Munka2").Range("A1") + 1 sor törölhető. Ez csak egy ellenőrző/tesztelő szerepet játszott. Nincs rá szükség.
Sub ChangedAreasInit() ChangedAreas = 0 Sheets("Munka2").Range("A1") = Sheets("Munka2").Range("A1") + 1 End Sub
Munkalap modulra Private Sub Worksheet_Change(ByVal Target As Range) ChangedAreas = ChangedAreas + 1 If ChangedAreas = 2 Then Application.Undo MsgBox "Nono. Ne húzgáld a cellákat." End If Application.OnTime Now + 1 / 864000, "ChangedAreasInit" End Sub
Azon alapszik az egész, hogy ha cellamozgatás van, akkor a Worksheet_change esemény 2x hajtódik végre. Egyszer az elmozgatott, egyszer pedig a felülírt cella váltja ki. Ha minden kiváltott eseménynél eggyel növelem a változások számlálóját, akkor a cellahúzás során a számláló értéke kettővel nő. Vagyis, ha az érték 2, akkor cellamozgatás történt. Ekkor a kód végrehajt egy visszavonás (Undo, Ctrl+Z) műveletet. És minden változás után 0.1 másodperccel nullázom a számlálót.
Időzítés problémák esetleg lehetnek.
A cellamozgatás során a 2 change esemény egymás után gyorsan lefut, nincs közte 0.1 másodperc, tehát a számláló eléri a 2 értéket, és a kód figyelmeztet, illetve visszavonja a húzást. A felhasználó viszont valószínűleg nem fog 0.1 másodpercen belül 2 különböző cellát módosítani, ezért a számláló sosem éri el a 2-t, és nem fog a kód téves risztást küldeni.
Ha meg a felhasználó villámgyors, akkor sem történik katasztrófa, legfeljebb egy művelete visszavonódik, és nem érti, hogy miért ne húzgálja a cellákat. :)
Kísérleteim szerint a sorbarendezés meg a képleteket tartalmazó cellák automatikus frissülése nem zavar be. Más probléma persze előfordulhat, sosem lehet tudni.
A kérdésem az lenne, hogy makróból be lehet-e állítani egy adott cella (Cells(i,t)) feltételes formátumát, mégpedig azt, hogy az adott cella színe legyen mondjuk piros, ha a futtatás után létrehozott táblázaban valaki szám helyett szöveget vagy adott számtartományon kívüli számot írt a cellába?
A sor- és oszlop-törlést nem tudtam reprodukálni. Még ha egy egész oszlopra is megszüntetem a zárolást, akkor sem tudom törölni a védett munkalapon. Viszont a munkalap levédésekor meg lehet határozni, hogy mit tehet és mit nem tehet az, aki nem tudja a jelszót. Itt olyan is van, hogy oszlopok, sorok törlése. Nem lehet, hogy ez van rosszul beállítva nálad?
A cellamozgatás letiltásán még gondolkodom. Van egy tippem, csak még nem tudom, működik-e...
"Egyébként ugyanezt írja a DJCarlos által javasolt link is, amiben nagyon helyesen ajánlja a más formátumú oszlopok azonos formátumúvá konvertálását, viszon az, hogy nem egészíti ki azonos hosszúságúra az egyes oszlopok adatait, hibát okozhat."
Csatlakozom az előttem szólóhoz. Ez az összefűzős módszer az oszlopok adatainak összefűzésével nagyon jó találmány, én is sikerrel alkalmaztam több esetben. Nem csak makróval, hanem képlettel is használható, és egy kis furfanggal megspékelve hihetetlenül egyszerűen meg lehet oldani vele viszonylag bonyolult problémákat.
Amit hozzátennék még 6330-hoz: 1) Nem szükséges különválasztani a feladatot 2 rendezési lépésre. Össze elhet fűzni az F oszlopban A-tól E-ig mind az öt oszlopot, aztán egy lépésben sorbarendezni. Az összefűzés sorrendje az legyen, ami az oszlopok prioritása a sorbarendezésben. 2) A számértékek szöveggé alakítására ezt a javaslatot kaptuk: =BAL(A1&" ";20) Ezzel az a probléma, hogy a számok sorrendje így megváltozik. Pl. ha 1-től 10-ig vannak a számok, akkor a sorrend ez lesz: 1, 10, 2, 3, 4, 5, 6, 7, 8, 9. Ez azért van, mert ha jobbra teszem a számok mellé a szóközöket, aztán egyforma méretűre vágom a kapott sztringeket, akkor a számjegyek helyiértéke megváltozhat. Ha viszont balra teszem a szóközöket, akkor nem. Ezért szerintem a következő képletet kellene alkalmazni a szám sztringgé való alakításakor: =JOBB(" "&A1;20)
Ara tudtok-é valami megoldást, hogy egy munkalap - mely jelszóval védett, de tartalmaz módosítható cellákat is, hogy fel lehessen tölteni adatokkal - celláit az egységsugarú felhasználók ne tudják "elmozgatni" a helyükről? Illetve, sorokat, oszlopokat ne lehessen törölni? Mert sajnos ez is előfordult már. :(
Az biztos, hogy kissé nehézkes, de jól működik. Sok adattal kipróbáltam, jó az, amit a #6330-ban, és az azt kijavított #6332-ben leírtam.
Egyébként ugyanezt írja a DJCarlos által javasolt link is, amiben nagyon helyesen ajánlja a más formátumú oszlopok azonos formátumúvá konvertálását, viszon az, hogy nem egészíti ki azonos hosszúságúra az egyes oszlopok adatait, hibát okozhat.
Miért gond a makró? A rendezések előtt bekérheted az oszlopok sorszámát.
Hát igen, de így roppant nehézkes a dolog (főleg, ha makróból csinálod: mert azt nem lehet csinálni, hogy egy parancssorral lerendezed a teljes tartományt, majd egy következő parancssorral újból az egészet a másik 3 kulcs szerint, mert akkor az első rendezettséged felborul és marad a legutolsó rendezettséged. Ezt csak úgy lehet, ha a másodszori rendezést már az első egy meghatározott tartományára végzed el. Itt viszont felmerül a tartomány problematikája, hogy hogy határozod meg előre azt a tartományt, amin belül másodszor rendezni akarsz.)
Szumma szummárum, igencsak bekorlátozza ez a max 3 kulcs az excel adatbázisként való használatát...
Három kulccsal lehet közvetelnül rendezni, én is úgy tudom. De akkor többször kell rendezni, pl. 6 kulcs szerint akarsz rednezni egy tartományt, akkor megrendezed az egészet 3 kulcs szerint, majd újból a megrendezett egészet a maradék 3 kulcs szerint.
Kérdésem az lenne, hogy a Range("A1:E4, G4:I7, F16:H21").Select kijelölést, hogy lehet megoldani a Range(Cells(1, 1), Cells(4, 5)....?...).Select képlettel.
Sub számbe() Dim a a = Application.InputBox("mennyi?", Type:=1) MsgBox a End Sub
A vastagbetűs a lényeg. Ennek ugyan beírhatsz bármit, de Enter után kiabál, hogyha nem számot írtál be, és addig nem enged tovább, amíg nem korrigálsz.
Kérdésem, hogy egy táblában be lehet-e valahogy állítani a következőt: A1 cella színe mindaddig legyen mondjuk piros (vagy villogjon, mindegy, csak jelezzen), ameddig A1 cella értéke nem egyenlő a B1 cella értékével.
Hát... egy tippem van, de nem vennék rá mérget, hogy működni fog. És nem is tudom tesztelni. Szóval abszolút bizonytalan, de ha nincs más elképzelés, akkor próbáld ki.
Úgy gondolom, hogy valahol a rendszerleíró adatbázisban van definiálva, hogy ha egy külső alkalmazás azt mondja "Excel", akkor mit kell elindítani. A regedit programban rákerestem az excel.exe teljes elérési útvonalára, és ezt a két helyet találtam:
Az itt lévő értékeket kellene szerintem módosítani. Az "alapértelmezett" nevű érték egyértelmű, ide a régi excel verzió elérési útját írd be. Hogy a "command" nevű kriksz-kraksz fontos-e, azt nem tudom, és azt meg végképp nem, hogy mit kellene oda írni. De ezt esetleg megnézheted egy olyan gépen, ahol a régi excel van telepítve.
FONTOS!
Azt bizonyára tudod, hogy az ember nem játszadozik a registry-vel, ha jót akar. Szóval, mielőtt barbrálni kezdesz vele, tegyél meg minden biztonsági intézkedést, hogy vissza tudd állítani az eredeti állapotot, ha valami nem jól sül el.
Maradt egy-két apróbb gondom, de a legfontosabb, hogy hogyan lehet egy tömböt "antitömbösíteni"?
Szóval adott egy terület tele számokkal és akkor F2 és Ctrl+Shft+Enter-rel lehet belőle tömböt csinálni (ami után már nehezebb piszkálni az egyes elemeket) De hogy lehet ezt a tömböt visszafokozni egyszerűen számok halmazává? (Ez gondolom nem nehéz, csak nem találtam ma megoldást)
Egy olyan kérdésem lenne hogy adott egy program ami a régi excelbe exportál, de már fent van az új is. Viszont. Most hogy fent van az új ebbe nem tud exportálni, de valahogy nem tudom rajta beállítani hogy ne az újba próbáljon exportálni hanem a régibe. Tehát kérdezem én, hogy lehet azt megadni az XP-be hogy a régi excelt indítsa el alapértelmezettként? Mert hogy úgy exportál hogy indítja az excelt és átmásolja. Sürgősen kéne egy megoldás!
Van-e megoldás az Excel-ben arra, hogy egy nagyobb számhalmazból (akár több oszlopban, vagy csak 1-ben) készítsén egy kimutatást az adatok megoszlásáról és azt egy táblázatban rendezze. Pl. adott 100 ember magassága és azt 10 adott terjedelmű kategóriába rendezze . (110-120, 120-130-...)
Mi lehet a legegyszerűbb, nincs erre egyszerű utasítás?
Lehet, rosszul mondtam a SorokVege változó a beillesztések után az új táblázat utolsó sorának értékét tárolja. (SorokVege = ActiveSheet.UsedRange.Rows.Count)
Ezért, a képleten egy picit igazítani kellett, de nem is ez volt a lényeg.
Ez a relatív pozícionálás a makrófelvétel sajátossága, de szerintem ezt általában nem szerencsés használni. Miután megvan a makróban az utolsó sor (ez ugye a SorokVege), ezt az értéket kell a szumma képletbe betenni a következők szerint:
"=SUM(M2:M" + Format(SorokVege) + ")"
(Az "M" a 13. oszlopot jelöli, ahol a szumma oszlopod van.)
Na jó, elismerem, én vagyok a hunyó. Ha jobban figyelek, felismerhettem volna a hibát az első hsz-ból is.... De mindegy most már.
Szóval az a gyanúm, hogy a "=SUM(R[-BeillesztettSorokSzama]C:R[-1]C)" képletben a beillesztett sorok száma változó nincs kiértékelve. Mit szólnál pl. ehhez?
1) Amennyiben nem egy változót adok meg (BeillesztettSorokSzama), hanem egy konkrét értéket, akkor a képlettel rendben elvégzi az összegzést.
Pl. ha így adom meg:
Worksheets("Szűrés").Cells(SorokVege, 13).FormulaR1C1 = "=SUM(R[-14]C:R[-1]C)"
(Ekkor az aktuális cellától felfelé számított 14. és a felfelé 1. cella szummáját adja meg.)
2) Egy forrástáblábla soraiból bizonyos feltételeknek megfelelő cellák értékét másolom át egy új munkalapra úgy, hogy a kiválasztott értékek egymás melletti cellákba kerülnek. Természetesen az új munkalapon is annyi sor lesz, mint a forrástáblában, az oszlopok száma pedig mindig azonos lesz (kb. 20).
3) Igen, több oszlopos, de nem kell minden oszlop alján összegzés. A probléma lényege az, hogy a makrót több különböző forrástáblára kell futtatni, ahol a sorok száma változó. Ezért gondoltam, hogy az adott képletebe egy változó értékét illesztem be (a mindig más helyen lévő összegző cellától felfelé a beilleszetett sorok száma és az egy hellyel feletti cella összege).
4) Az összegző cella közvetlenül az összegzendő állomány alatt helyezkedik el.
1) Mi nem jó? Mi a hiba? 2) Hogyan történik a tábla feltöltése? Adott mátrixot töltesz fel, és bizonyos sorokba esetleg nem jut adat, vagy csak bemásolod a sorokat egymás alá, mindig a következő üres sorba, és kész? Vagy más? 3) Több oszlopos a tábla, és mindegyik oszlop alján kell összegzés? 4) Az összegző cella hogyan helyezkedik el az összegzendő tartományhoz képest?
Ismét lenne egy probléma amit nem tudok megoldani. Egy táblát töltök fel adatokkal és a végén egy adott cellában kell függőleges szummázást végezni, úgy hogy a beilleszett sorok száma mindig változik. Az alábbi képlettel próbálkoztam, de nem jó.
Feltettem az itthoni gépemre, működik is. A demot még nem nézegettem. Szimpi volt a videon a html publikálás. De ehhez úgylátom meg kéne venni a worksheet szervert...
Nem, mi csak a PALO-t használjuk (OLAP-szerver + Excel kliens).
Előnye, hogy a relációs adatbázisokhoz képest nagyon egyszerűen és gyorsan lehet lekérdezni, valamint a riportokat a "mezei" felhasználó definiálja az adott beszámolási igény alapján.
Érdemes első lépésben a demo adatbázist nézegetni, az installálás kb. 4 perc, nem nagyon kell semmit beállítani. (.NET 2.0 keretrendszert előzetesen fel kell tenni)
A két csatolt riport elkészítése darabonként kb. 30 másodperc.
1. A cellát, amiben egy számot adó képlet volt, átírtam Szöveg típusúra. Ezután már hozzá tudtam fűzni egy másik stringhez. (Bár ndrv előző beírása szerint enélkül is hozzá tudtam volna fűzni?) Csak annyi gond volt, hogy ha szövegnek minősítettem, akkor nem tudtam megadni a tizedesek számát és 7 tizedessel fűzte hozzá, de azt már ott a BAL függvénnyel méretre vágtam.
2. A másik megoldás az volt, ezt egy kolleganőm mutatta, hogy
B1=SZÖVEG(A1;"0,00")
és ezután már méretre is volt vágva. Ezek szerint nem a cellabeállítás, szám, baloldali ablakából kell venni a formátumot, hanem a jobboldali legördülőből, ahol már a formátumvariációk vannak.
Sajnos szerintem az excel egyik legnagyobb hibája, hogy csak a cellaformátum átállításával egy értéket tartalmazó cella nem lesz szöveg típusú. Ehhez még az is kell, hogy (a cellaformátum szövegre állítása után) átírod a mező értékét. Csak e két lépés megtétele után lesz valóban szöveg típusú a cella.
Ennél a dolognál sztem az is fontos, hogy mit akarsz elérni: mert ha össze akarsz fűzni két cella értékét, amiben az egyik szám, a másik szöveg típusú, akkor nem kell az értéket szöveggé átalakítani, anélkül is össze tudod a különböző típusú cellaértékeket fűzni az =összefűz() függvénnyel.
Hogy én mekkora izé vagyok, de hogy miért képzeltem azt, hogy ctrl+r kell nekem... Talán annyi a mentségem, hogy nem csak az excel új most nekem, de egy laptopról írok, és még a billentyűzet is új nekem...
Lenne egy számotokra könnyű kérdésem, de nekem ez most megoldhatatlannak tűnik.:(
Eddig az Excel 2000-et használtam, és volt benne egy egyszerű kersésfunkció, ami egy CTRL+R billentyűkombinációval lehetett előhívni. Most Excel 2007-et használnék, de nem találom az adott funkciót:( Van ebben mindenféle (számomra!) idétlen keresési lehetőség, de a régi sima keresést nem találom:( Olyan hiányzik ahol megadhatom egy csella szövegét, vagy ha számot keresek akkor a számot, ill. a töredékét, és ő megkeresi az adott karakterhalmazt az összes cellában, és kiemelve meg tudja mutatni a saját helyén.
Gondolom ez nem nagy tudás, és biztos, hogy valami egyszerű megoldása van, de én nem jöttem rá... Tök ideg vagyok:(
Kicsit OFF: Kb. 1 éve már ajánlottam a nyílt forráskódú PALO elnevezésű OLAP alkalmazást. Most kijött egy új verzió, amiben már szabályokat (Excel-függvényhez hasonló kalkulációkat) is lehet írni benne, így már nem csak egyszerű reportolásra jó. http://www.palo.net/
Február óta használjuk élesben a cégnél sales reportolásra és nagyon bevált. Ha valakit érdekel vagy már használja, nyitok egy topikot valahol. A cuccnak van magyar felülete, de egyelőre nem tolonganak a magyar felhasználók a fórumban (http://forum.palo.net/).
A tököm tele van az Excel helpjével. Életemben először használni akarom a SZÖVEG nevű stringfüggvényt, hogy az szomszéd cellában már kiszámolt B1(pl. 288) értéket átalakítsam egy összefűzhető stringgé. Ennek a második paramétere a "formátum_szöveg". De nem vagyok képes rájönni az ott levő szövegből, hogy ez mi akar lenni. Ha a mintapéldát átmásolom, akkor már kapok stringet, ott % van. Azt le tudom cserélni pl. vesszőre, de másra nem, akkor hibás a képlet. A helpszöveg szerint ide a cellaformázó listából kellene valamit kivenni, és azt szöveg szerint oda kell tenni. De mit tegyek a második paraméterbe, ha én semmit sem akarok csinálni a számmal, csak egy ugyanolyan stringgé alakítani?
Azt gondolom, hogy ha a tulajdonságlapon beállítom ezeket - akkor felesleges a kód, viszont ha egy for ciklusban dinamikusan akarom használni akkor kell. Tökéletes, ha ott egy gomb, amire tudok kattintani, akkor működik. De nem jobb ezt normálisan ComboBox1_Change (gondolom ez akkor következik be, ha a lista valamely elemét kiválasztom.) eseményre, minek kattintgassak egy alibi gombra még pluszba. Elsőre lefuttatam soronként is, észrevettem hogy meghívja magát, de akkor nem tudtam magamnak megmagyarázni, hogy miért. Így már értem, köszi.
Ha a tulajdonságlapon bellítod a RowSource értékét A1:A10-re, a ControlSource értékét pedig C2-re, akkor működnie kell. Ehhez semmilyen eseménykezelő kódra nincs szükség. Egyetlen dolog, amire még figyelni kell, hogy a ControlSource-ként definiált cella csak akkor frissül, amikor a fókusz elhagyja a ComboBox-ot (OnExit esemény). Tegyél a formra még egy gombot is, hogy legyen mire kattintani, és próbáld meg újra: jelenítsd meg a formot, válassz másik elemet a combobox-ban, és kattints a gombra, hogy elhagyd a listát. Működnie kell.
A kód, amit próbálsz, nem az igazi. Az a probléma vele, hogy önmagát hívja meg. A ControlSource tulajdonság megváltoztatása kiváltja az OnChange eseményt, és a ComboBox1_Change szubrutin másodszor is lefut, még mielőtt az elsőnek vége lenne. Próbáld ki, tegyél egy töréspontot a With ComboBox1 sorba, és kövesd F8-cal, hogy mit csinál.
A ComboBox tualjdonságait kóddal is be lehet állítani, futási időben, de ezt célszerű nem a ComboBox saját eseményeihez kötni, hanem pl. CommandButton_Click, vagy UserForm_Initialize, vagy ilyesmi.
Egyébként mindkét tulajdonság (ControlSource ill. RowSource) megadható munkalaphivatkozással is (sőt, igazából úgy kellene, mert úgy a biztos). Pl.: RowSource = "Munka1!A1:A10"
Jimmy, miért nem sikerülhet nekem? Próbálom kézzel a tulajdonság lap segítségével,
Pórbálom kóddal Private Sub ComboBox1_Change() With ComboBox1 .RowSource = "a1:a10" .ControlSource = "c2" End With End Sub
De nem sikerül.
Mit bénázok el? Az értékek megjelennek, de nem adja át a ControlSource-val definiált cellának. Illetve a kódnál csak akkor jelennek meg a vezérlőelemben az értékek, ha vmit beleírok
A RowSource tulajdonsággal azt állítod be, hogy honnan vegye a listát, a ControlSource tulajdonsággal azt állítod be, hogy hová tegye a kiválasztott elemet. Más szóval, amit a felhasználó kiválaszt a listából, az megjelenik a ControlSoure által definiált cellában.
Mi a különbség? ControlSource / RowSource-val. Úgy érzékeltem, hogy mind a kettővel a vezérlőelem tartalmát állítom be. (Biztosan nem, csak vmit nem tudok)
Hát igen, úgyis érzem magam, ezekkel a kérdésekkel, mintha a saját temetésemen lennék!:-)
Jó-jó, hogy levelező képzés, de arra álmomban nem számítottam, hogy informatikából egy nagyon szűk kör számára értékes (érdekes) könyv alapján feltett, a legidiótábban, a legösszefüggéstelenebbül megfogalmazott kérdésekből lesz a számonkérés! Mindegy ez az én problémám, és ez nem is az a fórum, de ha nem probléma feltennék még pár kérdést?! Mindenkinek nagyon köszönöm az eddigi segítséget, és ha tudtok légyszi a következőkben is segítsetek!
1, Kimutatás-diagrammal vészjelzések állíthatók elő, amennyiben idősoros nézetekre trendfüggvényt illesztünk, s ennek más görbékkel kialakuló metszéspontjait vizsgáljuk.
2, Pivot táblázatokban végzett átlagolások esetén sem lehetséges eltérő darabszámot elfogadni a darab-nézet alapján kontrollálva.
3, A sor- és oszlopösszegeket csak akkor szabad számítani a kimutatásvarázslás során, ha ezek valóban aggregálható jelenségeket vonnak össze.
4, Klaszzikus órarendek az Excel kimutatás-varázslójával automatikusan elkészíthetők.
5, Az FKERES függvénnyel lehet, a pivot-tal nem lehet klasszikus órarendet összeállítani, melyben a napok és az időpontok metszeteként a tárgy, a terem és az óraadó olvasható.
6, Idősoros pivot kimutatásokban, ahol az idő az oszlopfejlécen van ábrázolva, alapvető hiba, ha egy mértékegységre való szűrés következtében időszakok tűnnek el sorok helyett!
7, A sor- és oszlopösszegeket mindig számítani kell a kimutatás varázslás során, hiszen ezek ellenőrző összegként funkcionálnak!
Ezek lennének... Bocs, hogy olyanokat is beírtam, ami egy másik kérdés válaszából következhet, de a többi kérdéssel való foglalatosságom közben, a jelenlegi informatikai tudásom, magabiztosságom a "ne mássz a fára, mert elüt a villamos" mondattal jellemezhető!:-)
Bár ez nem excel probléma, és nem vagyok szakértője, de talán tudok segíteni. Ha nincs meg a fájlod valahol mégis, egy másik néven, vagy emailben csatolt állományként, vagy ilyesmi, akkor még azt teheted, hogy elindítod az excelt, azután a feladatkezelőből leállítod. Ezután újraindítod, és ha szerencséd van, feldob egy olyan ablakot, hogy dokumentum-helyreállítás, és talán benne van a fájlod, ha mostanában szerkesztetted, vagy lagalább valami nem túl régi verzió.
Ha ez az út nem járható, akkor itt egy másik megközelítés.
Ha felülírsz egy fájlt, az (bár nem biztos, de szerintem) olyan, mintha törölted volna. Mármint, a rendszer elmenti a z új fájlt egy új helyre, és felszabadítja a régi által lefoglalt tárhelyet. Én törölt fájlok visszaállítási kísérleténél én ezt az utat szoktam követni:
1. Kikapcsolom a gépet (A), amin a törölt fájl van. Törlés után a fájl még ott van a merevlemezen, de az általa lefoglalt terülte szabadnak van nyilványtva, és csak idő kérdése, hogy mikor ír oda valamit a rendszer. 2. Keresek egy másik gépet (B), amire telepítek egy olyan programot, amivel törölt fájlokat vissza lehet hozni. Van ilyen sok, többségük nem ingyenes, de 15 v. 30 napig ingyen használható, ami teljesen megfelel a célnak. 3. Átrakom a törölt fájlt tartalmazó merevlemezt az A-ból a B gépbe, és Secondary Slave -ként konfigurálom, hogy véletlenül se erről próbálja a gép a rendszert betölteni. 4. Enildítom a B gépet, futtatom rajta a törlésvisszavonó programot, és végigszkennelem azt a bizonyos merevlemezt, hogy megtalálja-e. Ha megtalálja, és vissza tudja állítani, akkor jó.
Ha ez kínai, vagy nem vagy biztos a dolgodban, akkor érdemes inkább szakemberhez fordulni, mert könnyű nagy kárt okozni, ha az ember nem tudja mit csinál.
Ismét egy információbróker... őszinte részvétem. Mikulás Tanár úr még mindig tanítja ezt az ostobaságot? Nem jött még rá hogy így soha nem fogjátok megtanulni az excelt?
Nézegess vissza.
Korú és Abigél nevű fórumozók hasonló cipőben jártak tavaly, mint te most.
"A pivot-kimutatások darab-nézete azt mutatja be, hogy" az adott mezőnek hány eleme van az adatbázisban. Aztán azt, hogy ez hogy konvergál a "leíró adatokkal" és a "rendelkezésre álló adathellyel", mindenki döntse el a saját józan itélőképessége szerint...
Fősulin vagyok első éves, és informatikából számomra elég "érdekes" a tematika, nem akarok untatni vele senkit, de a lényeg az, hogy igen nehéz vele bármit is megtanulni! (számomra)
Van egy lehetőség, hogy teszt kérdésekre kell válaszolni (igaz/hamis), és ez alapján kapuunk jegyet!
Feltennék itt 3-mat, és ha valaki tud rá nekem válaszolni, azt nagyon megköszönném!
1,A pivot-kimutatások darab-nézete azt mutatja be, hogy milyen leíró adatok esetén áll rendelkezésre az adathely.
igaz v hamis
2, Idősororos pivot kimutatásokban, ahol az idő az oszlopfejlécben van ábrázolva, alapvető hiba, ha egy mértékegységre való szűrés következtében időszakok nem tűnnek el.
igaz v hamis
3, Pivot táblázatokban végzett összegzések esetén csak nagyon indokolt esetben lehet eltérő darabszámú elemet elfogadni a darab-nézet alapján kontrolálva.
igaz v hamis
Ha bárki tud, légyszi segítsen!
Üdv:Edi
Ui: Ha valakinek etikai aggodalma van, a tanár azt mondta: bármilyen segítséget igénybe lehet venni"
Erre a feladatra az Access a legjobb, de Excelben is gond nélkül meg lehet csinálni. Talán majd valaki ír egy makrós megoldást is, én most képletekkel mutatom meg. Tegyük fel, hogy van egy Be és egy Ki nevű lap a bejövő és kimenő pénzeknek, illetve van egy harmadik lap, ahol az összesítés megy. A Be és Ki lapokon az A2 cellától lefelé vannak a dátumok, B2-től lefelé az egyes számlák végösszegei
Az összesítés lapján a következő képletek legyenek: A2 cella: =HA(Be!A2>0;Be!A2;"") B2 cella: =HA(Ki!A2>0;Ki!A2;"") C2 cella: =Be!B2 D2 cella: =Ki!B2 E2 cella: =KICSI(A:B;SOR(A2)-1) F2 cella: =HA(HIBÁS(FKERES(E2;A:C;3;HAMIS)); FKERES(E2;B:D;3;HAMIS);FKERES(E2;A:C;3;HAMIS)) G2 cella: =G1+F2
Ezeket a képleteket autokitöltéssel lehúzod addig a sorig, ameddig akarod, de legalább annyi sor legyen, mint a bejövő és kimenő számlák darabszáma együttesen. Az E, F, és G ozlopok tartalmazzák a kívánt adatokat. E: számladátumok növekvő időrendben F: számlaérték G: aktuális egyenleg.
sziasztok, van valami, amit nem tudom, excel-ben meg lehet-e csinálni?
adott két táblázat. az egyikben gyűlnek a befizetendő számlák, a másikban a kiadott számlák, vagyis a bevételek. mindegyiknek van ugye egy fizetési határideje
szeretnék egy harmadik táblát, amelybe automatikusan átveszi az adatokat, a bejövőt és a kimenőt egyaránt, ami a csavar benne, hogy szeretném, ha a kettőt összefésülné, a fizetendőt negatív előjellel. és persze lenne egy plusz oszlop, ami az aktuális egyenleget számolja. meg lehet ezt csinálni? nekem az lenne a fontos, hogy ha akármelyik táblázatba új tételt viszek be, megjelenjen az összesítő táblában is automatikusan, ne kelljen átmásolgatni.
Ha jól értem a problémádat, ismeretlen (saját) formátumú.méretű etikettre kellene nyomtatni? Wordben megoldható a dolog: 1. Körlevél varázsló/ Címke 2. A Körlevél varázsló 2. lépésében Címke beállításai Címkegyártó: Egyéb/egyéni és utána Új címke gomb. 3. Egy jó vonalzó és sok próba (értsd szívás :)) segítségével definiálod az új címkét. 4. Ezután ugyanaz a helyzet, mint ismert gyártó esetén
Hogy jó sok időt megspóroljál, először nézd meg alaposan az etikett dobozát, hátha kompatibilis valamelyik gyártó termékével. Esetleg Google-n is rákereshetsz. Üdv József
A Word körlevélbe beviszed az első személy adatait az első "ragacs" szerint.
A többi ragacs első mezője a "Word mező beszúrása" legördülőből a Következő rekord - ezt akármilyenre (apróra) formázhatod - ezután jönnek a személyek adatai. A másodiktól akár másolhatod is a többire.
Köszönöm, a segítséget. Szertném még megkérdezni, hogy ugyanitt hogyan tudnám a létrehozott megjegyzés szövegének betűtípusát (Arial) és méretét is (10) változtani?
Egyébként, ahogy mondtad, valóban felesleges a Cells(i, t).Select sor, de nagyon látványos, ahogy fut :-))
Sziasztok!
Ismét segítséget szeretnék kérni a következőben. Egy adott cellába írt szövegből, a cellához tartozó megjegyzést kell létrehozni, és nem tudom beállítani, hogy a megjegyzésdoboz automatikus méretű legyen a beírt szövegnek megfelelően. Valahol csak egy-két szó, de van olyan is ahol 2-3 mondat a szöveg.
For i = 1 To 1000
For t = 1 To 1000
Cells(i, t).Select
Seged = UCase(Cells(i, t).Value) ’ nagybetűre alakítás
Cells(i, t).AddComment
Cells(i, t).Comment.Visible = False
Cells(i, t).Comment.Text Text:=Seged
Cells(i, t).Value = "OK"
’Itt kellene a megjegyzés ablakot automatikus méretre állítani a beírt szövegnek megfelelően
Next t
Next i
Előre is köszönöm.
Röviden a lényege (nálam 2000-es excelen): Beszúrni egy megjegyzés, kitörölni belőle minden szöveget. Jobb kattintás a megjegyzés doboz szélére, és a megjegyzés formázása menüből a színek és vonalakat választani (ha nem a szélére kattint az ember akkor nem ez a menü jön fel), itt szín - majd kitöltési effektusok, majd kép, és itt a képválasztással a kép betölthető, végén ok. A képpel teli cellába ezután szöveg is beírható. A cellára jobb kattintással a menüből a megjegyzés elrejtése , ha a kép ott akar maradni.
A második kérdésedet kipróbáltam, nekem megy a dolog a következőképpen:
Lementettem ezt a fórumoldalt az explorer fájl menüjéből a mentés másként paranccsal a c:dokumentumok könyvtárba excel-indexfórum névvel, majd egy megnyitott excel munkafüzetlap egy cellájába ráállva jobb klikk--->hiperhivatkozás--->hely c:dokumentomok--->bal klikk az excel-index fórum.htm -re, majd ok gomb klikk.
1) A ciklust érdemes visszafelé futtatni, 1000-től 2-ig. Ha ugyanis kitörlöd pl. a 8. sort, akkor az összes alatta lévő feljebb ugrik eggyel, tehát a 9-esből lesz a 8-as. Ha a ciklusod előrefelé megy, akkor a 8 után 9 jön, tehát a 8-as sort, ami eddig 9-es volt, nem vizsgálja meg, az így egyszerűen kimarad.
2) A .Select gyakran fölösleges. Azon kívül, hogy az aktív ablakot oda rángatja, ahol a dolgok éppen történnek, nem nagyon csinál mást, mint hogy lelassítja a kód futását. Nem beszélve arról, hogy .Select utasítást csak az aktív munkalapon lehet kiadni, míg időnként arra van szükség, hogy a kód más munkalapokon is lefusson.
Ezek alapján így csinálnám:
For i = 1000 To 2 Step -1 If Cells(i, 2).Interior.ColorIndex = 3 Then Cells(i, 2).EntireRow.Delete Next
Sziasztok!
Ismét segítséget szeretnék kérni egy feladat megoldásához.
A lényeg, hogy a makrónak egy cikluson belül kellene átvizsgálni egy adott területet, és ha piros színre állított cellát talál az egész sort (és nem csak a cella tartalmát) törölnie kell.
Ez utóbbival nem boldogulok, ebben kérek segítséget.
For i = 2 To 1000
Cells(i, 2).Select
If Selection.Interior.ColorIndex = 3 Then
’Itt kellene az egész sort törölni…
End If
Előre is köszönöm.
sziasztok Excelbe(2003) szeretnék egy olyan megjegyzést beszúrni egy cellába,amibe ne csak szöveget lehessen beleírni hanem egy fénykép is felugorjon.Tehát ha rámegyek egy bizonyos cellára szeretném ha felugorna egy kis szövegrész és egy fénykép is hozzá.Filmjeim kategorizálására kellene. Remélem érthető voltam.Köszi a segitséget elölre is. Laca
Ja és mégvalami. Hogyan tudok egy céllába egy hivatkozást beilleszteni, ami egy korábban elmentett internetes oldalra mutat.Mindig azt irja ki hogy nem tudja megnyitni az elmentett oldalt a winyórol mert nincs hozzá protokol rendelve.
(Valamit elkefélhettem a hivatkozásnál - vagy nem tettem hozzá a.. _click-et, vagy - eléggé el nem itélhető módon - a zárójeleket is hozzáraktam a végére, de ez már mindegy is.)
A pivot tábla eredményét automatikusan külön munkalapokra lehet tenni. Nem találom ezt a funkciót, pedig van ilyen. Tudjátok hol van? Így nem egy hosszú listám lenne bal oldalon a vevők neveivel, hanem minden vevő másik lapra kerülne.
Szerintem egy egyszerűen megoldható problémám van, de én nem jövök rá a megoldásra:
Létrehozok egy userformot, rá mondjuk két command_ buttont és írok mögéjük egy-egy makrót. Azt szeretném, hogy az egyik makróból fusson a másik, de nem tudok az egyik makróban a hagyományos módon hivatkozni a másikra (a makró nevével).Hogy lehetne orvosolni ezt a kis problémát?
Próbálgattam a kódodat, step-by-step végrehatjással, és azt tapasztaltam, hogy a szaggatott vonal a Range(Cells(SOR, 1), Cells(SOR, 12)).Font.ColorIndex = 0 sor végrehatjásakor tűnik el, más esetben nem.
Ha kipróbálod (SelectionChange eseménykezelő nélkül), hogy valahol Ctrl+C, aztán kijelölsz egy másik területet és megváltoztatod a font színét, akkor is eltűnik, szóval nem hiszem, hogy lehetne tenni ellene. Hacsaknem eltárolod valahol a Copy-val kimásolt tartomány címét, és berakod az eseménykezelőbe, hogy a font színének megváltoztatása után újra hajtson végre egy Copy-t.
Szia! Jó gondolatovasó vagy. Nincs benne CutCopyMoe = Flase
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim UTDAT As Date On Error Resume Next SOR = Target.Row UTDAT = Cells(SOR, 12).Value
If UTDAT <> ISBLANK Then
On Error Resume Next Range(Cells(SOR, 1), Cells(SOR, 12)).Font.ColorIndex = 0
End If
End Sub
Ez pl. lentebb írt problémát eredményezi. Bár nem rendszeresen, hanem általában ha a szagatottan villogó cella feletti tartományba lépegetek. Főleg, ha folyamatos kurzorgombnyomogatással. Valszeg a makró futásának a lassúsága okozza...
Szia. Feltéve, hogy "aktív copy" alatt a Ctrl+C hatására megjelenő szaggatott vonalat érted (gondolom, hogy azt, de talán tévedek), nos én kipróbáltam, de nem inaktiválódott SelectionChange eseményre. Szerintem az eseménykezelő kódodban lesz valami. (CutCopyMode = False, hm?)
Hahó! Úgy vettem észre, ha Worksheet_SelectionChange eseményt használom, akkor az esemény bekövetkeztekor inaktív lesz a copy a cellában. Lehet ezt valahogy orvosolni?
Hahó! Úgy vettem észre, ha Worksheet_SelectionChange eseményt használom, akkor az esemény bekövetkeztekor inaktív lesz a copy a cellában. Lehet ezt valahogy orvosolni.
Ha A oszlop a fiúk, B oszlop a lányok, akkor legyen
C1-ben a képlet =DARABTELI(A:A;">160") C2-ben a képlet =DARABTELI(B:B;">160") D1-ben a képlet =DARABTELI(A:A;"<=160") D2-ben a képlet =DARABTELI(B:B;"<=160")
Azután ábrázold C1:D2 tartományt azzal a halmozott oszlop típussal.
írd így: 8-20 08-20 10-12 10-01 10-1 stb... és az excel felismeri dátummként. Ha csak hónap-napot írsz be, akkor a folyó évvelértelmezi. Ha más évszámot szeretnél, akkor írd elé hasonló formában az utolsó két karakterét. A kötőjel helyett lehet pont is. (Pl.: 1-10-31 (2001.10.31); 99-10-31 (1999.10.31) Időnél szerintem nins hasonló egyszerűsítés.
dátum, ill. idő rögzítésekor csak számokat kelljen írni.
Pl. 07/11/02 helyett 071102 beírásával ill. időnél: 08:30 helyett 0830 (vagy 830) beírásával könnyítsem meg az életét, mivel az Access-ben van hasonló.
VBA-val meg tudnám oldani, de talán van egyszerűbb megoldás.
Van egy iskolai osztály, amiben ugye vannak fiúk és lányok. Mindkét nem kéviselői között vannak alacsonyak (160 cm alatt) és magasak (160 cm felett). Mindezt úgy kéne ábrázolni egy grafikonon, hogy szemléletes legyen. Valami olyasmit képzelek, hogy halmozott oszlopon a fiúk és a lányok, és ezen téglalapok osztva (függőlegesen) a magasak - alacsonyak arányában.
Van valakinek ötlete, hogy tudnám ezt megoldani Excellel?
Két oldala van a dolognak. Egyrészt a gépen használsz valamilyen kódlapot, amit az oprendszer határoz meg. Mondjuk nálad a 852-es Latin-II van telepítve, amit Közép-Európában használunk, és ha mondjuk a franciák oprendszere a 863-asat használja, az már kavarodást okozhat. Másrészt az Excel is tárol területi beállításokat, amik akár munkalaponként is mások-mások lehetnek. Szerintem a megoldás, ha azonos kódlapot használsz a franciákkal, vagy esetleg unicode szövegeket írsz, mert az elvileg mindenhol jó lesz, már ha van ilyen betűtípus telepítve a gépeden és a franciák gépén.
Volna egy kérdésem, bár nem tudom mennyire találkoztatok ilyen problémával.
Tehát, én Mo-ról dolgozom Franciaországnak és mindeféle hülye francia karaktert kell használjak a táblázataimban. Most nekem az a bajom, hogy kapok valamit Fro-ból és akkor a francia ékezetes betűk helyén kérdőjelek stb. vannak. Aztán én elküldök nekik valamit és az én gépemen minden szép és jó, erre az ő gépükön vannak kérdőjelek.
For n = 0 To DB k = n + 9 Cells(k, 4) = V(0, n) Cells(k, 4) = V(1, n) Next
De ez nem kó :(, mert ugye a 9-ik sortól bevágja egymás után az értékeket, és nem tudom mit kellene a Cells(k, 4) = V(0, n)-ban a "k" helyére írni Persze az is lehet hogy úgy sz@r ez az egész ahogy van
Azt sajnos passzoltam hogy közvetlenül VB-ből hogyan lehet levelet küldeni outlookon keresztül, de mivel ez egy exceles fórum, excelen keresztül tudok rá megoldást, mert már csináltam párszor ilyet :)
Bővebben találsz leírást az exceles levélküldésről, példákkal együtt:
Sima outlookos mail küldéssel az a baj, hogy minden egyes elküldött levél után rákérdez hogy szeretnéd-e a levelet elküldeni. (ez valószínűleg VB-nél is így van)
A kérdés csak kapcsolódik az Excelhez, inkább Visual Basic és inkább MS outlook, de itt olyan sok okos ember ül.
Szóval VB havonta előállít 20 filet, amit havonta 20 emberkének meg másolatban még párnak el kellene küldeni. Hogy tudom az outlookot megszólítani és szétküldeni ezeket? Vagy próbálkozzak Word mail merge-dzsel?
Nyiss meg két új munkafüzetet! Mentsd el őket mondjuk egyes.xls és kettes.xls néven. Az egyes munkafüzetben a Munkalap1 munkalapján az a A1 cellába írj be valamilyen értéket (mondjuk 1-et). Majd nyomj Enter-t. A ketes munkafüzet Munkalap1 munkalapján az A1 cellába írjy egy egyenlőségjelet (=) de még ne nyomj entert, hanem kattintsd az egyes munkafüzet Munkalap1 A1 cellájára. Most nyomj Enter-t.
Hozz létre mégegy munkalapot, majd arra hivatkozással olvasd át a szükséges adatokat. Innen már simán mehet az érvényesítés. Mégszebb, ha az átolvasott tartománynak nevet is adsz és az évényesítésnél azt adod meg.
Nem jó, ha név szerint fordulsz hozzám (vagy bárkihez) egy új kérdéssel. Így mások, akik esetleg segíteni tudnának, azt gondolhatják, hogy ez csak mi kettőnk dolga.
Ami magát a kérdést illeti: 1) Sajnos az adatérvényesítés problémájára nem tudom a megoldást. De erről már beszéltünk egyszer (lásd 6028-as hozzászólásodat, és rá a választ 6030-ban).
2) Amikor egy képlet egy másik munkafüzetre hivatkozik, akkor a munkafüzet neve szögletes zárójelek közé kerül. Próbáld ki függvényvarázslóval, hogy egy tetszőleges függvény megadásakor a paraméter cellát/cellákat egy másik munkafüzeten jelölöd ki, és látni fogod a rendszert.
Kijelölöd a kívánt oszlopokat, aztán a menüből Adatok -> Érvényesítés, majd ott a megengedett értékek közül kiválasztod, hogy egész, vagy tört szám legyen.
Egy korábbi problémára térnék vissza. A következő megoldást adtad a kérdésemre ami jó is volt...
"Egy lehetséges megoldás:
1. Vedd fel a munkalap A oszlopába az árucikkeket, a B oszlopba a cikkek árát. 2. Legyen C1, D1 és E1 értéke rendre "mennyiség", "cikk" és "ár" (vagyis ez egy fejléc). 3. Jelölj ki a D2-től kezdve lefelé annyi cellát, amennyit akarsz (akár az egész oszlopot is). Ezután a menüből válaszd ki, hogy Adatok -> Érvényesítés. Az érvényesítési feltételben a Megengedve mező értéke legyen "Lista", a Forrás mezőé legyen "=A:A" (idézőjelek nélkül). Ezzel a kijelölt cellákra megszabtad, hogy értéküket csak az A oszlopban felsorolt értékek közül lehet kiválasztani. 4. Az E2 cellába írd ezt a képletet: =HA(HIBÁS(FKERES(D2;A:B;2;HAMIS)*C2);"";FKERES(D2;A:B;2;HAMIS)*C2) 5. A képletet terjeszd ki lefelé amilyen mélyen akarod. 6. Teszteld a megoldást úgy, hogy a C és D oszlopokba különféle értékeket írogatsz. 7. Esetleg az A és B oszlopokat el is rejtheted (Formátum -> Oszlop -> Elrejtés)"
Na most az van hogy az artabla munkalap egy külön munkafüzetben lesz. Ez azért van mert sok helyet foglal. Innen hívnám be az adatokat egy másik munkafüzetbe. Mindkét munkafüzet meg lenne nyitva abban a pillanatban amikor szükség van rá. De. Sajnos az érvényesítésben nem engedi hogy másik munkafüzetben lévő munkalapot adjak meg. Hogy lehet ezt kikerülni? Jah és a képletet sem tudom hogy hogy tudnám így összehozni :(
ha tudsz valami megoldást légyszíves segíts! Köszi
Igazából nem a lentebb feltett kérdéseim egyenes megoldását alkalmaztam, hanem találtam más lehetőséget dinamikus tömb formájában, aminél ugye nincs üres. (Egy másik fórumon vezettek rá erre, szóval nem az én érdemem) Illetva ha van, mert még nem kapott értéket a dinamikus változó , akkor így írtam ki msgbox-ra:
For i = 0 To UBound(NINCS) V = V & Chr(10) & NINCS(i) Next
És a V változót kapta meg az MsgBox (többek között)
Egyébként egy másik fórumon vezettek rá a megoldásra, hogy hogy kell ezt csinálni.
Talán egyszerűbb, talán nem, de ha a nem összefüggő cellatartományt Copy/Paste átmásolod valahová, mondjuk egy rejtett munkalapra, akkor összefüggő tartományt kapsz, amelyre alkalmazható a 6149-ben leírt módszer.
Köszönöm, azt hittem van egyszerűbb módszer is. Hasonló favágóbb módon megcsináltam én is. A For ciklusban MEZO(0 To 4) - ben a MEZO(4) változót visszaírtam a különálló cella tartalmával.)
Ebben a formában miért nem működik? Típuseltéréssel kiakad.
Dim MEZO() MEZO = Range("C2,C5:C8")
Meg a tied nem egy db MEZO() változóba pakolja el, hanem MEZO/MEZO(1,1), MEZO/MEZO1,2) stb... És úgy kellene szerintem, hogy MEZO/MEZO(1), MEZO/MEZO(2) stb...
Mivel nem férek a bőrömbe, és mivel éreztem, hogy lehet ezt egyszerűbben is, gyúrtam még egy kicsit a dolgot. Ez a képlet ugyanazt csinálja, de rövidebb, és még értem is :)
Ha már makrós megoldást csináltál, akkor én is írok egyet: Az aktív cellában levő pontosvesszős felsorolás elemeit az aktív cella alatti sorokba teszi:
Sub Gomb1_Kattintáskor() Dim k As Integer Dim C As Range Dim A Set C = ActiveCell A = Split(C, ";") For i = LBound(A) To UBound(A) Cells(C.Row + i + 1, C.Column) = A(i) Next i Set C = Nothing End Sub
Meg nem ertunk a vegere, de egy tapasztalat az Excel 2007 alkalmazassal.
Hasznaljuk az Analysis Toolpack Add-ins altal kinalt edate(), eomonth(), XIRR() es hasonlo funkciokat. A korabban Office 2003-ban keszult file-ok kinyitasanal megjelenik egy hiba uzenet, hogy nehany adat megsemmisult, majd azok a cellak amikben ezek a kepletek voltak atalakulnak =#N/A -re mikozben mutatjak az utolso erteket.
Nehany file-t el is mentettunk anelkul, hogy ezt a hibat eszrevettuk volna (csak akkor veszed eszre, ha ramesz a cellara) es nem kis munkat kell visszanezni.
Szoval ha hasznaltok Toolpack-ot es attertek 2007-re akkor jarjatok korul eloszor a temat...
Gratulálok. Ez nem semmi. Köszönöm szépen, az a helyzet hogy közben írtam rá makrót, marha jó is lett. Ronda és finom, mert működik. Kipróbáltam. Megy a jegyzeteim közé ez is.
Azért egy kis magyarázat mégis. Vagyis inkább használati utasítás.
A képlet az A1 cellában lévő sztringet, azaz pontosvesszővel elválasztott értékeket szedi szét cellákba. A szétszedés úgy történik, hogy a képletet az autokitöltés funkcióval lefelé másoljuk egy összefüggő cellatartományba. Amennyiben az A1-ben a sztring "@" vagy "#" karaktereket tartalmaz, a képlet nem működik helyesen. Amennyiben az A1 helyett mondjuk D23 tartalmazza a sztringet, a képletben csak a $A$1-eket kell megváltoztatni, ám a SOR(A1) kifejezések maradjanak változatlanul!
Pl ez működik: =CSERE(KÖZÉP($D$23;SZÖVEG.KERES("@";HELYETTE($D$23;";";"@";SOROK($A$1:A1));1);11);1;1;"") Probléma hogy az első lemarad, és ha eltérő hosszúságú a pontosvesszők közötti szöveg, akkor már nem tökéletes.
Hahó! Szépen le van itt naplózva, hogy éppen mit csinálok :) Most folytatom megint egy kérdéssel. Beépített függvényekkel, makró nélkül, (és nem a szövegtagolóval) hogy lehetne szétszedni egy pontosvesszővel tagolt listát külön-külön sorokba? (egymás alá) Szrtem SZÖVEG függvényekkel meg lehet csinálni de még nem jöttem rá, hogy hogyan. (én a KÖZÉP-be ágyazott HELYETTE függvényekel próbálkozok eddig)
Ha létrehozol egy új objektum-osztályt, annak a dolgait (tulajdonságait, metódusait) tudod itt tárolni. Ha találsz jó irodalmat objektum-orientált programozásról, és ha abban le van írva a felhasználói objektumosztályok témája, az nagyjából érvényes lesz az Excelre is, bármilyen programnyelvhez íródott a könyv. A szintaxis bizonyára más, de általános képet azért kaphatsz.
Jó napot! :) Eeeeeez aaaaazz, köszönöm! Ismertem ezt az Application.WorksheetFunction-t - de nem gondoltam, hogy ennyire egyszerű :( Így sokkal szebb, meg egyszerűbb is így megírni. Meg talán gyorsabb is.
Dim CELLA Dim TOTAL As Long Dim OSSZEG(0 To 10) As Long Dim NINCS(0 To 10) As String Dim TALALAT As Range CELLA = ActiveCell KERES = Split(CELLA, ";") Db = UBound(KERES) Wsn = ActiveSheet.Name Sheets("Nyitott Tételek Szállító").Select Columns("D:D").Select
For i = 0 To Db
'On Error GoTo ErrorHandler
Set TALALAT = Selection.Find(What:=KERES(i), After:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False) If Not TALALAT Is Nothing Then End If OSSZEG(i) = Cells(TALALAT.Row, 15).Value TOTAL = OSSZEG(0) + OSSZEG(1) + OSSZEG(2) + OSSZEG(3) + OSSZEG(4) + OSSZEG(5) + OSSZEG(6) + OSSZEG(7) + OSSZEG(8) + OSSZEG(9) + OSSZEG(10) MsgBox TOTAL
'ErrorHandler: ' ' If Err = 91 Then ' NINCS(i) = KERES(i) ' MsgBox "A " & NINCS(i) & " számlaszámot nem találtam meg." ' Err.Clear ' End If
Dim CELLA, ADAT Dim TOTAL As Long Dim OSSZEG(0 To 10) As Long Dim NINCS(0 To 10) As String CELLA = ActiveCell KERES = Split(CELLA, ";") Db = UBound(KERES)
Wsn = ActiveSheet.Name
Sheets("xy").Select Columns("D:D").Select
For i = 0 To Db
On Error GoTo ErrorHandler Selection.Find(What:=KERES(i), After:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False).Activate OSSZEG(i) = Cells(ActiveCell.Row, 15).Value TOTAL = TOTAL + OSSZEG(0) + OSSZEG(1) + OSSZEG(2) + OSSZEG(3) + OSSZEG(4) + OSSZEG(5) + OSSZEG(6) + OSSZEG(7) + OSSZEG(8) + OSSZEG(9) + OSSZEG(10) MsgBox TOTAL 'Exit Sub ErrorHandler: If Err.Number = 91 Then NINCS(i) = KERES(i) MsgBox "A " & NINCS(i) & " számlaszámot nem találtam meg."
Ciklusnál talán gyorsabb ha egyesével összeadogaom ahogy a 6128-ban példálóztam. Fene tudja...
Még egy kérdés, az "On Error GoTo címke" hibakezelés lehetséges, hogy csak egyzser működik ésha ugyanaz a 91-es hiba 2x fordul elő, mert 2x nem talál a Find, akkor a második 91-es hibánál már kiakad? Ezt egyszerűen nem tudom lekezelni, az elsőnél lekezeli, de amikor másodszorra is 91-es hiba van, akkor nem kezeli le hanem megáll.
Változóba írok egy Find-el megtalált értéket így: OSSZEG = Cells(ActiveCell.Row, 14).Value A gondom az, hogy mivel ez a Find egy For i ciklusban van, így mindig "i" ActiveCell van, aminek a tartalma az OSSZEG változóba íródik - nyilván találatonként más - és más. A kérdésem az, hogy kell ezeket a találatokat összegöngyölítve (összeadva) egy TOTAl változóba írni?
Private Sub Workbook_Open() Workbooks("Start.xls").Save VBAProject.Form1.Show
Workbooks("Start.xls").Close End Sub
És a showmodal tulajdonság marad true.
másik megoldási lehetőség a Start.xls-ben:
Private Sub CommandButton1_Click() If Range("A1")=1 Then Workbooks.Open Filename:="D:/a.xls" Workbooks("Start.xls").Save Workbooks("Start.xls").Close Else Workbooks.Open Filename:="D:/b.xls"
A ShowModal = False egyébként azt teszi, hogy akkor nyitott Form mellett szabadon mászkálhatsz az Excelben, munkafüzetek/munkalapok/cellák között, sőt még a menűben is.
Nem találkoztam ilyennel, de nekem elsőre nem tűnik olyan bonyolultnak a konverziós képlet. Ha pl. 1970. jan. 1. 00 óra 00 perc a referencia, akkor így csinálnék Excel dátumot (ExD) az eGroupWare dátumból (egD):
A csodás eGroupWare (www.egroupware.org) alkalmazásból ODBC-n keresztül szedek le adatokat (Todo) Excelbe, de a dátumot, időt (úgy látom) 1970-től eltelt másodpercek formájában tárolja.
Szeretném ezt átkonvertálni Excel formátumúra, de elég bonyolultnak tűnik Excel függvénnyel (vagy csak nem jól gondolom).
Ismeretlenül - mert véletlenül találtam ide - beleszólok: A SAP mindezt tudja maga is. Kell hozzá egy jobb programozó kb. fél órára. Kulcsszó: batch-input recorder. Ennek segítségével nagyon egyszerűen generálható egy batch-input program, amit nagyon könnyű átírni, hogy bevegyen egy szövegállományt - pl. tagolt txt-t - amit meg bármivel - akár Excle segítségével is - létrehozhatsz.
Abban meg az előttem szólónak igaza van, hogy ha már van...
FF67-ben elvileg van egy képernyő ahol a beírandó adatok egymás mellett/alatt vannak, gondolom ezt használtad ki. Azért csak zárójelben annyit, hogy a bankok azért már elég régen képesek arra hogy olyan fájlt adjanak át neked amit automatikusan be tudsz tölteni sap-ba és nem kell kézzel bankkivonatot könyvelni. És ha nincs pénz kis fejlesztésekre , akkor minek vett a cég SAP rendszert, az már önmagában k. drága...
No, hát úgy látom, az SAP-hoz nálam jobban értő szakemberre leltél Stromba személyében. (Ami nem nehéz, mert nekem lövésem sincs hozzá...) Ő valami más utat javasol, mint amit én elképzeltem. Megvárnám, hogy mi lesz annak az eredménye, mert amire én gondoltam, az első blikkre úgy néz ki, hogy valószínűleg elvezet a Windows API függvények hívásának világába, amely szintén felderítetlen terület még nekem...
Van egy start.xls egy a.xls és egy b.xls. A start.xls különböző adatok alapján kiszámolja hogy a vagy b .xls-t kell megnyitni. Az a és b xls-ben a megnyitáskor elindul a form1. Ha ez aktiválódik akkor visszalép a start.xls-be menti majd bezárja és visszatér az a vagy b xls-be. Az a baj, hogy viszont visszatéréskor a form1 bezáródik pedig aktívnak kéne maradnia. Próbáltam már azt is hogy ne a form1 aktiválódásakor zárja a start.xls-t hanem az a vagy b xls megnitásakor. Egyszerűen nem megy. Valakinek van valami ötlete? Előre is köszönöm.
Ennek a használatára van reális esélyed, ha nem is neked mert mondjuk nincs hozzá jogosultságod akkor a cégednél az SAP támogató csapatnak (már ha értenek hozzá, ha nem akkor ön rossz sap szakértőt választott)
Ha valamelyik tranzakciót szeretnéd így megtáplálni - pl F-02 GL account posting, akkor azt bizony jobb leprogramoztatni vagy venni kell egy kész alkalmazást.
Átjött, nézem. Addig is, hátha valaki másnak is okozott már problémát:
Ha egy pivot tábla (kimutatásvarázsló) mögötti adattartomány változik, egyes esetekben megmaradnak a tételek (items) nevei holott már nincs is az adatbázisban az adott elem. Ez különösen programozásnál jelenthet gondot, pl. az adatbázisban most csak 20 féle adat van, de korábban 500 volt, akkor továbbra is olyan mintha 500 elem lenne elérhető a pivot táblából.
Ez a te esetedben így törölhető, ha a pivot tábla az aktív munkalapon van, neve Kimutatás1 és a Cikkszám: mező elemeit kell megregulázni:
Sub delOldItems()
Dim pItem As Object
Application.ScreenUpdating = False For Each pItem In ActiveSheet.PivotTables("Kimutatás1").PivotFields("Cikkszám:").PivotItems On Error Resume Next pItem.Delete On Error GoTo 0
Ne túlozz, erre a megszólításra nem szolgáltam rá.
"Ez egy SAP egy tranzakciójának az ablaka. Képzelj el egy ablkalot sok-sok beviteli mezővel, ahová adatokat kell beírogatni. Tehát valahogy meg kell célozni 1-1 XY helyen lévő beviteli mezőt az SAP ablakban."
Hát, ez már komolyabb dolognak tűnik, mint a notepad... Kapásból nem tudom, de utánanézek.
"De baj van. Megáll a SendKeys-nél. De nem a SendKeys-el van baja szerintem, hanem feljebb, de mi? Még nem jöttem rá. (a notepad.exe-t megnyitja)"
A Sendkeys az aktív applikációra küldi a karaktersorozatot. Tippelek: ha pl. van egy olyan programod, ami állandóan elöl van, talán akor nem megy át. Azt megfigyeltem, hogy ha VBA editorból indítom a makrót, akkor nem küldi át a sztinget, hanem beleírja a makróba. Lehet gond az időzítéssel is, pl. ha a notepad túl lassan nyílik meg, és még nem kész a karakterek fogadására, amikor a Sendkeys végrehajtódik.
Mondom, nem tudom még, hogy lesz ez, de valószínűleg először explicite aktiválni kell a SAP megfelelő ablakát, ott fókuszálni a megfelelő beviteli mezőt, és utána küldeni a karaktereket.
"Nem kell ehhez valamit bekapcsolnia a VBA/Tools/References-ben?"
Szerintem nem. Max jelöld be az OLE Automation-t, hátha az segít. Nekem be volt jelölve, bár nem én jelöltem be, és amikor eltávolítottam, a makróm akkor is működött...
József, nagyon köszönöm a felajánlott segítséget. A címedet elraktam, és ha újra beleszaladok valami megoldhatatlannak tűnő problémába, jelentkezem. Most is nagyon szívesen elküldeném a hibás változatot, mert igaz ugyan hogy kijavítottam, bár talán helyesebb, ha azt mondom, hogy megjavult a sokszori csesztetésemtől. És most hibátlan, de nem tudom mitől. Márpedig az nem ártana. Most megpróbáltam újra ugyanazt az utat bejárni, amit a nem müködő verzióknál követtem, de most hiba nélkül müxik. Így csak elmesélni tudom, hogy milyen szimptomák jelentkeztek. Talán neked mond valamit.
1. A célcellában (mondjuk az A1-ben) hülye eredmény van. B1-ből hivatkozol A1-re: Nullát ír ki. Feltehetőleg üres cellát lát.
2. A célcellát körkörös hivatkozás miatt nem tudja kiszámítani. Megnézed, hogy mi a fene lehet, hát az egyik módosuló cellára történő hivatkozást kicserélte önmagára, azaz a célcellára. Visszaállítod 100 szor, de nem unja meg, csak a 101-ikre. (Na jó, lehet hogy közben újra beírtam a képletet) És onnantól jó. Itt talán az adhat neked valami támpontot, hogy a célcellában egy 6 tényezős szorzat volt, a modosuló cella mindegyik tényezőben szerepelt, de az emlitett csere csak az első 5 tényezőben történt meg, az utolsóban soha.
3. Feltételnek megadod, hogy a módosuló cella nem lehet negatív. Nem zavarja, átmegy negatívba. Aztán egyszercsak ez is megjavul.
Hát ezek voltak. Nem lepődnék meg, ha megint előfordulna
Úgy egész pontosan még most se teljesen tiszta, hogy akkor mit is szeretnél csinálni. Küldj egy mailt ha kell több segítség.
"Valószínűleg újbol létre kellene hozni a kimutatást, mert sem a frissítés, sem a mező levétele és újra felrakása nem segít. Újraépíteni pedig nem kis munka, a formázások, oldalbeállítás, és a csatolások miatt. "
Egyszer kell jól leprogramozni és akkor nincs vele több gond, ez miért lenne baj? Pivot táblát is lehet makróval csinálni.
"Probléma még, hogy ha a makró lapoz, nem működik a kimutatásadatotvesz függvény, ami egyébként jó."
Miért, ha nem makróval csinálod hanem kézzel választassz ki másik tételt a kimutatásban neked szokott frissíteni ez a függvény? Nekem sose. Nem is szoktam használni a függvényt.
"És meg kellene oldani a nyomtatást is úgy, hogy ne küldje el egyszerre az ezervalahány oldalt a nyomtatóra, de ne is egyesével kelljen jóváhagyni."
... akkor most hogy is? Amit előzőleg küldtem makrót, nem mész végig az összes tételen hanem csak bizonyos határok között, ezt vagy kézzel beállítod a makróban vagy bekéred minden indításnál egy userform vagy inputbox(ok) segítségével.
Vagy csinálsz egy előzetes vizsgálatot a tételekről, ahol egy külön munkalapra kilistázod a tételek számát/nevét, majd a tételek mellett jelölöd, hogy melyiket akarod kinyomtatni is. Amikor a ciklus fut, vizsgálod hogy teljesül-e ez a feltétel, és ahol igen azt kinyomtatod.
Vagy az egyes tételekről külön fájlt csinálsz, azokat lemented egy helyre. Ilyenkor érdemes a pivot adatokat törölni és csak a kimutatást magát megtartani. A mentett fájlneveket közben gyűjtöd egy listába, és a listában választod ki hogy melyeket akarod kinyomtatni. (Plusz oszlop segítségével). Amit ki akarsz nyomtatni, azt egyenként kinyitod, nyomtatod, bezárod. Ezeket persze mind makróval, kézzel sok értelme nem lenne.
bosszantó, hogy irgalmatlanul labilis. Az még hagyján, hogy a kezdőértékekre érzékeny. De van, hogy megmagyarázhatatlan okokból átírja a célcella képletét. Aztán vagy jelzi, vagy
Első blikkre szerintem, a célcellát is be raktad a módosuló cellák közé, ez sok mindent megmagyaráz(na). Ha nem boldogulsz, küldd át emailben címemre: jozsef kukac torzsasztal pont hu, , megpróbálok ránézni. Kérlek, azt is írd meg, mi lenne az eredeti feladat :) Üdv József
stromba, köszönöm az ötletet, de sajnos ez még nem az. A hét végén sokat agyaltam rajta, mert a probléma nagyon is valós, a megoldás pedig sürgős. Annyit elértem, hogy egy makró végiglapozza az oldalakat, de megakad, ha nemlétező tételhez ér a ciklus. A nemlétező tételek pedig bekerülhettek úgy is, hogy a kimutatást másik adatforráshoz használtam, ahol léteztek, és a kimutatásvarázsló felvette. Most pedig nem tudom törölni. Valószínűleg újbol létre kellene hozni a kimutatást, mert sem a frissítés, sem a mező levétele és újra felrakása nem segít. Újraépíteni pedig nem kis munka, a formázások, oldalbeállítás, és a csatolások miatt. Probléma még, hogy ha a makró lapoz, nem működik a kimutatásadatotvesz függvény, ami egyébként jó. És meg kellene oldani a nyomtatást is úgy, hogy ne küldje el egyszerre az ezervalahány oldalt a nyomtatóra, de ne is egyesével kelljen jóváhagyni. Átnéztem az összes könyvet és a fórumot, de egyelőre nem találtam megoldást. Ha valakinek van ötlete és ideje, kérem segítsen. Üdv.
Én szivesen feltenném az exceltabla kivágásokat, de nem értek hozzá. Anélkül meg nem érthetők meg a problémák. De ha abban benne vagy, hogy felteszed őket, akkor én elküldhetem neked, te pedig feldobod. Egyébként 3 napja tökölök egy Solveres problémán. Ma délutánra vált müködőképessé. De halvány fingom sincs, hogy mitől jó most, amikor látszólag ugyanolyan szerkezetű mint amikor nem müködött. Talán valami olyasmi lehet az oka, hogyha egy futtatás nem tud végigmenni valamiért, akkor a háttérben beragadó számítás bezavar következő futtatásnál. De azért ez sem biztos, mert próbáltam a resetálást is, és nem volt feltétlenül eredményes. Ilyen jellegü tapasztalata nincs valakinek.?
Jozsef ezeket nagyon vágja szerintem. De amit lehet, ne priviben, mert másnak is hasznára válhat. Pl. nekem:) Nekem nem volt problémám még vele - bár én kisebb dolgokat szoktam vele orvosolni, és szó ami szó, több mindenre is lehetne használni....
Aziránt érdeklődöm, hogy van-e köztetek valaki aki otthon van a Solverben. És hajlandó lenne velem konzultálni. Mert amilyen hasznos ez a funkció amikor jól müködik, annyira bosszantó, hogy irgalmatlanul labilis. Az még hagyján, hogy a kezdőértékekre érzékeny. De van, hogy megmagyarázhatatlan okokból átírja a célcella képletét. Aztán vagy jelzi, vagy nem, hogy hibás eredményt adott. Máskor nem ír át semmit, de nem vesz figyelembe egy korlátozó feltételt. Olyat, amit egy korábbi futtatásnál figyelembe vett. A legjobb lenne, hagyni a fenébe. Amit azonban még se szívesen tennék, mert már sok optimalizálási problémát megoldottam vele, amit szeretnék a továbbiakban is.
Szóval, ha van valaki, aki már megbirkózott hasonló problémákkal, örömmel venném ha jelezné nekem. Akár priviben is.
Köszi ez még jobb, ezzel megoldottam a múltkori autoszűrős kérdésemet is. thx!
Private Sub ToggleButton1_Click() If ToggleButton1.Value Then OK: Application.Calculation = xlCalculationManual Selection.AutoFilter Field:=5, Criteria1:="*" & InputBox("Szótöredék:") & "*", Operator:=xlAnd ScreenUpdating = False 'MsgBox "Autofilter bekapcsolva. Automatikus lapfrissítés kikpcsolva"
Select Case MsgBox("Újabb szűrés?", vbYesNoCancel) Case vbYes GoTo OK Case vbNo On Error Resume Next ActiveSheet.ShowAllData Application.Calculation = xlCalculationAutomatic 'MsgBox "Automatikus lapfrissítés visszakapcsolva" ToggleButton1.Value = False Case Else ToggleButton1.Value = False Exit Sub End Select End If End Sub
marhára örül a fejem ha sikerül valami. Igaz Goto nélkül nem tudam hogy kell, de nekem tökéletes így is.
Szasztok, tudnátok segíteni abban, hogy miként lehet feltételhez rendelni azt hogy ha egy MsgBox-on No avagy Yes gombot nyomtak meg? Tehát ha No akkor ez van ha Yes, akkor amaz
Valahogy az megoldható, hogy a funkció billentyűkhöz (F1 - F12) hozzárendeljek makrót? Illetve azt szeretném elérhi, hogy van egy makró ami lefut ctrl+m -re, de csak akkor fusson ha az form1 aktív, ha a form2 aktív akkor ne fusson (a form2 csak akkor aktív ha a form1 is meg van nyitva, de inaktív). Előre is köszönöm.
Ez így továbbra sem teljesen elég de azért már nagyjából értem. A lenti kódot egy olyan alkalmazásból vettem ki, amit akkor használtam amikor sokszáz leányvállalat adatait kellett egy pivot táblából különböző fájlokba szétdobálni.
Mondjuk a pivottábla neve "PivotTable1" és amiket szűrsz azok leányvállalatok az a mező ("Affiliate").
Sub idu()
Application.Screenupdating = False
'Két egymásba ágyazott ciklust használunk:
i = ActiveSheet.PivotTables("PivotTable1").PivotFields("Affiliate").PivotItems.Count
For i1 = 1 To i
'végigmész az összes különbözo rekordon
For i2 = 1 To i 'a pivot táblának csak azon elemei lesznek láthatóak, amelyeket szeretnénk, a többit elrejtjük
With ActiveSheet.PivotTables("PivotTable1").PivotFields("Affiliate") If i2 = i1 Then
.PivotItems(i2).Visible = True On Error Resume Next
.PivotItems(i2 - 1).Visible = False On Error GoTo 0
Else
On Error Resume Next 'ez az esetleges üres mezok miatt kell .PivotItems(i2).Visible = False On Error GoTo 0 End If
Az oldalmező egy szűrő a Kimutatás oldalterületén. Lényegében hasonlóképpen néz ki, mint egy tábázat fejlécén az autoszűrő. Egy lenyíló lista, benne rendezetten láthatók az alatta lévő oszlopban található adatok. Lenyitod a listát, szűrsz az első tételre, kinyomtatod. Szűrsz a másodikra, kinyomtatod, és így tovább. Lényegében ezt szeretném egy makróval megoldani. Az objektum nevek mások, mert Pivot Tábláról van szó. Azon kívül, mivel az eredmény több mint ezer oldal lesz, valamivel kezelni kellene a folyamatot.
Ha az oldalmező azt jelenti hogy van egy oszlop ahol egy adott érték már új oldalra kell hogy kerüljön, akkor: (feltételezve hogy ez az érték az A oszlopban van és mindig "q")
Sub oldaltores() ' Cells.Select ActiveSheet.ResetAllPageBreaks Selection.SpecialCells(xlCellTypeLastCell).Select X = ActiveCell.Row ' a tartomány -ig sora
For i = 2 To X If Cells(i, 1) = "q" Then Rows(i).Select ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell Else End If Next i End Sub
Üdvözlet Mindenkinek, Segítséget kérek. Egy oldalmező tételei szerint szeretnék kinyomtatni egy kimutatást, minden tételt új oldalon kezdve. A tételszám ezres nagyságrendű. Az oldalankénti nyomtatás funkció nem jó. Egy makró kellene. Tudtok segíteni? Köszönöm.
Köszönöm, én is gondoltam valami ilyesmire, számítottam valami frappáns megoldásra. Mindenesetre target változóval megcsináltam, aztán majd kiderül mennyire válik be. köszi még1x
Értem már. Nos, egy kerülő megoldást tudnék javasolni.
Mivel az autoszűrés nem váltja ki a Worksheet_Change eseményt, szerintem szűréskor kapcsold ki az automata számolást, és Worksheet_Change eseménnyel kapcsold be. Amíg csak szűrsz, addig nem kell számolgatni, viszont ha a munkalapon módosul valami, akkor elképzelhető, hogy kell.
A gond itt az lehet, hogy Application.Calculation = xlCalculationAutomatic utasításra mindnképpen átszámolja a képleteket, ha addig xlCalculationManual volt az érték. Tehát esetleg akkor is, ha a szűrés után az első változás olyan cellában történik, amely nem része semmilyen képletnek. Ezért indokolt lehet a Change esemény lekorlátozása a Target változó segítségével.
Nem tudom, jó megoldás-e, első ránézésre annak tűnik...
Bocs, ha nem volt érthető - pedig igyekeztem. A fő probléma az, hogy egy 6000 soros táblázat szűrésekor a táblázat frissül, újraszámolja az egészet és ez sokáig tart. Ugyanakkor a Beállítások/számolás fülön a kikapcsolt frissítést vissza kell kapcsolnom a makró végén - hisz a további használat során szükség van erre. Viszont visszakapcsoláskor - ami teljesen helyénvaló - frissül a táblázat.
Például ez a kód az lefut:
Sub K() Application.Calculation = xlCalculationManual Selection.AutoFilter Field:=5, Criteria1:="*" & InputBox("Szótöredék:") & "*", Operator:=xlAnd ScreenUpdating = False Application.Calculation = xlCalculationAutomatic End Sub
De az utolsó sorban a visszakapcsolás miatt frissül a táblázat és számolgat egy csomót. Magyarul azt el lehet kerülni, hogy autoszűrő használatakor ne frissüljön a táblázat?
Nem nagyon használtam még Office 2007-est, de úgy rémlik, azt olvastam valahol, hogy a kezelőfelületét át lehet állítani a megszokott régire. Hogy hogyan, azt nem tudom, de szerintem a Súgó tudja. Esetleg a Súgó tudhatja azt is, hogy az X-et hogyan kell kitenni a jobb felső sarokba...
Gondolj úgy a képletekre, mint az általános iskola első osztályának matekkönyvében szereplő, szaloncukor alakú "gép"-ekre. (Az én időmben még ilyenekkel etettek :)) Felül bedobsz valahány számot, alul kijön egy darab érték. Az Excel függvényei általában ilyen, 1 azaz egy kimenettel rendelkező gépek. Azt mondom, "általában", mert lehet, hogy tévedek, de most nem tudnék olyan függvényt mondani, amelyiknek két kimenő adata van. Olyat sem láttam még, hogy egy beírt képlet a beírás cellájától eltérő cellában módosít értéket. (Hacsak nem felhasználó által, VBA kóddal megírt függvényről van szó, mert ott akármi is történhet.)
Magyarul és röviden: ha az E1-ben képlettel számított értéket akarsz látni, akkor oda (E1-be) be kell írnod azt a képletet, amely az értéket kiszámítja.
Esetedben a mennyiségi egység kimásolása hasonló képlettel működik, mint az ár kiszámítása. Az FKERES függvény paraméterei változnak. A keresési érték ugyanaz (vagyis az árucikk), a tartomány A:B oszlopokról A:C oszlopokra módosul, az oszlopszám 3, a tartományban keres pedig marad hamis. (Legalábbis, ha jól látom a helyzetet.) Ja, és persze - ellentétben az egységárral - ezt nem kell beszorozni a mennyiséggel.
Ezt hogy csináltad, hogy a behúzások így megmaradtak? Nekem mindig trim-meli az összes soromat a fórum szoftver, és minden sorom a doboz elején kezdődik...
Az utóbbi problémával továbbra is küzködök. Nem igazán értem ezeket a képleteket. A felállás a következő: Egy munkafüzeten belül van egy ártábla (artabla) munkalap ami tartalmazza az:
C1 | D1 | E1 | F1| mennyiség | cikk | mennyiségi egység | ár |
szóval amíg az első megoldást javasoltad, azt sikerült megcsinálnom úgy is hogy az árakat egy másik lapon helyeztem el. Ezt megoldottam a lap elnevezésével és az érvényesítésnél megadtam az adatok lap nevét. Teljesen jól működött. De aztán hozzájött ez a mennyiégi egység amit az artabla lapon csak az ár utáni oszlopba raktam be C1től lefele az árak mellé. Namármost azt szeretném ha az összesítőn ha kiválasztom a terméket akkor bemásolja mellé az artabla lapon lévő mennyiségi egységet is autómatikusan az E1 cellába. Gondolom ezt is képletként kell megadni a korábban írt képletbe, vagy ez külön képlet az E1-re vonatkozóan??
Dim i As Integer Dim k As Integer Dim Kom For i = 4 To 700 For t = 4 To 128 If Cells(i, t) = "M" Then Set Kom = Cells(i, t).Comment If Not Kom Is Nothing Then Cells(i, t) = Cells(i, t).Comment.Text Set Kom = Nothing End If Next t Next i
Segítséget szeretnék kérni egy feladat megoldásához. Egy adott értékü cella megjegyzésének tartalmát (a szöveget) kellene visszaírni az adott cellába úgy, hogy a megjegyzés is megmaradjon, de a cella értéke (szöveg) természetesen így felülíródik. Egy nagy tábláról van szó, ahol elég sok cellához tartozik ilyen megjegyzés, de bőven van megjegyzés nélküli cella is.
Szóval, próbálkoztam egy kis makróval, de nem találom a megoldást. Az alábbi ciklus akkor akad ki, ha az adott "M" értékű cellához nem tartozik megjegyzés (egyébként, rendesen átírja a megjegyzés értékét a cellába).
For i = 4 To 700
For t = 4 To 128
ActiveSheet.Cells(i, t).Select
If Cells(i, t).Value = "M" Then Cells(i, t).Value = Cells(i, t).Comment.Text
End If
Next t
Next i
Előre is nagyon köszönöm, ha valaki segít a probléma megoldásában.
Sub K() Application.Calculation = xlCalculationManual Selection.AutoFilter Field:=5, Criteria1:="*" & InputBox("Szótöredék:") & "*", Operator:=xlAnd ScreenUpdating = False End Sub
Ez működne, de így meg kikapcsolva marad az aut. frissítés. Ha a sor végére rakom a Application.Calculation = xlCalculationAutomatic -ot akkor cseberből vederbe jutok, mert megint frissül a táblázat.
van egy hatalmas táblám, amiben inputboxszal kérek be egy autoszűrővel szűrendő értéket. A gond az, hogy a szűréskor újrafrissül a tábla, és ezt kellene kikpacsolni vhogy, de az automatikus frissítés is maradjon bekapcsolva a makró lefutása után. A ScreenUpdating = False és a Application.Calculation = xlCalculationManual/Automatic nem jó, mert a Selection.AutoFilter Field:=5, sor lefutása után frissül a tábla azonnal.
Pl. egy bizonyos xls fájl megnyitásakor mindig a Munka1 nevu munkalapja legyen aktiv:
A Vb szerkesztoben a ThisWorkbook objektumra duplán kattintva, a kódablakban a Workbook open eseményhez tartozó eljárás módosítható az alábbiak szerint, majd az excel fájl elmentendo:
Private Sub Workbook_Open() Sheets("Munka1").Activate End Sub
Azt hogyan tudom megoldani hogy egy munkafüzeten belül egy bizonyos munkalap legyen mindíg a nyitóoldal? Most az van ha egy másik munkalapon maradok, rámentek és onnan lépek ki, akkor a köv. megnyitáskor az jelenik meg, nem a főoldal (1. oldal)
These are variables that are dimensioned (Dim) outside the Procedure itself at the very top of any Private or Public Module. See Example below;
Dim lRows as Long
Sub MyMacro () 'Code Here End Sub
All variables dimensioned at this level are available to all Procedures that they are within the same Module the variable is dimensioned in. Its value is retained unless the Workbook closes or the End Statement is used.
Project-Level, Workbook Level, or Public Module-Level
These variables are dimensioned at the top of any standard public module, like shown below;
Public lRows as Long
All variables dimensioned at this level are available to all Procedures in all Modules. Its value is retained unless the Workbook closes or the End Statement is used.
Nem igazán értem a kérdést. Vagyis azt nem értem, mi a probléma a beszúrással. Menü: Beszúrás -> Oszlopok és kész. A képletek elvileg automatikusan követik a változást, és a beszúrás után is a megfelelő cellákra fognak hivatkozni.... Vagy pedig, mi a gond?
Köszönöm a segítséged, közben rájöttem én is hogy ez így nem megy. Az Acces-t még hanyagolom, bár tanultam valamikor azt is.
Tehát a lista marad egy munkafüzeten belül, a lagutolsó munkalapként. Így a frissítés is egyszerűbb lesz, ezt sikerült is megoldani. De van még egy kérdés. Utólag hogyan tudok a mennyiség és a cikk közé beszúrni még egy mennyiségi egységet amit alistában harmadik oszlopként utólag megadnák?
Talán jobb és egyszerűbb az a megoldás, amikor az ártáblázatok munkafüzetében (egy külön munkalapon) direkt hivatkozásokkal vanak átolvasva az adatok az eredeti fájlból. Így nem kell mekrózni, meg másolni, hanem a fájl minden megnyitásakor automaikusan frissülnek (amennyiben ezt választjuk) az adatok. Minden nemű változtatást az eredeti fájlban (és csak ott) lehet és kell elvégezni, mégis minden rendben fog működni.
A kérdésed tipikusan olyan feladat, amire az Access 100-szor alkalmasabb, mint az Excel. És még makrót sem feltétlenül kellene írni hozzá. Szóval szerintem Access-szel kellene hozzáfognod, ha ez szóba jöhet egyáltalán.
"Még annyi kérdésem lenne ha ezt az ártáblázatot külön munkafüzetben akarom tárolni, az megoldható e?"
A végösszeget számoló képlet szempontjából megoldható, mert az FKERES függvény hajlandó dolgozni másik munkafüzetből származó adatokkal is. Viszont az adatérvényesítés szivacs, mert ő nem hajlandó.
Szóval, ha másik munkafüzet tartalmazza az adatbázist, akkor máshogyan kell megoldani, hogy csak a listában szereplő árucikkeket lehessen a cellákba írni. Erre momentán csak olyan ötletem van, ami makró kóddal operál, és egyébként nem túlságosan elegáns.
"Tudom annak egyidőben nyitva kell lennie."
Ez így, ebben a formában nem teljesen igaz, ugyanis zárt munkafüzetből is lehet adatokat kibányászni. De ezt csak az érdekesség kevéért mondtam.
"A lényeg hogy ha árajánlatot akarok készíteni akkor ne kelljen mindegyikben szerepelnie az ártáblának hanem egy közös munkalapból vennék le a lista értékeit."
Ezt a feladatot én legegyszerűbben így oldanám meg:
1. Tegyük fel, hogy a munkalapot (amelyet korábbi útmutatásom alapján elkészítettél) "Lista" a neve.
2. A "Lista" munkalapon marad minden úgy, ahogy most van, kivéve, hogy teszek rá egy gombot, ami egy makrót futtat le.
3. A makró átmásolja egy új munkafüzet első munkalapjára a "Lista" lapon elkészített árajánlatot, de csak az értékeket, viszont a képleteket, és az árucikkek adatbázisát nem.
4. Az új munkafüzetet szépen megformázza (fejléc, színek, keretek, betűméret, munkalap neve, stb.), majd pedig elmenti egy adott néven.
Kérdés persze, hogy szükséges-e az elkészített árajánlatokat eredeti, képletes formában is megőrizni, mert pl. utólagos módosításra van szükség, stb.
Ha igen, akkor a fenti ötletem ebben a formában nem jó.
Üdvözletem mindenkinek :) Segítségeteket szeretném kérni. Mivel tudom nem kis feladatot kérek, minden részmegoldásnak is nagyon örülnék. Végignéztem 1500 hozzászólást és nem igazán jutottam előre, no meg az Excel programozása sem az erősségem. Nem nőket akarok futtatni, csak gondoltam érthetőbb, mintha soroskő, élfóz, vízorr kifejezésekkel gyötörném a segítőket :) A kérés: Adott egy beviteli mező, ahol lenyíló listákon lehet kiválasztani az adatokat, kivétel a dátum. Ezen adatoknak kellene a kimeneti listában megjelenni úgy, hogy a vezérlőgombokkal is lehessen talózni stb... Szóval makró hegyeket kellene írni.
Még annyi kérdésem lenne ha ezt az ártáblázatot külön munkafüzetben akarom tárolni, az megoldható e? Tudom annak egyidőben nyitva kell lennie. A lényeg hogy ha árajánlatot akarok készíteni akkor ne kelljen mindegyikben szerepelnie az ártáblának hanem egy közös munkalapból vennék le a lista értékeit.
Amúgy meg az autoszűrőben van "tartalmazza" kritérium megadási lehetőség is. Rögzítsd le nézd meg mit csinál, de egyébként ez ugyanaz, mintha jokerkaraktert (pl *) használnál valahogy így: *valami*
Joker karakterek a szűrési kritérium megadásánál? (akár a makróban, akár manuálisan) Nekem van ilyen módon működő táblázatom, én így adtam meg a szűrés kritériumát:
Dim C As String C = "*" & Cells(1, 7).Value & "*" Selection.AutoFilter, Criteria1:=C
Ebben a formában nyilván nem működik, mert kitöröltem a felesleges sorokat
Az előző email címes kérdésemre köszönöm mindenkinek a válaszát kipróbáltam őket és működnek. Úgy vagyok vele hogy mindig lehet hibássan megadni úgyhogy ezek tökéletesek lesznek.
Van egy adatbázisom amiben vannak : Cikkszám , Megnevezés. Ezeket irányított szűrővel szűrőm egy cellába beírtak alapján ami tökéletesen működik. Viszont azon gondolkodom, hogy megoldható-e valahogy az, hogy amikor keresek akkor ne csak a szövek elejétől keressen hanem akárhonnan. Láttam már ilyet valahol ott úgy működött a dolog, hogy beítam pl: %valami és kidobta "kisvalami" és a "nagyvalami" is. Nem tudom mennyire érthető hogy mit szeretnék, de reméllem igen. Előre is köszönöm
1. Vedd fel a munkalap A oszlopába az árucikkeket, a B oszlopba a cikkek árát. 2. Legyen C1, D1 és E1 értéke rendre "mennyiség", "cikk" és "ár" (vagyis ez egy fejléc). 3. Jelölj ki a D2-től kezdve lefelé annyi cellát, amennyit akarsz (akár az egész oszlopot is). Ezután a menüből válaszd ki, hogy Adatok -> Érvényesítés. Az érvényesítési feltételben a Megengedve mező értéke legyen "Lista", a Forrás mezőé legyen "=A:A" (idézőjelek nélkül). Ezzel a kijelölt cellákra megszabtad, hogy értéküket csak az A oszlopban felsorolt értékek közül lehet kiválasztani. 4. Az E2 cellába írd ezt a képletet: =HA(HIBÁS(FKERES(D2;A:B;2;HAMIS)*C2);"";FKERES(D2;A:B;2;HAMIS)*C2) 5. A képletet terjeszd ki lefelé amilyen mélyen akarod. 6. Teszteld a megoldást úgy, hogy a C és D oszlopokba különféle értékeket írogatsz. 7. Esetleg az A és B oszlopokat el is rejtheted (Formátum -> Oszlop -> Elrejtés)
Nekem egy olyan választéklistát kéne csinálnom ami tartalmazza az árakat is. ha pl az előtte lévő mezőben van egy darabszám akkor miután kiválasztom a listából hogy pl kenyér akkor a következő cellában szerepeljen ezek együttes ára. kb így nézne ki:
persze a kenyér cellája egy legördülőmenü lenne amiben sokfajta áru van és ez tartalmazza nyílván valahogy az árakat is. Ezt nem tudom, hogy hogyan oldjam meg. :(
Most látom csak, hogy a másolásnál a fórum lenyelte a patternből a visszaper-jeleket. De gondolom az eredetit próbáltad a hibatkozott oldalon, sajnos az sem tökéletes.
Nyilván lehet tökéletest írni, csak a pattern szintaktikát kell megérteni, nekem nincs most éppen erre időm.
Kipróbáltam :) Meglehetősen jól szűr. Egy apróságot azért találtam. Azt tapasztaltam, hogy a "vala..ki@valami.com" típust (tehát a felhasználónévben két v. több pont egymás után) átengedi. Regisztráltam egy ilyesmi email címet a freemail-en. A freemail elfogadta, és megcsinálta. Egy másik freemail-es címről tudtam is oda levelet küldeni. A céges Exchange szerverünk azonban visszadobta azzal, hogy "Az e-mail cím formátuma nem megfelelő."
<i> Bár nem vagyok biztos benne, hogy elvileg hány @ szerepelhet az email címben... talán a "valaki@valami.c@om" vagy a "valaki@@valami.com" is szabályos email címek? </
Nem hiszem hogy szabályos, mert akkor lehetne ilyen e-mail cím: @@@@@@@.com vagy valaki@@@@@.com Ha több @ lenne, a mailserver nem tudná szerintem beazonosítani a felhasználó nevet és a számítógép azonosítót
Ez jó :) Én Excelben még egyáltalán nem találkoztam regular expression lehetőséggel, igaz nem is kerestem, és az is igaz, hogy máshol se nagyon dolgoztam vele. Teszteltem a mintádat, elég jó, de két kukac átment rajta (pl. valaki@@valami.com). Ez nem tudom, hogy jó-e.
A linkről kiindulva eljutottam a Regular Expression Library honlapra, ahol ezt találtam:
http://regexlib.com/REDetails.aspx?regexp_id=1921
Ezt is teszteltem, ezen pedig a "valaki@valami.c@om" sztringgel tudtam kifogni.
Bár nem vagyok biztos benne, hogy elvileg hány @ szerepelhet az email címben... talán a "valaki@valami.c@om" vagy a "valaki@@valami.com" is szabályos email címek?
Segítséget szeretnék kérni hozzáértőktől: Olyan HA függvényt szeretnék csinálni ami egy étéktartományon belül igazat, ha azon kívül esik akkor hamisat mutat. Leírom egyszerűen amit szeretnék: ha mondjuk 'B1' 120-nál nagyobb de 1003-nál kissebb akkor igaz, ha nem akkor hamis. Magyarul nem tudom hogy a kissebb és nagyobbat hogy kell függvényben leírni.
Ez hogy nem jutott eszembe :( Ráadásul az én formom esetében még egyszerűbb is volt, mert csak ez az egy sor kellett 1 shift-tab-bal Application.SendKeys ("+{TAB}")
Ha mondjuk Form-on, szövegdobozzal csinálod, akkor az alábbi elképzelés jó lehet.
Private Sub CommandButton2_Click() Dim S As String, Valid As Boolean Dim kukac As Long, pont As Long, Dom As String Valid = True S = TextBox1.Text kukac = InStr(S, "@") '--> a @ pozíciója pont = InStrRev(S, ".") ' --> az utolsó pont pozíciója Dom = Mid(S, pont + 1) '--> az utolsó pont utáni rész
If kukac = 0 Then Valid = False ' --> ha nincs "@" If pont = 0 Then Valid = False ' --> ha nincs "." If pont = kukac + 1 Then Valid = False '--> ha "@" és "." között nincs karakter If pont < kukac Then Valid = False '--> ha az utolsó pont megelőzi a @-ot
If Dom <> "hu" Then Valid = False '--> ha a pont után nem "hu" van
If Not Valid Then MsgBox ("Az email cím hibásnak tűnik.") End Sub
Még be lehet építeni egy rakás kritériumot, amennyit csak akarsz. Egyes kritériumokat össze is lehet vonni, hogy a kód rövidebb, tömörebb legyen. Itt csak azért bontottam így ki, hogy egyértelműbb, érthetőbb legyen. De pl. az első 4 kritérium összevonható így: If (pont*kukac = 0) Or (pont < kukac + 2) Then Valid = False
Az egész kód lehet egy függvény is, vagy beépíthető a TextBox AfterUpdate ill. Exit eseménykezelőjébe. (Egyébként József megoldása a múltkori első kérdésre jobb, mint az enyém, mert nem enged ki a textbox-ból, amíg rossz a beírt adat.)
"És ahoz mi kell, hogy pl kijelölje a textbox tartalmát?"
Nem találtam közvetlenül ilyen lehetőséget. A Help azt írja, hogy SetFocus-nál nem jelöli ki a szövegdoboz tartalmát, függetlenül attól, hogy az AutoWordSelect tulajdonság mire van beállítva. Ezért csak kerülő megoldást tudok javasolni.
Algoritmus: 1. SetFocus 2. Tab 3. Shift + Tab
Kódban: Private Sub CommandButton1_Click() TextBox1.SetFocus Application.SendKeys ("{TAB}+{TAB}") End Sub
Egyelőre sajnos még nem. Azon gondolkodtam, hogy pl: beírja egy cellába a tartalmatn és keres-el megnézi, hogy van e benne @ és .hu vagy .com. Bár ez még így sem tökéletes.
A második kérdésre: legegyszerűbb megoldásnak nekem az tűnik, ha több textboxot használ erre egymás mellett, külön az email cím változó részeire (valaki, valami), és a köztük levő fix karaktereket pedig labeleken megjeleníted, és esetleg vizsgálni, hogy a szövegdobozokba ne kerüljön @ vagy .
Azt meg lehet valahogy oldani, hogy a form-on lévő texbox csak számot fogadjon el illetve
A TextBox az Exit eseményére kell ráépülni az ellenőrzéssel. Pl. csak számot fogadjon el
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) If TextBox1.Text <> "" And Not IsNumeric(TextBox1.Text) Then Cancel = True Else Cancel = False End If
Olyat nem tudok, ami (mint pl. az Access-ben) élből megakadályozná, hogy rossz adatot írjon be a felhasználó, viszont lehet írni utólagos vizsgálatot az AfterUpdate eseménybe. Pl:
Private Sub TextBox1_AfterUpdate() If Not (IsNumeric(TextBox1.Text) Or (TextBox1.Text = "")) Then MsgBox ("Számot írj be!") TextBox1.Text = "" End If End Sub
Ez a rutin megvizsgálja, hogy a textboxba szám van-e beírva, és ha nem az, akkor szól, és mellesleg törli a hibás értéket. Hasonlóképpen meg lehet oldani, hogy az email címnek szánt textbox is ellenőrizve legyen. Csak az kicsit bonyolultabbnak tűnik, legalábbis első ránézésre.
Azt meg lehet valahogy oldani, hogy a form-on lévő texbox csak számot fogadjon el illetve egy másik textbox-nak adott formátunak kell lennie (pl.: valaki@valami.hu). Előre is köszi.
Ilyet a Lista funkció nem tud sajnos. Ha semmiképpen nem akarsz makrós megoldást, akkor még lehet próbálkozni az Menü/Adatok/Űrlap funkciójával is, bár a leírásod alpján ez sem ezt csinálja.
Ez csak makróval fog menni. Én egy formon képzelném el beviteli mezőnek egy textboxszal + listbox ami mindig az utolsó üres sor feletti 4 sort mutatja.
Valahogy megcsinálnám én is, de a többiek jobban értenek hozzá biztosan segítenek.
hali, hogy még konkrétabb legyen, így néz ki a lap:
Az lenne a cél, hogy alaphelyzetben csak 4 sor látszódjon (10-13). A többi (14-35) csak akkor váljon láthatóvá, illetve nyomtatandóvá, ha a felett lévő sorban a panel nem üres, tehát miközben tölti ki az illető folyamatosan ugrálnak fel a sorok.
A tömbképletek úgy működnek, mint egy programban a ciklusok, más szóval a tömbképlet kiértékelésekor az Excel egy kis ciklust végigfuttat a képlet argumentumául szolgáló tartományon, és egyenként számol valamit az összetartozó cellákon. Hogy mit számol, az magától a képlettől függ.
Esetünkben a MAX függvény használ tömbszerű argumentumot. A C1 cellába írt képlet kiértékelésekor, a ciklus lefuttatása után a MAX függvény bemenő értékei így néznek ki: B1*(A1=A1) B2*(A2=A1) B3*(A3=A1) ... B6*(A6=A1)
Látható tehát, hogy a tömbön a ciklus úgy fut végig, hogy az A1 cella a B1 cellával van párosítva, az A2 a B2-vel, stb. A zárójelen belül logikai kifejezések vannak, amelyek lehetséges értékei az IGAZ illetve a HAMIS. Ezek számértéke matematikai műveletekben 1 illetve 0 (nulla).
Tehát, ha az An cellában lévő érték megegyezik az A1 cella értékével, akkor a zárójelben lévő kifejezés értéke 1, egyébként meg 0.
Ezt megszorozva a Bn cella értékével megkapjuk a B oszlop másolatát, azzal a különbséggel, hogy minden olyan dátum, amely mellett nem az A1 oszlopban lévő azonosító van, nullázódik. A Józsi által hozott példán szemléltetve B1*(A1=A1) = 07.01.02 B2*(A2=A1) = 0 B3*(A3=A1) = 07.06.01 B4*(A4=A1) = 07.03.01 B5*(A5=A1) = 0 B6*(A6=A1) = 0
Ez tehát a MAX függvény tényleges argumentumlistája, de még mindig csak a C1 cella kiértékelésénél tartunk.
A következő lépés, a HA() függvény már egyértelmű: ha a B1 értéke megegyezik a MAX függvény által visszaadott értékkel (vagyis a nem lenullázott dátumok legnagyobbikával), akkor "max" az eredmény, egyébként meg üres sztring.
A C2 cella kiértékelésekor a MAX függvény argumentumlistája: B1*(A1=A2) = 0 B2*(A2=A2) = 07.02.01 B3*(A3=A2) = 0 B4*(A4=A2) = 0 B5*(A5=A2) = 07.06.05 B6*(A6=A2) = 07.01.15
és a többi.
Ha mélyebben érdekel a téma, akkor keress rá a guglin az "array formula", "excel" kifejezésre, és bőven találsz anyagot. Példának itt egy (az első találat):
A végén nyomj Ctrl+Shift+Enter-t (ez a tömbképletek beviteli módja), amire az Excel automatikusan hozzáadja a kapcsos zárójeleket, tehát a végeredmény így néz ki:
Természetesen a $B$1:$B$6 és $A$1:$A$6 tartományok tetszés szerint módosíthatóak. Ha módosítod a tömbképletet, ne feledd, hogy azt mindig Ctrl+Shift+Enter-rel kell bevinni. Ha egy cellában már működik, akkor ugyanúgy kiterjeszthető a szomszédos cellákra mint bármely hagyományos képlet.
Azonosító Dátum Maxdate 1-10001 07.01.02 1-10025 07.02.01 1-10001 07.06.01 max 1-10001 07.03.01 1-10025 07.06.05 max 1-10025 07.01.15
Egy olyan képletet szeretnék a Maxdate oszlopba, amely pl. kiírja, hogy "max", ha adott azonosítójú tételhez ott van a legkésőbbi dátum. Pl. 1-10001 háromszor fordul elő, de 07.06.01-es dátum a legkésőbbi közülük, tehát kell a "max" szöveg.
Hogy példával is éljek: Nekem van egy ilyen listám, amit átkapcsoltam oldaltörés nézetre, így a listatartományt nem képező sorok/oszlopok szürkék. Ha beírok a beszúrási sorba ( ami a Lista funkciója) akkor a nyomtatási tartomyány is igazodik a listához...
Meg lehet csinálni, most hirtelen két út jut eszembe. Az igaz, hogy egyik sem túl elegáns...
1.) A Worksheet_Change eseményt fel lehet használni erre is. Írni kell egy makrót, ami figyeli, hogy hol, mi változik meg, és annak megfelelően formázza a változásban érintett sorokat.
2.) Írni kell egy felhasználói függvényt, amelynek bemenő paraméterei a kérdéses cellák. Ez a függvény mondjuk üres sztring értékkel tér vissza, de közben megcsinálja a sorok formázását a bemenő paraméterek értéke alapján.
Sajnos a problémaleírásod annyira általános (és nem is egyértelmű), hogy ennél konkrátabb javaslatot nem tudok tenni.
A lényeg az, hogy egy kitöltendő űrlapról lenne szó, amelyben előre nem lehet tudni, hogy hány sort töltenek ki egy-egy részben. Nem akarom, hogy az üres űrlapban eleve ott legyen a sok kitöltetlen sor, hanem azt szeretném, hogy egy az újabb sort csak akkor fedje fel, ha már a fölötte lévőbe beírtak valamit.
(nem hinném, hogy makró nélkül meg lehet oldani, de gondoltam egy kérdést megér...)
az lenne a kérdés, hogy vajon meg lehet-e csinálni, hogy egy sor csak akkor látszódjék, ha a felette lévő sor adott cellájában van valami, vagy a cella értéke valamivel egyenlő. Előre is köszönöm!
ja, bocs, szóval azt ami a munkalapon van azt szeretném sorbaállítani...több szempont alapján, tehát garantáltan mixelnie kellene az adatokat a 3 munkalapról.
igen. szóval ki tudom jelölni az összes 3 db munkalapot, viszont sorrendbe kellene állítanom a dolgokat több szempont alapján. de ahogy nézem a sorbarakás funkció nem is aktív ennél a csoportos kijelölésnél. Jajaj...
Munkalapot akartál mondani? Több munkalapot kijelülni úgy tudsz, hogy a ctrl billentyű nyomvatartásával rákattintassz a kijelölendő munkalapokra. A munkalapokat akarod sorbaállítanil, vagy ami azokon van? A többi nekem nem egyértelmű.
Az szeretném csinálni egyrészt, hogy egyszerre kijelölni több munkafüzetet, ahol sorrendbe kellene állítani a dolgokat.
A másik, hogy van egy nagyon hosszú listám és hozzá kell még toldanom egy hosszú listát. Hogyancsináljam azt, hogy automatikusan tördelje fel a bemásolandó dolgot munkafüzetre, ha szükséges.
Rájöttem egy tök jó dologra,megosztom, hátha vki még nem ismeri (mint eddig én sem): Ha "A1" dátum akkor B1 =SZÖVEG(HÉT.NAPJA(A1;1); "nnnn") Ez megmondja milyen nap van.
Egy óriási problémám lenne excelben. Van egy xls fájlom amiben nem frissülnek a függvények, de ha megnyitom ezt a fájlt akkor utána már más excel táblában sem frissül. Ahoz hogy újra működjön be kell zárni az excelt. Van-e valakinek ötlete hogy mi lehet ezzel a fájlal???
Neki azt kellene kiszámolnia, hogy a konrét vásárlás a program kezdetétől hányadik hónapban történt.
DÁTUMTÓLIG(kezdődátum;végdátum;különbségtípus) függvény típus: "y"- években "m" -hónapokban "d" - napokban "ym" - tört éven belüli hónap (pl. x év y hónapnál y adja vissza" "yd" -tört éven belüli nap "md" -tört hónapon belüli nap Nincs benne az Excel magyar helpben, és függvényvarázsló sem hozza fel, így kézzel kell beírni. Angolul DATEDIFF a függvény neve. Üdv József
A negatív számok zárójelben történő megjelenítése elsősorban a pénzügyi kimutatásokra jellemző az USA-ban, valószínűleg azért hogy a negatív értékek, elsősorban nyomtatásban jobban elkülöníthetőek legyenek. Csak példaképpen, a General Motors 2. negyedéves 10Q riportjának eredménykimutatása:
Láthatod, hogy a szöveges részben is jelzik, hogy a zárójeles számok negatív értékek / veszteséget jelentenek : Operating income (loss) = Működési eredmény (veszteség)
A következő problémát csak nagyon lassú reakcióidővel sikerült megoldanom, ezért kérném a segítségeteket.
Adott 11 munkalap egy munkafüzetben. A munkalapok "A" oszlopainak soraiban azonosítószámok találhatóak. Akár többször is ugyanaz. (235 azonosítószám) Egy 12-ik munkalapon az azonosítószám alapján össze kell gyűjtenem, hogy milyen érékek találhatóak hozzá és mi azoknak az értékeknek az oszlopcíme.
Összehoztam egy működőképes makrót, de iszonyatlassú...
Egy óriási problémám lenne excelben. Van egy xls fájlom amiben nem frissülnek a függvények, de ha megnyitom ezt a fájlt akkor utána már más excel táblában sem frissül. Ahoz hogy újra működjön be kell zárni az excelt. Van-e valakinek ötlete hogy mi lehet ezzel a fájlal???
Lehet, hogy az USA-ban hagyomány a negatív pénzösszegeknél a zárójelezés. Onnan gondolom, hogy a default ez szokott lenni a területi beállításoknál a pénznem esetében. Mint ahogyan az ezres szeparátor a vessző, Magyarországon viszont a szóköz.
Keresgéltem is egy kicsit, nem találtam semmit... Kipróbáltam, nálam nem történt semmi, a beírt érték változatlanul megjelent a cellában. Nem tudom mi lehet ez nálad:(
Eddig én is azt hittem, de akkor miért írja ki a zárójelben levő szám ellentettjét? Illetve csak pozitív szám esetén. Próbáld ki! Ha negatív számot írok bele, akkor az történik, amit vártam, vagyis megmarad a beírt szövegem szövegként.
Ha mondjuk az A oszlopban vannak számértékek, amelyekből a B oszlopban képlettel számolunk akarunk valamit, és az A oszlopban nem folytonosan szerepelnek az értékek, és ki akarom tölteni a B oszlopot képlettel:
Beírom a képletet a B oszlop első (vagy ahonnan kezdeni akarom) cellájába.
Az utolsó cellába állok a B oszlopban, ahol még szerepel A-ban érték, majd:
ctrl-shift - nyil fel: a B oszlopot kijelöli az aktuális cellától az elejéig.
Dim T As Range Dim C As Range Dim S As Long Dim O As Long Dim elsoSora As Long Dim elsoOszlopa As Long Dim KCella As Range Dim Mitkeres Dim Mitirjonbe On Error GoTo Hiba
'keresendo cella itt adható meg: pl. A1 Set KCella = Range("A1")
'honnan keresse: elsoSora = 2 elsoOszlopa = 1
'mit írjon be: Mitirjonbe = 2
Mitkeres = KCella S = ActiveSheet.UsedRange.Rows.Count O = ActiveSheet.UsedRange.Columns.Count Set T = Range(Cells(elsoSora, elsoOszlopa), Cells(S, O)) For Each C In T If C = Mitkeres And Trim(Cells(KCella.Row, KCella.Column)) <> "" _ And Not (C.Row = KCella.Row And C.Column = KCella.Column) Then _ Cells(C.Row, C.Column + 1) = Mitirjonbe Next Set T = Nothing Set KCella = Nothing Exit Sub Hiba: Set T = Nothing Set KCella = Nothing End Sub
Az általad írt "keres"-sel lenne pár kérdésem. Azt hol lehet meghatározni, hogy melyik sortól keressen, illetve ha nem az "A" oszlopban szeretnék keresni?
Igen, tényleg az zavart engem, hogy ha megváltoztatom a számformátumot, akkor a függvényem nem követte azonnal, csak ha frissítettem. Viszont a másik amit te csináltál az tisztább, szárazabb érzés, jobban használható mint az enyém, Köszönöm.
Én excelben egy gombot szeretnék készíteni amit ha megnyomunk bezáródik az aktuális munkalap. Kérdésem hogy a ctrl+f4-et milyen formába hogyan illesszem be? thx
Csak akkor nem frissül ha nem változtatsz semmit csak a cellaformátumot. Az application.volatile parancs ekkor nem működik. Esetleg segíthet a
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Application.Calculate End Sub
Ehhez is legalább egy másik cellát ki kell hogy jelölj.
...és ha már megcsináltam, bemásolom ezt is, ez magát a currency kódot adja eredményként.
Public Function valuta(ByVal cella As Range) As String Application.Volatile
If cella.Cells.Count > 1 Then Exit Function t = cella.NumberFormat i = Application.WorksheetFunction.Find("$", t, 1)
If Mid(t, i + 1, 1) = "#" Then valuta = "$" If Mid(t, i + 2, 1) = "-" Then valuta = Mid(t, i + 1, 1) If Mid(t, i + 3, 1) = "-" Then valuta = Mid(t, i + 1, 2) If valuta = "" Then valuta = Mid(t, i + 1, 3)
ez az autofit megoldás csak akkor megy ha folytonos adatsor van a szomszédos cellákban. Használd ctrl+c és ctrl+v - Shift+Enter+le/felkurzorgombok vagy az egyéb kijelölési lehetőségeket (lásd excel súgója...)
Tudja valaki miért van az, hogy ha beírok egy függvényt és szeretném azt átvinni az alatta lévő cellákra (ergo az oszlopon belül másolnám), akkor normál esetben ha ráklikkelek az jobb alsó sarokra, akkor átmásloja a függvényt. DE valami miatt ez nem mindig működik...van valakinek ötlete, hogy miért nem működik? Mit lehet csinálni, ha nem akarom végig húzni az egeremmel (ami ráadásul szar) mind a 12ezer sort?
Tudtok arra valamilyen képletes trükköt, hogy egy szám formátumát hogy lehetne kinyerni? Makróval tudom hopgy kell, de az sajnos kivitelezhetetlen az adott helyzetben. Ismerem a Cella függvényt is de az sem megoldás.... Köszönöm előre is ha vkinek van ötlete.
1, Irányított szűrő használata esetén hogyan tudom megadni, hogy a 0 és a 2 értékekre szűrjön? Irányított szűrő esetén a VAGY művelettel összekapcsolt feltételeket külön sorban kell megadni a szűrőtartományban, pl. így Mezőnév 0 2
Jelentése Mezőnév értéke=0 VAGY Mezőnév értéke=2. Üdv József
Hát, ha már összebénáztam, bemásolom az én verziómat is az 2.-re:
Sub KERES() Dim KERES, BeIr As Byte KERES = Cells(1, 1).Value BeIr = 2 Db = Application.CountIf(Range("1:65536"), KERES)
For i = 1 To Db Step 1 Cells.Find(What:=KERES, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _ xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _ , SearchFormat:=False).Activate Cells.FindNext(After:=ActiveCell).Activate ActiveCell.Offset(0, 1).Value = BeIr Next End Sub
Dim T As Range Dim C As Range Dim S As Long Dim O As Long On Error GoTo Hiba S = ActiveSheet.UsedRange.Rows.Count O = ActiveSheet.UsedRange.Columns.Count Set T = Range(Cells(1, 1), Cells(S, O)) For Each C In T If C = Cells(1, 1) And Trim(Cells(1, 1)) <> "" _ And Not (C.Row = 1 And C.Column = 1) Then Cells(C.Row, C.Column + 1) = 2 Next Set T = Nothing Exit Sub Hiba: Set T = Nothing
1, Irányított szűrő használata esetén hogyan tudom megadni, hogy a 0 és a 2 értékekre szűrjön? A '=0 '=2 használata esetén valamilyért együttetesen (külön cellába) nincs találat. Ha csak az egyiket használom akkor működik.
2, Makróval szeretném elérni: az A1-ben lévő szöveget megkeresi a táblázatban majd a találat melletti cellának az értékét átírja 2-re.
Az is lehetséges, hogy több munkalap van kijelölve egyszerre, ilyenkor jelenik meg zárójelben a címsorban lévő filenév mellett, hogy [csoport]. Pl lehet hogy ctrl+munkalapra kattintással, vagy Shift+Ctrl+pgdown/up billentyűkombinációval ezt érted el...
ilynkor rá kell kattintani vmelyik munkalapra és megszűnik a csoportos kijelölés.
Eszközök - Közös használat - Szerkesztés - Közös használat engedélyezés mezőben törölni a pipát. Részletes leírás a súgóban a közös használat -ra keresve megtalálható.
Csak kinézetileg zavaró a nulla? Akkor a feltételes formázással állítsd be, hogy nulla esetén ugyanolyan legyen (gondolom fehér) a karakterek színe is, mint a háttéré.
Ha sehogy se szeretnéd a nullát, akkor a keresést tedd bele egy IF-be (HA-ba) valahogy így: =HA(FKERES($B2;Munka1!$1:$65536;6;HAMIS)=0;" ";FKERES($B2;Munka1!$1:$65536;6;HAMIS)) így a nulla helyett egy szóköz lesz az eredmény, ami már nem fog zavarni.
Excel munkafüzetet használok. Az első lapon tárolom az alap adatokat, azonosító, név, irányítószám, település név, utca, házszám, helyrajzi szám. A többi lapon eseményeket az első lapon szereplőkkel. Az FKERES függvénnyel /=FKERES($B2;Munka1!$1:$65536;6;HAMIS)/az alap adatok átkerülnek és körlevélben használom fel.
A gondom az, ha üres egy cella az első lapon /elsősorban a házszám, vagy a helyrajzi szám / a keresés eredményeképpen "0" jelenik meg mint érték.
A HA és SZÖVEG.E függvényt körkörös hivatkozás miatt nem engedi. Újabb oszlopot nem szeretnék beszúrni. Tudtok valami megoldást?
Lehet pl. logaritmikusan ábrázoltatni (az y tengelyen) az adatokat, akkor normálisabban néz ki. A diagramon az y tengelyre kattintva, Tengely formázása Skála, Logaritmikus skála-t válalasztva.
De lehet több y tengelyt is megadni, több adatsorhoz. A kisebb számokhoz az egyik tengelyt, a nagyobbakhoz a másikat rendelve. Ha már fel van véve több adatsor, akkor adatsorra kattintva, adatsor formázása tengely, első tengelyhez, második tengelyhez opciók...
Biztos nagyon meglepő de egy excelhez kapcsolódó kérdésem lenne: nagyon különböző számokból (pl.: 1,2,10,1.000.000, 25.000) szeretnék diagramot (oszlop) készíteni de úgy,hogy az normálisan nézzen ki. Tudom,hogy lehetséges (mert már láttam) az adatokat (és így a tengelyt) megtörni,hogy használható legyen az ábra csak éppen nem tudom hogyan? Ebben kérném a tisztelt nagyérdemű :) segítségét!
Pl. felhasználói függvényes megoldás, ha van legalább egy space a közterület neve előtt.
Az első Szetvalaszt1 függvény a közterület előtti részt adja az akutális cellában, a második a közterületet:
Public Function Szetvalaszt1(Be As Range) As String Dim A As String A = Trim$(Cells(Be.Row, Be.Column).Value) Szetvalaszt1 = Left(A, InStrRev(A, " ")) End Function
Public Function Szetvalaszt2(Be As Range) As String Dim A As String A = Trim$(Cells(Be.Row, Be.Column).Value) Szetvalaszt2 = Right(A, Len(A) - InStrRev(A, " ")) End Function
Pl.
A1 cellában: Dózsa György körút, és B1-ben =Szetvalaszt1(A1) akkor B1-ben
Dózsa György -et adja, ha C1-ban Szetvalaszt2(A1) ,akkor ide a körút kerül.
Nekem a következő gondom lenne: adott egy oszlop, tele utcanevekkel és a közterületek megnevezésével.
Kb.
Bajcsy-Zs. E. utcaNyírfa utca
Kossuth Lajos tér
Dózsa György körút
...
Ezt kellene szétbontanom úgy, hogy az utca, tér, körút, stb. közterület jellegek külön oszlopba kerüljenek. Elég lenne ha az utolsó space utáni részt vágnám le, csak nem jöttem rá hogyan lehetne az utolsót megkeresi, amikor lehet 2, 3 vagy 4 is akár a cellában (illetve van ahol nincs is space, mert egyszerűen lemaradt a végéről hogy utca vagy akármi, de ez a pár kivétel már kevésbé aggaszt).
Jól értetted, csak sorbarendezve működik. Nem rég én is ugyanerre a problémára kerestem megoldást és nekem sem jutott eszembe, hogy rákeressek MAXIF-re. Megjegyzem tényleg nagyon nagyon jó ez a függvény és egyéb hasznos dolgokat is találtam ezen az oldalon. Kösz én is
köszi a segítséget, a lenti linken egy jóval bonyolultabb, de tökéletesen működő megoldást találtam... nem tölthet el a büszkeség, h önerőből oldottam meg a problémát, de legalább gyorsan... :-)
nálam sajnos a te képleted nem működik tökéletesen, ha jól értelmezem, akkor ez csak akkor működik jól, ha a feltételek szerint sorba van rendezve a tábla, sajnos málam ez nincs (nem lehet) így... azért term. köszönöm a te segítségedet is, ebből a képletből is tanultam.
Ha "A" oszlopban azok az adatok vannak, melyek szerint csoportosítani kell és "F" oszlopban az értékek, akkor pl: "H" oszlopba le lehet húznia köv. képletet:
a SUMIF, ill. COUNTIF függvényekhez teljesen hasonlóan működő "MAXIF", ill. "MINIF" függvények léteznek / létezhetnek valahol? Vagy makróban már megírta valaki?
Ha "fül" alatt munkalapot értesz, akkor készíts egy biztonsági másolatot a fájlodról, aztán próbáld ki ezt a makrót:
Sub egyesit() Dim Rng As Range, WS As Worksheet, BWS As Worksheet Set BWS = ThisWorkbook.Worksheets(1) For Each WS In ThisWorkbook.Worksheets If WS.Index > 1 Then Set Rng = WS.Range("A1", WS.Range("A1").SpecialCells(xlCellTypeLastCell)) Rng.Copy Intersect(BWS.Range("A1").SpecialCells(xlCellTypeLastCell).EntireRow, _ BWS.Range("A:A")).Offset(2) End If Next End Sub
"Nemzetközi Makrólap" mire jó , mire lehet használni és hogy? Ismeri ezt vki?
Tudomásom szerint még az Excel 4.0 és az előtti verziókban volt jelentősége, amikor még nem volt (majdnem :( ) egységes programozási felülete az Excelnek, mint most a VBA. Az ilyen munkalapra rakott makrók bármilyen nyelvű Excel változaton futottak. Jelenleg már nincs jeletősége. Üdv József
Akkor vagy hibával kilép, mert nincs olyan mezőnév az excelben, mint a kódban. Vagy a VBA szerkesztőből futtatod le... Nem tudok másra gondolni, mert pl ha hozzárendelem egy gmakrógombhoz, akkor nem történik semmi ilyesmi amit írsz.