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.
kipróbáltam, nem mőködik egyenlőre. biztosan valamit elrontok, de nem jelez, hogy dupla. Nem tudom jól értetted-e hogy mit szeretnék.
van az "a" oszlop, ahová beérkeznek a vonalkód adatok. Ha beérkezik egy olyan adat,amit már egyszer beolvastam valamikor (mondjuk 50 sorral ezelőtt) akkor jelezzen, hogy dupla. Így kellene működnie a képletednek, amit adtál?
Vonalkód olvasóval olvasom be a kódokat az excel cellába, és az lenne a feladat, hogy ha már egyszer beolvasott egy számot, és már másodszor szeretném (véletlenül), azt rögtön jelezze...
Hát ez óriási! Nagyon szépen köszönöm a segítséget és a türelmet, hogy ennyire leegyszerűsítve elmagyaráztad! Így mostmár nem csak a feladat oldódott meg, de meg is értettem a lényeget! Le a kalappal!!!
Ha az éves 6% kamatrátát elosztod 12-vel és azt írod be, az nagyon jó közelítés, de nem pontos - főleg magasabb kamatlábak esetén - mivel az adott havi kamat tőkésedik (azaz kamatos kamat a számítás).
Ezért ha 12 hónap alatt a 6% tizenketted részét veszed havonta, akkor az 1 forintod az év végére
(1+0,06/12)^12-1=6,16778118645 %-os éves kamatnak felel meg.
A MÉ és minden pénzügyi képlet a kamatos kamattal számol.
Ha tehát azt akarod, hogy tényleges éves 6%-os kamattal számoljon a képlet, akkor a rátához
nem 0,06/12-t kell beírnod, hanem (1+0,06)^(1/12) - 1-et, vagyis a 6 %-os kamattényezőnek a tizenkettedik gyökéből számított - havi - kamatlábat.
Ez a képletben néhány forinttal nagyobb összeget fog adni jelenértéknek, mivel a kamatláb alacsonyabb.
(Ajánlom még figyelmedbe a pénz időértékéről szóló írásokat.)
Bocs, de ebbe most nincs kedvem beleásni magam, talán majd valaki más... Ezt a függvényt az életben nem használtam még, és nem ma este fogom teli hassal elkezdeni.
Pfú nagyon köszönöm, nagyban elősegítetted a megértést!
Még csak egy olyan kérdés, hogy a vázolt feladatban a MÉ függvényt használva: 23 354, 05 jött ki eredményül.
Most pedig a Te útmutatásod alapján írtam egy ilyen képletet: =((2000*(1+(0.06/12)/(100))^12)-1)*12 és ezzel 24002.4 jön ki akkor most ez lenne a pontos érték? Vagy valamit esetleg elrontottam a képletben?
6% az nem 6, hanem 0,06. A 0,005 a 0,5%-nak a tizedestört alakja, de ez nem Excel, hanem számtan. Ha az Excelben ez problémát okoz, akkor nem jó a cella formázása.
Az egy elvi kérdés, hogy éves vagy havi kamatlábbal számol a bank. Vagyis mennyi időnként írják jóvá. Ha havonta x% a kamat, akkor egy év alatt nyilván (1+x/100)^12 a szorzó, hiszen a második hónapban már az első havi kamattal megnövelt összeg hízik tovább. Ebből visszafelé ki lehet találni, mi dolga a 12-ik gyöknek. De ez is számtan.
Sziasztok! Következő feladatot kaptam a tanáromtól: Pénzügyileg melyik a kedvezőbb? 12 hónapon keresztül megvásárolni a bérletet minden hónap elején 2000 Ft-ért, vagy éves bérletet venni év elején 23 000 FT-ért? A kamtláb évi 6%)
Adatok: A1 cella: 12 A2 cella: 0,005 A3 cella: 2000 A4 cellába meghívom az MÉ függvényt és kiszámolja, 23 354,05-t hoz ki eredménynek. Ráta: A2 Időszakok száma: A1 Részlet: A3 Típus: 1 Ez így rendben is van azt mondta így elfogadja a megoldást. DE! Azt mondta ez így egy kerekítés és aki több pontot szeretne az a 12.-ik gyökkel számoljon. Nem tudok rájönni mit ért ez alatt már mint hova kellene beírni és melyik számnak a 12.-ik gyökét valaki érti esetleg? Ennél több infót nem adott, pontosan lejegyeztem mindent...Nagyon nagyon örülnék ha valaki megfejtené ezt!
U.I.: Mellesleg már az sem teljesen világos, hogy ha az éves kamatláb 6% akkor a havi miért/hogy lesz 0,005. Mikor 6/12=0,5-el. Akkor honnan jön ez a 0,005!?
Egyébként te vezettél rá a megoldásra. Ha nem írod be 23315-ben, hogy hogy lehet egzakt módon méretre állítani a képet, én nem biztos, hogy rájövök, és akkor még mindig egy zsákutcának tűnő sikátorban botorkálnék, messze a megoldástól.
Select ügyben abszolút egyetértek veled. Vannak azonban olyan esetek - sajnos - amikor a nyavalyás excel csak akkor hajlandó az adott objektumon végrehajtani a kívánt módosításokat, ha az éppen ki van választva. Most éppen nem tudok ilyen példát hirtelen, de szívtam már egy-két esetben emiatt.
Talán az application.dialogs(xx).show-val lehetne valamit csinálni, de még nem jutottam el odáig, hogy kipróbáljam, a help és az MSDN pedig ebben a tekintetben abszolut 0-hoz közelít.
Mivel én nem konyítok a makróhoz .....ssssssemmit...már az is teljesítmény részemről, hogy amit küldtél, be tudtam másolni ahova kell, hogy működjön.
És voila....megoldotta a problémámat - még ha szerinted vagy bárki szerint is ez nem szép megoldás. De legalább van!!!
Mellesleg úgy érzem magam ezen az oldalon, mint egy általános elsős az egyetemisták között. Épp, hogy ismerkedem a betükkel. Csak nagyra tárt szemmekkel figyelek. Egy kukkot sem értek az egész oldalból, agyaltam is rajta, hogy merjek-e regisztrálni, ezért ezt megelőzően vagy egy egy hónapon át inkább próbáltam innen-onnan megoldást szerezni a problémámra de sikertelenül. Szóval a szükség hozott ide mielőtt feladnám de sikerrel jártam.
Mégegyszer köszönet. Persze ha ezt még tudod tökéletesíteni, hogy szerinted is "szép megoldás" legyen küldjed csak, kiváncsian várom!
Köszönet neked is Fferi50 és mindenki másnak is, aki bármilyen próbálkozást tett a probléma megoldására.
A Select ellen régóta kampányolok itt, mert az esetek döntő többségében fölösleges. Azért Select-álsz valamit, hogy aztán a Selection által hivatkozott objektumon hajts végre valami műveletet. Ennek mi értelme? Az objektumokat direkben kell meghivatkozni, egyértelmű elérési úttal. Ha az objektumokra Selection-nel hivatkozol, akkor a kódod annyira lesz robusztus, mint mondjuk a kártyavár. Ráadásul a kód megírását is bonyolultabbá teszi. Próbáld ki. Másold be a kódmodulra ezeket:
Sub teszt()
'Select Range("A1").Select Selection
'No select Range("A1") End Sub
Tegyél a Selection után pontot, mintha pl. az Interior.ColorIndex-et akarnád beállítani. Mit tapasztalsz?
Most tegyél a Range("A1") után pontot, mintha pl. az Interior.ColorIndex-et akarnád beállítani. Mit tapasztalsz?
Az intellisense (intelligens kódkiegészítő) nem működik Selection-nel, mert f.ngja nincs, hogy a Selection milyen ojektumot takar. Range("A1") esetében tudja, és ezért csak azokat a tulajdonságokat és műveleteket hozza fel, amelyek a Range típusú objektumra értelmezettek.
A SendKeys meg végképp a programozás megcsúfolása. A legbizonytalanabb kimenetelű dolog, amit Excelben el tudok képzelni. A bolygók állásától talán nem függ az eredménye, de minden mástól igen. Vészhelyzetben oké lehet, de minden más esetben kerülendő. Például vegyük azt a kódot, amit beküldtem. Mi van, ha pl. elszámoltam a TAB-okat, és rossz helyen "nyomok" ENTER-t? Vagy mi van, ha az Excelnek idő kell, hogy egy SendKeys-sel indított feladatot végrehajtson, és addig nem tud fogadni új billentyűparancsokat, de a kódom meg rendületlenül küldi őket? A gép sebességétől függő számú lépés kimarad, aztán megy tovább?
Hogy ne kelljen Jimmynek elismételnie a mostanában a témában elhangzottakat, készítettem egy kis összeállítást az elmúlt negyedévben itt született indoklásokról a select utasítás mellőzésének érdekében:
Ha rejtett Comment-ek vannak, azokat előbb meg kell jeleníteni, hogy a Select ne akadjon ki:
Sub Megjegyzem() Dim sh As Shape, cm As Comment, i As Long For i = 1 To 2 For Each cm In ActiveSheet.Comments cm.Visible = True Set sh = cm.Shape sh.Select DoEvents Application.SendKeys "^1" Application.SendKeys "{TAB}" Application.SendKeys "{TAB}" Application.SendKeys "{TAB}" Application.SendKeys "{TAB}" Application.SendKeys "{TAB}" Application.SendKeys "{TAB}" Application.SendKeys "{TAB}" Application.SendKeys "{ENTER}" Application.SendKeys "{TAB}" Application.SendKeys "{ENTER}" cm.Visible = False Next Next End Sub
Meg fogom kövezni magam ezért a makróért, de nincs jobb ötletem, mint Select és Sendkeys, a két leginkább kerülendő cucc.
Sub Megjegyzem() Dim sh As Shape, cm As Comment, i As Long For i = 1 To 2 For Each cm In ActiveSheet.Comments Set sh = cm.Shape sh.Select DoEvents Application.SendKeys "^1" Application.SendKeys "{TAB}" Application.SendKeys "{TAB}" Application.SendKeys "{TAB}" Application.SendKeys "{TAB}" Application.SendKeys "{TAB}" Application.SendKeys "{TAB}" Application.SendKeys "{TAB}" Application.SendKeys "{ENTER}" Application.SendKeys "{TAB}" Application.SendKeys "{ENTER}" Next Next End Sub
És hogy miért kell a For i = 1 To 2 ciklus?
Halvány lila gőzöm sincs. Azt tapasztaltam, hogy ha nincs ismétlés, akkor az első komment képe kimarad a formázásból. Ha kétszer egymás után lefuttatom ugyanazt, akkor az első is átállítódik.
Ami feltétlenül szükséges előkészület:
Egy képen csináld meg méret helyreállítását. Ez azért kell, hogy amikor legközelebb feljön a Megjegyzés formázása ablak, akkor a Méret fül legyen felül.
A kód működésére nincs garancia. Az egyik gépemen fut, a másikon nem...
Kitöltendő cellákra adatérvényesítést használok, részben szabály nélkül, csak a felirat kedvéért.
Rákattintva a megjelenő szövegre egy vatag keretet láttam körülötte. Ekkor egérrel odébb lehetett húzni.
Na ez az, amit nem kellett volna. Soha többé nem bírtam visszatenni a helyére, mert akárhogy próbálkozom, innentől fogva az ÖSSZES cella érvényesítő szövege azon a helyen jelenik meg, ahova azt az egyet húztam, bármelyik is legyen az. Akár méterekre a cellától, ahova tartozik. És nem lehet visszavonni. Mentést meg nem csináltam közvetlenül előtte.
Szerencsére két hasonló táblázatom van, a rontottat eldobtam, majd visszamentem a másikból.
A 2007-es excelben is úgy van mint a 2007-ben. A sorvektor hatványozásánál a pontosvessző az elválasztójel, az oszopvektor hatványozásánál pedig a backslash. Nagy meglátásod volt ezt felfedezni, mivel a súgóban erről sehol semmi.
És ezzel meg is van a többször visszatért kérdésemre a válasz, hogy mi a fenének kellett transzponálni a LIN.ILL képletben. Mert aki kiokumlálta a képletet, az is annyit tudott, hogy a default elválasztójel csak a sorvektoroknál müködik. Így hát transzponált. Ahelyett, hogy konzultált volna veled, hogy megmond neki, hogy egyszerűbb lenne backslasht használni :)))))
Szeretnék még megemlíteni neked valamit. Most hogy megint szóbahoztad hogy dátumok az x változóid, az az érzésem, hogy a trendszámításodhoz a harmadfoku polinomnál sokkal adekvátabb a Fourier analizís. Az Adatelemzés excelbővítmény tartalmazza.
Igen, köszönöm. Valószínűleg maradok az egy munkalapos verziónál. Ronda, de működni fog. (A probléma egyébként nem bővebb annál, ami le volt itt írva.)
Valóban, magában a fileban vannak a képek tárolva.
Viszont: Mi lenne, ha egyszer rászánnád magad és végigmennél a megjegyzéseken az alábbi makróval:
for each cmnt in activesheet.comments
cmnt.visible=true
stop
'itt átmész az adott oldalra és beállítod az alaphelyzetet, utána visszajössz.
hossz=cmnt.shape.height ' itt elmentheted a méreteket, ahova akarod, hogy később ne kelljen vele foglalkozni.
szel=cmnt.shape.width
cmnt.visible=false
next
A méret visszaállítás már a korábban leírt makróval megy, ahova a szélességet, hosszúságot az elmentett helyről veszed.
Cserébe még próbálkozom kibányászni az alaphelyzet beállítását - mert a metódus (SetShapesDefaultProperties)meg van rá, csak valamiért nem akarja megenni.
Szerintem az Excel a megjegyzésekben tárolt képeket nem külön tárolja, hanem a mentett fájlban...ezt a fájl méretéből okoskodtam ki, ami nálam 40Mb körül mozog.