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.
Önmagában egyik sem jobb vagy rosszabb megoldás, csak akkor, ha tudjuk, mi az elérendő cél. A különbségek nagyjából ezek:
Variáció1:
1) a teljes cellatartalmat másolja, képlettel, formázással, megjegyzéssel együtt
2) Ha a kód további részében még bármit akarsz kezdeni a másolás forrás- és céltartományával, akkor azokat nem kell újra definiálni, hiszen a CopyRng és Dest range objektumok továbbra is bevetésre készen állnak.
Variáció2:
1) Csak a cellák értékét írja át.
2) A másolás forrás- és céltartományának definíciója nem marad meg. Ráadásul a céltartományt nem is tudod még egyszer definiálni az addig használt módszerrel, mert közben megváltozik a UsedRange.
Az előzőhöz még annyit, hogy ha a csatolt kép egy kimutatást ábrázol, az értékeit át kell másolnod valahova, és oda kell beírnod a sorok kitöltését és a képleteket, mert a kimutatásba nem tudsz beírni.
Kezdd azzal, hogy az Item Code oszlopot (A oszlop?) feltöltöd. Kijelölöd a tartományt, ugrás menü (Ctrl+g), irányított, üres cellák. Beírsz egy egyenlőség jelet, és nyomsz egy fel nyilat. Ez minden üres cellába beír egy hivatkozást, ami a fölötte lévő cellára mutat. Ctrl+enterrel beviszed a képleteket.
Ha bántja a szemedet a sokszor szereplő azonos adat, azonnal, míg ki van jelölve, háttér színűre állíthatod a karakterek színét.
Jó, ha az oszlopban a képletek helyére irányítottan rögtön beilleszted az értéküket, mert egy rendezés után másképp galibát okozhat.
A következő kérdésben szeretnék segítséget kérni! Adott egy hatalmas táblázat, mely egy vállalat múltbéli rendelési adatait tartalmazza (portugál nyelvű, de a problémám szempontjából ez lényegtelen). Ebből lekérdezéssel elkészítettem egy olyan kimutatást, mely az egyes termékek rendelési adatait tartalmazza, az egyszerűség kedvéért most csak: egységár, rendelt mennyiség, rendelés értéke (ezt láthatjátok lentebb). Mivel az év során az árak mozogtak, így egy tétethez több egységár is tartozik. A cél az lenne, hogy minden termékre szeretném kimutatni, hogy mennyi volt a legalacsonyabb és a legmagasabb egységár. A probláma az, hogy nem ugyanannyiszor változott a termékek ára, van ami változatlan végig, van ami akár 10x is változott. A legkisebb és legnagyobb egységárat szeretném kiszámoltatni minden egyes item code mellé, ahogy a táblázatban látható. Képlettel akárhogy próbáltam, nem tudtam rájönni a megoldásra. Ha valakinek van ötlete, az nagy segítség lenne!
A Vezérlők eszköztár További vezérlők gombjával elérhető egy olyan dolog, hogy "Microsoft Office Spreadsheet". Ha egy ilyet ráteszel a munkalapra, a mellékelt ábrához hasonlóan fog kinézni. Kóddal is hozzá lehet adni, Excel 2003-ban pl. így:
Sub add_spreadsheet() Dim o As Object Set o = ActiveSheet.OLEObjects.Add(ClassType:="OWC11.Spreadsheet.11", Link:=False, _ DisplayAsIcon:=False) o.Name = "inner_sheet" End Sub
Ez azért jobb, mint eszköztárról hozzáadni, mert így egyúttal nevet is adunk neki, amivel később bármikor lehet rá hivatkozni. Ha jól láttam, legalább 2007.es Exceled van. Ott nem tudom, mi a kód, valszleg "OWC12.Spreadsheet.12" vagy "OWC12.Spreadsheet.13", ki kell próbálni. Illetve, ha a Vezérlők eszköztár tervező üzemmódban van, akkor az objektumra kattintva a képletsorból kiderül a típus pontos neve.
A láthatóvá tétel/elrejtés műveletek ezek után így néznek ki:
Dim o As Object Set o = ActiveSheet.OLEObjects("inner_sheet") o.Visible = True/False
Az objektumot lehet pozicionálni, méretezni, lehet bele értékeket másolni, és talán arra is rá lehet venni, hogy automatikusan egy külső munkafüzet tartalmát jelenítse meg (bár erre még nem jöttem rá, hogyan kell). Korlátozott Excel funkcionalitással rendelkezik, képleteket lehet bele írni, ki is számolja őket.
Tegyél egy ilyet a munkalap közepére, és próbáld ki, hogy megfelel-e a céljaidnak.
Szerintem elegánsabb, mint egy másik ablak, viszont nem tud annyit, mintha Excel munkafüzet lenne.
A Windows(1).WindowState = xlMaximized, illetve a Windows(2).WindowState = xlnormal parancsokkal próbálkoztam, de ha kiadom a második ablakra (amit az első ablakra akarok ráhívni) az xlnormal parancsot, akkor nekem attól az első ablakot is kisebbre veszi.
De lehet, hogy nem is a windows parancsokkal kellene próbálkoznom, de a workbook-kal nem tudok méretezni.
Mit értesz az alatt, hogy "egy másik, kisebbre méretezett excel-lapot az előző excel-lap közepére"?
Két dolog jutott eszembe:
1) Megnyitni egy másik munkafüzetet egy másik ablakban, és ezt az ablakot az elsőnek a közepére (vagy akárhová) pozicionálni.
2) Az aktív munkalap belsejében valami szövegdoboz-szerű objektumot hozni létre, ami egy másik munkafüzet valamely munkalapjának tartalmát jeleníti meg.
Melyik áll közelebb az elképzelésedhez?
A "kisebbre méretezett excel-lap" tartalma mi lesz, milyen forrásból származik?
Azt hogy lehetne megcsinálni, hogy egy excel-lapról kattintással meg lehetne hívni egy másik, kisebbre méretezett excel-lapot az előző excel-lap közepére? (Listbox-szal meg tudom csinálni, de jobb lenne egy ilyen excel-lapos megoldás. A kattintás részének beállításával tisztában vagyok, csak az a makró-rész kellene, amivel behívom a kisebb munkalapot, rá a nagyobbra.)
1900 is szökőév, de csak a Julián-naptárban, amit a pravoszláv egyházak használnak (de polgári célokra a múlt század eleje óta már a pravoszláv országok sem).
a szabály az, hogy minden 4-el osztható év szökőév, kivéve a századfordulók pedig csak akkor, ha 400-al oszthatóak. Utóbbit persze nem tudtam, Wiki-ben olvastam :(
Tehát 1900 nem szökőév és rossz benne a feb.29? - mármint az excel szerint
Jaj, bocsi, én néztem el, ez tényleg csak az az egynapos hiba, amiről beszéltem. Azt már nem is fogják javítani, így kisebb a kár, mint ha mást mutatnának a táblázataid a verziótól függően.
1900. jan. 1. előtt úgyis csak trükközéssel lehet dátumszámításra használni az Excelt. Most gyakorlati szempontból nem mindegy, hogy 1900. jan. 1. vagy 1900. márc. 1. előtt nem használható rendesen? Csak két hónap.
Ezt nem kell ilyen bonyolultan csinálni, elég, ha beírod, hogy 180, és átállítod dátumformátumra, akkor is rossz lesz. :-)
Érdekes hiba. Én eddig csak egy egynapos hibáról tudtam (okos programozók szökőévnek nézték az 1900-at), arra azt mondja a Microsoft, hogy direkt nem javítják kompatibilitási okokból. Lehet, hogy itt is ilyesmiről van szó.
Nekem úgy kellene leszűrni vagy valami függvény segítségével leválogatni az adatokat hogy a két munkalapban az A oszlopban szereplő nevek egyezzenek, és a B oszlopban mindkét munkalapon a 2-es szám legyen.
Az a lényege hogy az egyik munkalap, ami szeptemberben készült A oszlopban nevek B oszlopban számok (1=igen, 2=nem 3=leadta) Következő munkalap Októberben készült ugyan azok a nevek csak a számok változtak a B oszlopban. Na most, nekem kellene csinálni egy harmadik munkalapot amelyben azok a nevek szerepeljenek amelyiknél mindkét munkalap B oszlopában a 2-es szám szerepel! (kb. 2600 névről van szó! L) ezért lenne jó valami automatikus összehasonlítás+másolás vagy szűrés.
Van két táblázatom, mindkettőnek az A oszlopában nevek vannak a B oszlopban számok 1-töl 3-ig, nekem azok a nevek kellenének egy harmadik táblázatba, amelyeknél minkét táblázat b oszlopában a 2-es szám szerepel.
Nem akarlak összezavarni, mert nem a te példádból indultam ki - de hasonlót én így szoktam:
Dim SOR, TALALAT SOR = Application.Match(Cells(ActiveCell.Row, 3), Sheets("munkalapneve").Columns(3), 0) If VarType(SOR) = vbError Then MsgBox "Nincs találat, kérlek ellenőrizd" Exit Sub End If TALALAT = Sheets("munkalapneve").Cells(SOR, 10)
Gyorsabb és könnyebb hibát kezelni, mint a Find esetében.
Mint az ábra mutatja, a Safari és az Opera a 2002-2011 időszakban stagnált, az IE 2010-re felfutott, de az idén a Firefox-szal együtt erősen csökken az alkalmazása a Chrome javára.
Nemrég volt egy kérdésem azzal kapcsolatban, hogy hogyan lehet az alábbi dolgot megoldani:
Van egy excel táblámban mondjuk A, B, C oszlop, és van 50 sor.
A oszlop egyfajta sorszámot tartalma. A sorszámokhoz soronként adatok tartoznak, melyek a B, és C oszlopban lévő megfelelő sorszámú mezőkbe vannak rögzítve.
A kérdés az lnne, hogy hogyan lehet azt megoldani, hogyha egy VBA combobox segítségével kiválasztom mondjuk a 35. sorszámot, akkor az ahhoz tartozó sorból a B, és C oszlopban szereplő adatokat a program automatikusan betegye mondjuk textbox1 és textbox2 -be?
Régebben kaptam egy kis segítséget, de nem működik. A kód ez volt
Úgy gondolom, a 16500 hozzászólásunkkal kiérdemeltük, hogy ezen a fórumon is alkalmazkodjanak az üzemeltetők valamelyest az igényeinkhez, hiszen ezzel a nagy látogatottsággal hozzájárulunk a reklám bevételeikhez.
Szerintem lesz@rják, de persze meg kell próbálni. Egy nyereségorientált gazdasági társaság nem így működik, hogy hibátlanul megfeleljen xezer felhasználó igényének (amiből a 16500 hsz talán 0,000x ezrelék lehet) Az index az ilyen (ez a fórum pl) ingyenes szolgáltatásokból közvetlen módon nem profitál.
A böngészők optimalizálásával kapcsolatban 2006-ban futottam utoljára 1-2 kört. : (alulról felfelé)
Beírtam valamit, erre kaviat azt írta, hogy ennyi erővel a pápa válaszát is várhatnám, és erre majdnem megjelent a pápa, és válaszolt. Pontosabban keki, aki nem arról híres, hogy a fórumozókkal kommunikáljon, meg lehet nézni a hozzászólásainak a számát, és megadta a választ. Ez kb. olyan valószínűségú esemény volt, mintha tényleg a pápa írt volna vissza. :-)
Nem értek a fórummotorokhoz, de valószínűleg lehet optimalizálni más böngészőkhöz is.
3-4 éve használom a nefelejtsdel.hu lapot (ez itt a reklám helye) arra, amire szeretnék e-mail értesítést kapni, pl. figyelmeztetés névnapokra, kedvenc rádióműsorra, gázóra állás bejelentésére, stb.
Egy időben kétszer kellett bejelentkeznem, hogy észrevegyen, és az újabb bejegyzéseket, és törléseket is duplán kellett megadnom. Megírtam az üzemeltetőnek, 10 perc múlva válaszoltak. Közölték, hogy akkoriban optimalizálták 3-4 böngészőre, az enyémhez most hozzáigazították.
Úgy gondolom, a 16500 hozzászólásunkkal kiérdemeltük, hogy ezen a fórumon is alkalmazkodjanak az üzemeltetők valamelyest az igényeinkhez, hiszen ezzel a nagy látogatottsággal hozzájárulunk a reklám bevételeikhez.
Lehet, hogy a gugli doksz egyszerű módja lenne a tudásbázis létrehozásának, de a magam részéről nem támogatom a Nagy Testvér további betekintését a dolgaimba. Így is pont elég adatot gyűjt össze rólam a hozzájárulásom nélkül. Valami független dolog kéne, ami nem tartozik semmilyen adathalász multióriás fennhatósága alá.
a beállításoknál be lehet állítani, hogy egy lapon hány hsz-t hozzon le neked a fórummmotor! ha ide egy ultrborzasztó nagy számot írsz (pl. 16.500), akkor lejön az összes!
igen, az újak így valóban nem kerülnek bele, de az utolsó pár hónapra még emékszik az ember milyen témák mentek!
"én egyszer nekiálltam és letöltöttem a teljes topikot és lementettem fájlba." Van arra mód, hogy "egy kattintással" lementsük a fórum hozzászólásait..? (gondolom, oldalanként lehet most...)
"így egyszerű kereséssel lehet benne bármikor kényelmesen keresni." Igenám, mi van akkor, ha újabb beírások vannak, azt is folyamatosan mentegeni szükséges....?
OFF: én Firefoxon próbálom használni, amennyire lehet. Ha tényleg erre van optimalizálva, akkor még belegondolni se merek, milyen lehet a többin, amire még optimalizálva sincs.
Valahol a szabályzatban olvastam, hogy a fórum a Firefox-ra van optimalizálva. A VBA kódok innen történő bemásolása megadja a kellő tagolást – de ez is megeszi a \ jelet. Kicsit kényelmetlennek tartom, hogy mivel másik böngészőt használok, kód megadásakor külön ki kell ugrasztanom a bokorból a rókát. Vajh' ezen tudna változtatni az üzemeltető? (költői kérdés)
Szerintem nagyon jó lenne egy tudásbázis, én már régóta szeretném, és többször sóhajtoztam, mennyi hasznos tudás süllyed el az archívumban. Szóval igen. Szerintem erre egy wiki lenne a legalkalmasabb, mert rugalmasan, egyszerűen szerkeszthető, és könnyen kategorizálható. A legelterjedtebb rendszerhez, a MediaWikihez PHP+MySQL kell, és nem árt htaccess-hozzáférés (főleg, ha képekre is szükség van), és ha valaki tud egy ilyent biztosítani, akkor adhatna adminjogot a törzstagoknak, akik már letették a névjegyüket. Vagy ha nem ez, akkor is valami CMS, ami egy sima weblapnál alkalmasabb a kollektív munkára.
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 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. - 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. - Ajánlott irodalom: http://esr.fsf.hu/smart-questions_hu.html
Ezen kívül az jutott eszembe, hogy jó lenne egy olyan weblap, ahol a topik fontos tapasztalatait, mérföldkő- vagy összefoglaló-jellegű posztjait össze tudnánk gyűjteni. Csak egy lista lenne, téma rövid leírása és a kapcsolódó hozzászólás száma. Így 16 és félezer hsz felé járva nehéz már visszakeresni a régi dolgokat, pedig régen is tök jókat írtunk. Tudna valaki host-olni egy ilyen oldalt? Olyan lenne, mint valami tudásbázis. Beraknánk a linkjét a fenti összefoglalóba, plusz mi magunk is könnyebben megtalálnánk, hogy a kérdezőt a topik melyik pontjára kell elküldeni olvasgatni egy kicsit. Ezzel kapcsolatban is várom a véleményeket.
... ami azt jelenti, hogy utánaolvasok a dolgoknak és első lépésben igyekszem magam megkeresni a megoldást pl. az interneten de nem próbálom megoldatni a problémámat másokkal. ...
csak azt akarom mondani, hogy én is így teszek, mert így lehet igazán megtanulni valamit.
Először is ismét köszönöm a programot, szépen gurul. :)
Az első bekezdésedben asszem megállapodhatunk ahogy van.
Az Excel fórum válaszadóinak és főként neked, részemről maximálisan kijár a tisztelet, kivéve Delila-t, mert ő a saját részét nullázta a #valahanyas megjegyzésével, írtam lejjebb hogy az ilyesmire allergiás vagyok.
Az hogy megvan a közösségi érzés, és kiálltok egymásért szép dolog, én mégis tisztábbnak tartom, hogy mindenki maga rendezze a nézeteltéréseit. Ameddig képes rá.
A férfiak részéről nők felé mutatott tiszteletnek gondolt képmutató udvariaskodásból meg már láttam eleget, inkább kimaradnék belőle. Nekem megfelel a szimpla egyenlő bánásmód, úgyhogy ha a 88 éves angol királynő beszól, őt is válaszra méltatom. :)
Deilának részben igaza van. A kérdésem lényege pontosan az volt, hogy ha akarsz valamit, akkor gondold át, szedd össze, és lehetőleg minél több infót adj át egyszerre. Nem jó, ha cseppenként adagolod. Kapsz egy megoldást, de még ezt is kéne, megkapod ezt is, de még azt is kéne, megkapod azt is, de még amazt is kéne, stb... Ez így egy idő után elveszi az ember kedvét a válaszadástól. A kívánságlistádra vonatkozó kérdésem feltevésekor már éreztem, hogy közeleg a türelmem vége, és igyekeztem ezt finoman és körültekintően tudtodra adni. De még nem tartottunk ott, hogy figyelmen kívül hagyjalak, mert egyrészt tetszik a feladatodban rejlő kihívás, és nekem is jó, ugyanis ezen keresztül tanultam meg itt és most(anában), hogy hogyan lehet az internet explorerrel ilyen szinten együttműködni. Másrészt értem az indokod, hogy azt hitted, a többi részt magadtól is meg tudod oldani.
Én sem hiszem, hogy pofátlan lettél volna, viszont az is igaz, hogy ezzel a 16460-as beszólással kissé elvetetted a sulykot. Delilának minden alapja megvan arra, hogy elmondja a személyes véleményét egy ilyen esetben. Ő az itteni Excel fórum egyik fő éltetője, más fórumokon meg szinte kizárólag ő ad válaszokat. Lehet, hogy pont a Te kérdéseidre még nem válaszolt, de ezer más kérdésre már igen. És több más fórumtag is így van ezzel. Nem állítom, hogy összeszokott csapat vagyunk, de alakul a dolog, és én nagyon helyeslem, ha kiállunk egymás mellett. Ezért ebben a szituban nem tehetem meg, hogy szó nélkül elmenjek a beszólásod mellett. Főleg, hogy Te (nicked alapján) férfi vagy, ő meg egy hölgy. Ezért arra kérlek, hogy próbálj meg tiszteletteljesen viselkedni nemcsak velem, hanem az egész fórumtársadalommal szemben. Az élet más területén is hasznos lehet.
Private Declare Function FindWindow Lib "user32" Alias _ "FindWindowA" (ByVal lpClassName As Any, ByVal lpWindowName As Any) As Long Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
Sub DistanceQuery_Multi() Dim IE As Object, Doc As Object Dim oFr As Object, oTo As Object, oNew As Object, oGo As Object, oSum As Object Dim t As Long, s As String, myHwnd As Long, PrevSum As String Dim CityCount As Long, i As Long
CityCount = Application.WorksheetFunction.CountA(Range("A31:A37")) If CityCount < 2 Then MsgBox "Kéne legalább két állomás." Exit Sub End If
Set IE = CreateObject("InternetExplorer.Application") IE.Navigate "http://www.terkep24.hu/" IE.Visible = True While (IE.Busy) Or (IE.ReadyState <> 4) 'wait until ready Wend Set Doc = IE.Document Set oGo = Doc.getelementbyid("routebtn_terv").FirstChild Set oSum = Doc.getelementbyid("summary") For Each oNew In Doc.all If oNew.classname = "runjs run_new_point button running" Then Exit For Next Set oFr = Doc.getelementbyid("rpA").Children(1) oFr.Value = Range("A31") For i = 2 To CityCount If i > 2 Then oNew.Click While (IE.Busy) Or (IE.ReadyState <> 4) 'wait until ready Wend End If Set oTo = Doc.getelementbyid("rp" & Chr(64 + i)).Children(1) oTo.Value = Range("A" & 30 + i) oGo.Click While (IE.Busy) Or (IE.ReadyState <> 4) 'wait until ready Wend PrevSum = oSum.innertext Do Until (oSum.innertext <> PrevSum) And (InStr(oSum.innertext, "km") > 0) DoEvents Loop Debug.Print oSum.innertext & "****" s = oSum.innertext s = Replace(s, Chr(13), "") s = Replace(s, Chr(10), "") t = InStr(s, ":") s = Mid(s, t + 1, InStr(s, "km") + 1 - t) Range("B" & 30 + i) = s Next myHwnd = FindWindow(vbEmpty, "Microsoft Excel - " & ThisWorkbook.Name) SetForegroundWindow myHwnd End Sub
Még mindig nem értem, hogy ki-mit-hogyan tudott félreérteni abból az egy soros hozzászólásból, de akkor tisztázás végett: Jimmy the Hand írt egy végtelen For ciklust (remélem jól értelmeztem a makrót), ami bármennyi állomás közti távolságot ki tudja számolni egy térképes hivatkozással. Az én szempontomból ennek annyi volt a hátránya, hogy egy már meglévő program közepére akartam beilleszteni (ezt valóban nem említettem), ahol nem lett volna jó, ha az A oszlop összes cellájában lévő értéket állomás/megállóhely-ként értelmezi.
Ezért kértem, hogy elég lenne 7 értékkel számolnia a makrónak, mert az A38-ban már megint más van. Elsőre azt mondtam, hogy akkor legyen A1-A7-ig, mert akkor nem tudtam még pontosan hova fogom beilleszteni. Azt feltételeztem hogy mindegy, úgyis elég lesz benne majd 2 számot átírni a hivatkozásokhoz.
Asszem ennyi a történet.
Koncertet meg még mindig nem értem. Azt kérdezted, hogy koncert van-e az A38-ban vagy mi? :D
"attilaahun" valamelyik következő epizódban biztos kifejti mi van A38-ban! egyelőre elégedjünk meg annyival, hogy más! A másságot pedig tisztelni kell manapság!
Nem gondolnám, hogy annyira pofátlan lettem volna (/vagyok) mint ahogy beállítod. Ha meg mégis, az alább említett szerző majd felvilágosít róla, és akkor elgondolkodok magamon. Az erkölcsi terelgetést senkitől nem veszem szivesen, főleg olyantól aki más nevében teszi, ugyanakkor még egy kérdésemre sem válaszolt.
SK meg majd maga elmondja mire gondolt a koncerttel, mert úgy látszik mindketten rosszul gondoltuk. Vagynem.
Mármint vagynem mondja el.
(elmondhatná, mert most már tényleg nagyon kíváncsi lettem)
Bizonyára elkerülte a figyelmedet, amit Jimmy már másfél héttel ezelőtt írt a 16329-es válaszában: "Ezzel elküzdöttem egy darabig".
Minden újabb óhajoddal csaknem előlről kell kezdenie a küzködést. Becsülnöd kellene a válaszadó munkáját, idejét és türelmét annyira, hogy a kérdés feltevése előtt átgondolod, mit akarsz, nem kéred az ingyen munkát többszörösen. Neked jut a kényelmesebb rész így is, csak ki kell találnod, mit szeretnél, az érdemi részt a válaszadó végzi.
Hát nem is tudom, mennyi a napi kívánságlimit? Mert nem szeretném ma elhasználni az egész heti adagomat. :)
Még azt akarom majd megcsinálni, hogy abból a 7 cellából minidig a legutolsó km-eset válassza majd ki egy képlet, és kerekítse fel 50-re a végét. De szerintem ez már nekem is menni fog egy HA és PLAFON függvénnyel.
Végülis csak a makrókhoz nem értek (meg persze még ezer más dologhoz, de az most nem lényeges).
Egyébként sok meló átalakítani a több állomásos programrészt, úgy hogy máshol legyen? Gondolom igen, mert egyébként már beírtad volna melyik 2-3 számot kell átírni benne.
Szóval bocs, nem találok már ki több hülyeséget (a közeljövőben).
Megint egy nagy problémával fordulok hozzátok amit nem tudok sehogy megoldani, éspedig be szúrtam erre a cimre >>>>
egy *csv dokumentumot, hogy a B és a C oszlopban lévő adatokat pl ( 560= ) szétválasztani vagyis az 560 külön oszlopba jelenjen meg és a = jel külön oszlopban, nem tudom sikerült-e érthetően elmagyaráznom, elmagyarázni is nehéz nemhogy megoldani :) .
Viszont igazából nem A1-A7-ig kellene, hanem A31-A37-ig, mert előtte még vannak más dolgok, csak előbb nem gondoltam, hogy nem tudom majd olyan egyszerűen megváltoztatni a beviteli mezők helyét, mint a 2 állomásos verziónál. :|
Szóval átírtam már ezeket:
oFr.Value = Range("A31")
For i = 32 To CityCount
If i > 32 Then
de nem tetszik neki, és az én tudásomből csak ennyire futja. ;)
"A" oszlopba "A1"-től kezdődően a városnevek, "B" oszlopba "B2"-től megy a kummulált távolság.
---------------------------------------
Private Declare Function FindWindow Lib "user32" Alias _ "FindWindowA" (ByVal lpClassName As Any, ByVal lpWindowName As Any) As Long Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
Sub DistanceQuery_Multi() Dim IE As Object, Doc As Object Dim oFr As Object, oTo As Object, oNew As Object, oGo As Object, oSum As Object Dim t As Long, s As String, myHwnd As Long, PrevSum As String Dim CityCount As Long, i As Long
CityCount = Range("A" & Rows.Count).End(xlUp).Row If CityCount < 2 Then MsgBox "Kéne legalább két állomás." Exit Sub End If
Set IE = CreateObject("InternetExplorer.Application") IE.Navigate "http://www.terkep24.hu/" IE.Visible = True While (IE.Busy) Or (IE.ReadyState <> 4) 'wait until ready Wend Set Doc = IE.Document Set oGo = Doc.getelementbyid("routebtn_terv").FirstChild Set oSum = Doc.getelementbyid("summary") For Each oNew In Doc.all If oNew.classname = "runjs run_new_point button running" Then Exit For Next Set oFr = Doc.getelementbyid("rpA").Children(1) oFr.Value = Range("A1") For i = 2 To CityCount If i > 2 Then oNew.Click While (IE.Busy) Or (IE.ReadyState <> 4) 'wait until ready Wend End If Set oTo = Doc.getelementbyid("rp" & Chr(64 + i)).Children(1) oTo.Value = Range("A" & i) oGo.Click While (IE.Busy) Or (IE.ReadyState <> 4) 'wait until ready Wend PrevSum = oSum.innertext Do Until (oSum.innertext <> PrevSum) And (InStr(oSum.innertext, "km") > 0) DoEvents Loop Debug.Print oSum.innertext & "****" s = oSum.innertext s = Replace(s, Chr(13), "") s = Replace(s, Chr(10), "") t = InStr(s, ":") s = Mid(s, t + 1, InStr(s, "km") + 1 - t) Range("B" & i) = s Next myHwnd = FindWindow(vbEmpty, "Microsoft Excel - " & ThisWorkbook.Name) SetForegroundWindow myHwnd End Sub
A több pontos útvonaltervet úgy gondoltam, hogy legfeljebb 7 állomást lehetne megadni , mert ennél hosszabb körutazások nem sűrűn vannak. A 7 beviteli mező lenne mondjuk A1-A7, és B1-be meg kiírná a távolságot ahogy eddig.
Csak gondolom ezzel az a baj, hogy a terkep24-en alapból csak 2 beviteli mező van, és többre nem lehet hivatkozni anélkül, hogy ne nyitnál újat, ez a fajta vezérlés meg gondolom elég bonyolult.
Bár a komolyabb programozás részéhez amiket eddig írtál nekem, alapból közöm sincs, így megbecsülni sem igazán tudom, hogy mi mennyi munkát/hozzáértést igényel.
Természetesen a te neved is feltüntetem a fájl adatlapján, mint szerzőt.
Sziasztok ! 1 napja kínlódok egy problémával amire nem találok megoldást. Van egy munkalapom A oszlopban típus jelöléssel ( P, K, SZ, M ) a B oszlopban nevekkel, F oszlopban árakkal. A nevek és a típusok többször is szerepelnek, de egymástól függetlenül, tehát egy névhez tartozhat P, K M stb is, de egy sorban csak egy fajta természetesen. Egy külön munkalapon meg szeretném jeleníteni, hogy ABC nevű anyagból pl M típussal mennyi volt az össz ár. Próbáltam szum szumha, szorzatösszeg, stb de semmi sem akar működni. Valamit nyilván én rontok el. Egy kritériummal sikerül megoldani, kettővel nem.
Sub DistanceQuery() Dim IE As Object, Doc As Object Dim oFr As Object, oTo As Object, oBut As Object, oSum As Object Dim t As Long, s As String, myHwnd As Long Set IE = CreateObject("InternetExplorer.Application")
(az itt kimaradt kódrész nem változott)
s = Mid(s, t + 1) Range("B3") = s myHwnd = FindWindow(vbEmpty, "Microsoft Excel - " & ThisWorkbook.Name) SetForegroundWindow myHwnd End Sub ----------------------------------------------------------
Szerintem a többpontos útvonalterv is lehetséges, de ehhez minimum meg kellene adnod, hogy hogyan képzeled el a táblázat felépítését, működését.
Elnézést, hogy akaratlanul hagytalak itt "magadban beszélni",
Hát, rólad sem feltételezem, hogy "itt laksz"
Közléskényszer... kicsit nézne hülyének a kollégám ha neki kezdeném el mondani :) Működik ez tökéletesen, csak az az egy apró mozzanat maradt ki az információból.
Elnézést, hogy akaratlanul hagytalak itt "magadban beszélni", de nem voltam gépközelben. Végül megtaláltad a megoldást. Nálam a 2003-ban tökéletesen működik az ofszetes.
Ezen a verzión kívül dolgozom a 2007-ben, és a 2010-ben is, de csak ha muszáj (#16434-es kérdésedre). :)
Egyik esetben sem szabad módosítania a munkalap-hivatkozásokat. Ha például az Értékek mező értéke =Munka1!$B$2:$B:1624, a Munka1! részt hagyja érintetlenül, és csak a cellatartomány abszolút címét cserélje az új tartománynévre.
Nálam a G5-ben cím van, ezért vontam le a darab2 értékéből 1-et. Ha a címen és az adatokon kívül más, nem üres cellák is vannak az oszlopban, azokat is vond le.
Illetve még annyival egészíteném ki a 2-vel ezelőtti kérdésem, hogy a makró-val lehet az IE ablakot a háttérbe (Excel mögé) helyezni amellett, hogy nem záratom be vele?
A második kérdésem körútra értettem több állomással, pl. Budapest-Miskolc-Debrecen-Budapest. Végülis utazási csomagokról van szó, ahol a kiindulás és érkezés mindig azonos, ha kicsit hosszabb az út, akkor több állomás van benne.
Problémám: "A" oszlopban adva van 100 szám, "B" oszlopban 1 szám. "B" oszlopban lévő számot szeretném létrehozni az "A" oszlopban lévő számok összegeként úgy, hogy nem kell minden számnak szerepelnie az összegsorban. Tulajdon képpen az a kérdés, hogy "A" oszop számai közül melyek összege adja ki "B"-t?
Eddig nem találtam olyan függvényt aminek segítségével ezt megtehetem. Ha valakinek lenne ötlete, hogy hogyan csináljam kérem írjon.
Tegyél elé aposztrófot, akkor kommentként fogja értelmezni a fordító, és nem hajtja végre.
De ettől még minden egyes lekérdezésre új IE ablakot fog nyitni. Makróból megnyitni és vezérelni egy IE ablakot, az rendben, de egy már futó alkalmazás fölött átvenni az irányítást, az még nem.
A második kérdésed azt akarja jelenteni, hogy több helységpárod van, és ezeket akarod páronként lekérdezni, pl.
Budapest Paks x km
Nyíregyháza Badacsonytomaj y km
stb.
vagy pedig két város közötti távolságot akarod álteled kijelölt útvonalon? Pl.
Budapest - Paks közötti távolság érdekel, de Pécs - Nagykanizsa - Keszthely - Szombathely - Győr - Tatabánya útvonalon
Köszi, így már meg tudtam csinálni. Elég komoly lett. :)
Két kiegészítés érdekelne még. Ahhoz mit kellene módosítani a kódban, hogy az IE ablak ne záródjon be a művelet végén, csak a háttérbe kerüljön az Excel mögé, hogy az útvonalat esetleg meg lehessen nézni rajta?
Illetve a másik, az még megoldható, hogy ez a távolság számolás 2-nél több helység megadásával is működjön?
a "helytelen" tartománynak betűrendben kell lennie, így az fkeres az "igaz" argumentumával az első legjobban hasonlítót találja meg - természetesen a betűrendszabály keretei között.
Ha a végére teszünk egy 1-es szorzót – ReverseString = StrReverse(Text)*1 –, még számolni is lehet az értékekkel. Wawabagus számjegyekből álló adatok megfordítását kérte.
én a második részre tennék egy autószűrőt. ott a kis nyilnál, ha lenyitom látom milyen értékek vannak. kiválasztom azt ami nyilvánvalóan hibás és kézzel lajavítom őket. Ja, a nagyon hasonlókat is egymás alatt fogja hozni a lsita!
Az elsőnél egy kis számtan kell. Ha meghatározod, mekkora a legnagyobb szám (pl. 6 jegyű), akkor kezdheted osztani 10 hatványaival, és ezekből 10 hatványaival való szorzás útján újból összerakni. Lehetne még szöveggé alakítani meg vissza, de az Excelben (2000-est nézek) nincs beépített megfordító fv.
Ha nekem kéne, írnék egy felhasználói fv.-t, ami szöveggé alakítja, megfordítja, és visszakonvertálja. Ennek az előnye, hogy nem kell korlátozni a jegyek számát, mint a számtani megoldásnál.
A második kérdésed alulhatározott, tedd fel pontosabban. Nem derül ki belőle, mit akarsz.
Van egy problémám. Van egy táblázatom, melynek egyes mezőiben egy hh:mm:ss formátumban időpont van bejegyezve. A celleformátum Egyéni - ó:PP:MM -re van formázva.
VBA-val egy textboxba ki szeretném íratni az adott exceltábla mezőjének tartalmát úgy, hogy abban is időpontszerűen legyen kiírva az adat. Azonban a beolvasáskor nem az idő formátum adatát, hanem a számértéket jegyzi be a textbox szövegeként a program.
Meg lehet ezt valahogy oldani, hogy a textboxba beolvasott adat időformátumban jelenjen meg ott is?
Az Excel VBA -hz nem ismer valamelyikőtök valami kisebb programkódot, amivel egy a legegyszerűbb hangrögzítő megoldást meg lehetne oldani. Egyszerűen annyi lenne, hogy egy gombnyomásra elinduljon a rögzítés, aé a leállítás gombra kattintva elmentésre kerüljön meghatározott névvel, és hellyel, amit textbox-ok tartalmaznak?
Visual Studioban megy a Dolog, de VBA-ban nem tudom hogy kell megoldani Google-ban is kerestem de megoldást nem találtam.
Találtam egy kódot, ami nem kérdez rá, simán elküldi az az üzenetet.
(Tools -> References -> Microsoft Outlook xx.x Object Library)
Sub SendMail() Dim objOutlook As Object Dim objMailMessage As Outlook.MailItem Dim emlBody, sendTo As String Dim wkbook As String Set objOutlook = CreateObject("Outlook.Application") Set objMailMessage = objOutlook.CreateItem(0) sendTo = "valaki@valahova.hu" emlBody = "Üzenet szövege" With objMailMessage .To = sendTo .Body = emlBody .Subject = "Üzenet tárgya" .Display .Save .Send End With End Sub
ha aktív az üzenetküldés ablaka, akkor esetleg egy sendkey-el lehet küldeni neki egy alt+entert, az működik szinte minden levelező programban - mint üzenet elküldése.
Igen, de attól még érdemes megpróbálni, mert jóval kényelmesebb így, mintha kézzel kellene megírni az értesítést. És mindenképpen javítja az esélyeket, a nulla javulás feltétele az, hogy zcsorgo "elfelejtse" elküldeni a levelet. Azt pedig nehéz lesz elfelejteni, hiszen közvetlenül a munkafüzet mentése után felugrik neki egy ablak a küldendő levéllel. Neki pedig nem érdeke, hogy elfelejtse, hiszen ő akarta ezt az egészet.
Ha Outlook lenne a levelezőprogram, akkor makróból el tudnám küdeni a levelet, de még akkor is az Outlook rákérdezne, hogy "Egy alkalmazás az Ön nevében üzenetet próbál küldeni, engedélyezi-e" vagy valami hasonló. Szóval user beavatkozás nélkül nem nagyon fog ez menni. Lehet, hogy a Lotus másképp működik. Hétvégén talán lesz időm megpróbálkozni vele. De nem ígérek semmit.
Rájöttem, hogy lehet ezt a mail alkalmazás mélyebb ismerete nélkül is, ha nem kell nagyon cizellált üzenet.
Sub Levélküldés() Dim mTo As String, mCC As String, mBCC As String Dim mSubject As String, mText As String, s As String
mTo = "te@hu.hu" mCC = "ő@hu.hu" mBCC = "meg_ő_is@hu.hu" mSubject = "értesítés" mText = "Figyelj, Jóska! Nézd már meg azt a gázcsapot, mert reggel óta fütyül. Addig én rágyújtok. Zoli"
s = "mailto:" & mTo _ & "?CC=" & mCC _ & "&BCC=" & mBCC _ & "&Subject=" & mSubject _ & "&Body=" & mText ThisWorkbook.FollowHyperlink s End Sub
Ha nem megy, valaki segítsen neki, mert most egy darabig nem fogok ráérni erre.
Bocs ha nem voltam egyértelmű, nem vagyok jártas a témában.
Szóval egy sina excel munkafüzetről van szó amiben még csak függvények sincsenek.
Az volna a lényeg hogy ha valamelyik mezőt átírom és rámentek akkor arról kapjon infót néhány ember automatikusan mert nekik ez alapján kell további feladatokat végezni.
Hogy ez mit jelent "Lotus object modellje" arról sajnos fogalmam sincs.
Ha kell, viszonylag gyorsan össze tudok ütni egy makrót a régi vágyad teljesítésére. Viszont elvi probléma, hogy a makró (Workbook_Open eseményre ízzítva) csak akkor fog lefutni, ha a felhasználó engedélyezi a makrókat. (Vagy a biztonsági szint olyan alacsony, hogy az Excel nem kérdez rá.)
Szóval egy adatbázisban (access? SQL?) változás történik és te Excelből akarod futtatni a kódot, ami a Lotus levelezőt beizzítja és küld egy üzenetet?
Nem lehet, hogy nem adatbázisok van, hanem excel munkafüzeted? Mert akkor az Excelnek van értelme.
Megoldani (ha workbook) biztos lehet, csak tudni kell, hogy milyen a Lotus object modellje, amit én nem tudok.
Egyébként vigyázzni kell mit kér az ember, mert pld a volatile függvények nagyon gyakran (vö: mindíg) változnak, szóval fontos azt is definiálni, hogy mit tekintesz változásnak. Hamar betelhet az a Lotus e-mailfiók, ha minden Now() függvény küld egy e-mail, amikor update-elődik...
Más:
Nekem egyébként régi vágyam egy olyan kód írása, ami ha kinyitják az őt tartalmazó workbook-ot, küld egy e-mailt (Outlook) egy fix e-mailcímre, úgy, hogy a workbook kinyitója nem látja az e-mail küldést. Sose jutottam el odáig, hogy ilyen mélységben lenyomozzam az Outlook object modellt.
Ezzel a módszerrel nyomon tudnám követni, hogy ki-kinek adja át az általam elkészített workbook-okat.
Délelőtt kipróbáltam, egész pofás lett az eredmény. :)
Azzal vajon mit kezd, ha a címet nem tudja értelmezni? Mondjuk "Kossuth L.u.4." a string vége... Gondolom a település közepét lövi be... No, majd kitesztelem, ha odajutok. :)
Nálam mutat. Ha Firefox - NoScript kombót használsz, akkor engedélyezni kell a google.com és a gstatic.com számára a szkripteket.
"Eszembe jut a régi vicc..."
Nekem meg az jutott eszembe, hogy ha minden útvonaltervező más távolságot ad meg ugyanarra a viszonylatra, akkor biztosan van közöttük költségelszámolás szempontjából optimális verzió :)
Ez például egy olyan kereső, ahol egyik mezőnek sincs se neve, se ID-je. De az egész kódban sem találtam egyetlen ID-t sem. Itt csak úgy tudom elképzelni az azonosítást, hogy:
For Each mező In Document.ÖsszesMező
If mező.nodename = ami nekem kell, pl. "Input" Then
If mező.defaultvalue = ami nekem kell, pl. "Veszprém" Then
ismerős projekt, egyik városban születtem, másikban iskolába jártam. legrövidebb út, NAgykőrös, Abony, Heves érintésével valóban 287km, de ma már érdemesebb az M6 és M3 pályákon haladni, de az M0 nagy kerülő, érdemesebb átzúgni Pesten, persze nem csúcsforgalomban. Utóbbi lehet Jimmy útvonal javaslata is.
Ezután már senkinek nem hiszek el semmit. A linkeden megkérdeztem a Baja - Miskolc távolságot, oda, és vissza is 287 km. A Jimmy által idézett térképen ez 368, ill. 369 km. :(
Nos, mielőtt kérdeztem nekem is ez volt az első - bár nem firefox, hanem opera böngészőt használok cca. 15 éve és abban is van hasonló (beépített) funkció. De nem találtam a mezőkre vonatkozó kódrészt.
Szívesen. Csak azt tartsd szem előtt, hogy a kód teljesen weblap-specifikus. Vagyis: semelyik másik útvonaltervezővel nem fog működni. (És ezzel is csak addig, amíg valaki újra nem tervezi az oldalt.)
Van Firefox-hoz egy FireBug nevű kiegészítő. Ezt ha bekapcsolom, kiadja az éppen nézegetett weblap teljes forráskódját. Amikor az egérkurzort a kód sorai fölött mozgatom, kiemeli a weblapon azt a részt, amire az aktuális sor vonatkozik. Így némi keresgélés után be lehet azonosítani azt a mezőt, amire kíváncsi vagyok. Jó esetben van neki ID-je és/vagy neve.
Gond akkor van, ha a egyik sincs, ugyanis ezek alapján lehetne egyszerűen hivatkozni rájuk. A lenti útvonaltervező esetében pl. a "honnan" és "hová" mezők, illetve az "útvonaltervezés" gomb egyikének sincs sem ID-je, sem neve. De a fölöttük egy szinttel lévő "gyűjtőobjektumnak" (nem tudom, mi a szakkifejezés) van ID-je, így arra lehet hivatkozni, és aztán a .Children(x) property-vel lehet hivatkozni magukra a mezőkre is. Csak meg kell számolni, hogy hányadik Child-ről van szó (nullával kezdődik az indexelés).
Ezekre mind ma jöttem rá...
És a végén kb. egy órámba telt, mire ezt a 3 sort kiizzadtam:
While oSum.innerText = "" DoEvents Wend
Ugyanis az oSum.Innertext értéke mindig üres sztring volt, amikor a program futása odaért, de mikor törésponttal megállítottam a futást, mindig a távolságértéket láttam. Gondoltam, biztos idő kell neki. Beraktam a kódba egy várakozó ciklust, de az sem segített, az IE objektum ready állapotát is hiába figyeltem... Míg végül eszembe jutott a fenti (egyébként kézenfekvő) megoldás.
Ebből az egészből nekem az jött le, hogy a javascript-ek végrehajtását az IE nem jelzi vissza, csak a mezőértékekből lehet rá következtetni, hogy elkészült-e vagy sem.
És akkor még nem is számoltál a keleti hátszéllel, amitől gyorsabban mész Bajára, és a nagyobb sebesség miatt jobban görbül a tér körülötted. Szerintem ez lehet a különbség oka. Vagy a félpályás terelés az M6-oson a délelőtti dunaújvárosi bicikliverseny miatt. :)
Lefuttattam a fenomenális makródat, és képzeld, a Baja - Miskolc távolság 369 km (körülbelül 3 óra 48 perc), a Miskolc - Baja viszont 368 km (körülbelül 3 óra 45 perc). :))
Egyszer 100 éve egy térképen kikrestem két helység távolságát. 41 km-t írt. Utána megnéztem egy frissebb térképen, ott 42 km volt, a legfrissebben pedig 43 km. Szépen példázza a táguló világot. :)
Ezzel elküzdöttem egy darabig, de szerintem elég jól sikerült. Igaz, nem google-t használ...
B1-be kell beírni a kiindulópontot, B2-be a célállomást, aztán futtatni a makrót, és B3-ba jön (elvileg) az eredmény.
A makró a lekérdezés során megnyitja az Internet Explorert. Az IE ablak felugrását el lehetne kerülni a piros sor törlésével vagy kikommentezésével. Elegánsabb lenne úgy. De az a gond, hogy ha a webhely hibaüzenettel tér vissza, )pl. nemlétező városnév esetén,) akkor a makró nem tudja bezárni az IE ablakot, és mivel az ablak nem látszik, nem tudod bezárni manuálisan sem, csak feladatkezelőből.
Sub DistanceQuery() Dim IE As Object, Doc As Object Dim oFr As Object, oTo As Object, oBut As Object, oSum As Object 'HTMLTableCell Dim t As Long, s As String Set IE = CreateObject("InternetExplorer.Application") IE.Navigate "http://www.terkep24.hu/" IE.Visible = True While (IE.Busy) Or (IE.ReadyState <> 4) 'wait until ready Wend Set Doc = IE.Document Set oFr = Doc.getelementbyid("rpA").Children(1) Set oTo = Doc.getelementbyid("rpB").Children(1) Set oBut = Doc.getelementbyid("routebtn_terv").FirstChild
oFr.Value = Range("B1") oTo.Value = Range("B2") oBut.Click While (IE.Busy) Or (IE.ReadyState <> 4) 'wait until ready Wend Set oSum = Doc.getelementbyid("summary") While oSum.innerText = "" DoEvents Wend s = oSum.innerText s = Replace(s, Chr(13), "") s = Replace(s, Chr(10), "") t = InStr(s, ":") s = Mid(s, t + 1) Range("B3") = s IE.Quit End Sub
Nem "defaultra", hanem "default" -- bár a fogalmazás slendrián, én ezt inkább úgy értem, hogy amikor létrehoz egy új táblázatot, akkor helyből piros legyen a füle. De majd jön a kérdező, és elmagyarázza, mit is akart tulajdonképpen, amíg mi ezen itt elvitatkozunk. És írjuk bele az útmutatóba a redundancia jelentőségét.
Én is így voltam vele, és most ünnepélyesen elnézést kérek – azt hiszem, valami tudatalatti hímsovinizmus lehet a magyarázat (pedig hát van nekem IRL is olyan hölgyismerősöm, aki tízszerannyit tud az Excelről, mint én).
Ha már forráskódot kérünk (felteszem, a makrókra gondoltál), akkor arra is hívjuk fel a figyelmet, hogy használjon valami pastebint a user, ahova regisztráció nélkül is betolhatja a kódot, mert itt a fórumban valami nagyon ocsmány dolog lesz belőle.
Támogatom a változtatást, ha valaki megcsinálja. Nemcsak azért hasznos, mert lesz, aki esetleg elolvassa és megfogadja, hanem mert ha mégsem, akkor lehet rá utalni, hogy "Elolvasta d a topikcím alatti részt?" És akkor már tudni fogja, hogy nála van a labda, és illene másképp kérdeznie.
Kicsit oldstyle a kinézete, lehet, hogy fenn van máshol modernebb és barátságosabb külsővel is. Ezt érdemes belinkelni, ahol lehet. Úgysem fogják elolvasni, de legalább megpróbáltad. :-)
A konkrét kérdésedre válaszolva: a higgadtság és a magyarázókedv változik az idővel, a hangulattal, az egyéb feladatokkal.
A legtöbb fórumon az is megfigyelhető, hogy a női nicknévvel beregiszterálóknak hamarabb és türelmesebben válaszolnak. :-)
Akkor ez így nagyon elegáns, neked méginkább köszönöm. :)
Lenne még itt egy komolyabb kihívás, amit eddig csak poénra vettem, (de miután az MNB honlapjáról sikerült beolvasni az árfolyamokat, úgy hogy automatikusan frissüljenek és számoljanak velük a képletek - amit korábban álmomban sem gondoltam volna, hogy lehetséges), most nagyon halványan remélem, talán a GoogleMaps útvonaltervezőjéből is lehetne valahogy adatokat kinyerni. Egész konkrétan adott helységek közti távolságot.
tudnátok nekem valamit javasolni a 2003-mas változatban arra, hogy egy cella 0 érték helyett szimplán üres maradjon abban az esetben, ha matematikai képletek vannak benne, és a képletben lévő cellahivatkozások szintén üresek? Pusztán esztétikai okból.
Cellaformátumokat meg függvényeket már nézegettem, de nem igazán találtam megfelelőt. :(
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. Ha kérdésed van akkor, abban mindig fogalmazz úgy, hogy a szekértő is megértse mire szeretnél választ kapni. Írd meg, az excel melyik verzióját használod és célszerű egy képernyő fotót is beszúrni, ami megmutatja a problémádat.
Valóban így van, aki nem járatos az adott szakterületen (ha az lenne, akkor nem kérdezne) sokszor a helyes szakmai zsargont sem ismeri, nem tud szabatos nyelven kérdezni. DE rá lehet vezetni mindenkit arra, hogy végül a kérdésfelvetés korrekt legyen.
Szerintem, a rosszul feltett kérdések a tapasztalatlanság miatt vannak. Úgy gondolom, a topic lényege éppen az, hogy minél több tapasztalatot, tudást szerezhessünk itt azoktól, akik hajlandóak segíteni, tanítani akár a kezdőket is. Számomra kicsit furcsa a kérdésed, mert az elmúlt években úgy tapasztaltam, hogy Te is azok közé tartozol, akik mindig türelmesen, készségesen segítettek másoknak.
Tőlem mehet a fejléc változtatása, de ne legyenek nagy reményeid. Nem hiszem, hogy az első-idejövők elolvassák a fejlécet, aki meg már rutinos kérdező, az tudja hogyan kell.
Okok: szerintem az emberek nem rutinos írók. Az emberek nem sokszor írnak szöveget olyanoknak, akiknek semmi hátterük nincs az adott témával kapcsolatban (itt természetesen nem az excelre, hanem a táblájuk működésére, szerkezetére gondolok). Dolgok, amit ők adottnak vesznek (ok nélkül) számunkra hiányzó logikai láncszemek.
Más kérdés, hogy az első hozzászólás utáni tisztázó kérdések hatására mennyire jön rá az illető erre a tényre. Van akinek a kérdését tisztázó hozzászólása már teljesen koherens, másoké nem.
A modik engedélyezték, hogy a topik fejlécét megváltoztassuk, ha az itteni kollektíva megszavazza, és meg tudunk egyezni a szövegben. Hódolva a demokrácia alapelvének, felteszem a kérdést:
Ki ért egyet azzal, hogy a topik fejlécbe berakjunk egy hatékony kérdezést segítő útmutatást?
Szeretnék közvéleményt kutatni, ha már úgyis ilyen uborkaszezon van. Van egy probléma, ami régóta foglalkoztat, és mindig újra előjön. A következőről van szó.
Fórumokon gyakran találkozom nagyon rosszul feltett kérdésekkel, amelyekből nem igazán derül ki, hogy a kérdező mit is szeretne valójában. Mondok egy példát:
"Van sok text fájlom, amiket be akarok olvasni Excelbe. Beolvasás után kapok 6 oszlopot, az első az ID. Azt szeretném elérni, hogy azok a sorok, ahol az ID azonos, egy sorba kerüljenek."
Engem végtelenül fáraszt, ha azt látom, hogy esetleg több körben vissza kell majd kérdezni, mielőtt a pontos cél kiderülne. Mi késztet embereket arra, hogy így kérdezzenek? Lustaság? Vagy a tapasztalat hiánya? Vagy mi?
A másik, hasonló történet, amikor az elérendő cél már nagyjából megvan, de a kommunikáció mégsem zavartalan. Pl. ezt írja a kérdező:
"Kipróbáltam a kódot, amit javasoltál, de nem működik."
Ez alapján viszonylag nehéz rájönni, hogy miért nem működik. Pontos diagnózishoz minimum egy hibaüzenet kellene, meg hogy hol áll le a kód futása, stb..
A kérdésem az, hogy Ti hogyan kezelitek ezeket a helyzeteket? Van olyan, aki annyira türelmes, hogy az ötödik, tizedik ilyen kérdezőnek is higgadtan elmagyarázza, hogy "Bocsi, kevés az infó"?
A vicc az, hogy már alkalmaztam ezt a megoldást, és most nem jutott eszembe. Pedig ez a saját készítésű ikonjaimat is visszahozta anno, nem kellett kb. 20 ikont újra rajzolni.
Van más megoldás is. Az office-hoz van egy olyan segédprogram ami elmenti a beállításokat. Én céges környezetben használtam, amikor új gépet kaptam akkor lementettem a beállításaimat vele és utána az új gépen visszatöltöttem őket. Még az is megmaradt, hogy Outlookban előre javasolta az e-mailcímeket a korábban küldött e-mailjeim alapján. Egy OPS file-t hoz létre és abban tárol mindent. 2003-ashoz leírás: http://www.howtogeek.com/howto/microsoft-office/save-and-restore-your-microsoft-office-settings/
Van egy régi programom, úgy hívják, hogy Ashampoo Uninstaller Suite. (Szerintem ma már nem elérhető, de biztosan van hozzá hasonló ingyenes szoftver a neten.) Ezzel lehet naplózni az applikációk telepítéséet. Csinál egy pillanatképet a rendszerről telepítés előtt és után, és a kettő összehasonlításából kitűnik, hogy a telepítés milyen változtatásokat végzett a rendszeren.
Ezt a programot fel lehet használni többek közt arra is, hogy kiderítsem, egy-egy szoftverbeállítás hol tárolódik. Tegnap is ezt tettem. Pillanatkép -> Excel autokorrekciós lista bővítése -> újabb pillnatkép -> a kettő különbsége alapján egyetlen fájl változott meg: amit megírtam a múltkor. Aztán bele is néztem a fájlba Notepad-del, és meggyőződtem róla, hogy tényleg ő az.
Excel VBA-ban van egy gombom, amire ha rákattintok lejátszik egy wav fájlt, ami az excel fájllal azonos mappában van. Azt tudom, hogyan lejet lejátszani a fájlt elérési út segítségével, viszont arra lenne szükségem, hogy hogyan lehet megoldani azt, hogyha a wav fájl eggyel az excel táblát is tartalmazó mappa feletti mappában van akkor azt a gombnyomás segítségével le tudjam játszani? Magyarul hogyan tudnám megadni úgy a hangfájl elérési útját, hogy az aktuális könyvtár feletti könyvtárból játssza le a hangot??
Nem kötekedni akarok, csak az a tapasztalatom, hogy az ilyenek szoktak változni; például az is változott, hol vannak a saját eszköztárak, vagy a Firefoxnál is nem olyan régen változott a könyvjelzők és előzmények tárolása, amikor sqlite-ra tértek át.
Az ilyesmi verziófüggő lehet, azt azért elárulhatná az ismerősöd, mielőtt nyomozni kezd mindenki. (Ha nincs válasz, akkor át kéne állítani valamit, és megnézni, melyik file változott meg.)
A LINEST függvény megadja a trendvonal jellemzőit, így nem csak lenézni lehet az adatokat a grafikon trendvonaláról, hanem számításokat is lehet velük végezni.
Szeretnék egy olyat kérdezni tőletek, hogy ha van egy oszlopnyi adatom, illetve egy másik oszlop a hozzájuk tartozó értékkel, ezekből csinálok egy grafikont, van egy adatom, aminek nem tudom az értékét, és a grafikon alapján szeretném, hogy az excel megmondja a hozzá tartozó értéket, akkor milyen fv-t kell használnom? Remélem érthetően írtam le. Előre is köszönöm a válaszokat.
Illetve még egy verzió van: bizonyos Excel verziók beállítás nélkül is automatikusan újraszámolják a régebbi verziójú táblázatokat, előttem ismeretlen okból. Ezt viszont ki szokták írni, amikor a mentésre rákérdeznek.
amikor kijelölöm az egész lapot, és előveszem az egyik cellán "állva" a sormagasságot akkor beállítva a 14 es értéket úgy látszik megoldotta ezt a problémát!:)
Köszi!
Szal ott tartok, hogy a sormagasság elintézve.
A menüsor alatti figyelmeztetés elintézve (mentve XLXS be)
Egyedül arról kéne még leszoktatnom, hogy amikor semmiféle műveletet nem végzek rajta és ki akarom kacsolni (bezárni az ablakot) akkor ne kérdezzen rá a mentés lehetőségére.
Ilyenkor mindig elbizonytalanodok, hogy talán véletlenül valamit kitöröltem e belőle és azért kérdez e rá, vagy annyira öregszem, hogy bevittem egy módosítást, és talán azért kérdez e rá...
Szóval nem tűnik nagy dolognak, de nekem fontos lenne!
Ott megnéztem, hogy egy adott cellába jobb klikkel mit ír ki a formázására, és azt látom, hogy ArialCe 10 a betű.
Amikor lenyitottam a kis nyilat rajta mintha változtatnék rajta akkor a listában nem szerepelt az az ArialCE ami a kisablakban igen ahonnan lenyitottam magát ezt a betűválasztó listát!!!
Nem láttam benne a logikát...
Ekkor kipróbáltam azt, hogy kijelöltem az egész lapot, és úgy megnéztem a "cellák formázása alatt" és az lepett meg, hogy itt sem is szerepel az ArialCe betűtípus.
kipróbáltam a "mentés másként" ben azt, hogy *.xlsx legyen de közvetlenül nem engedte.
Amennyiben az "igen" re kattintok akkor meg ezt írja ki:
Ha ez után az okét nyomom akkor elmenti, és nem látok semmi negatív változást a fil-on.
De az az igazság, hogy pozitív változás sincs...
max annyiban, hogy mikor megnyitom újra a új file-t akkor nem jön elő az a sáv ami arra utal, hogy a makrókat letiltotta.
De az előbb elfelejtettem megemlíteni, hogy amikor az eredeti régi file-t megnyitom, és semmit sem csinálok vele csak fogom az egeret és az X re kattintok, hogy bezárjam akkor rákérdez, hogy mentem -e a változásokat, pedig én azon kívül, hogy megnyitom semmit sem csinálok vele.
Na ez a zárási anomália az új *.xlsx file-nál is szerepel.
Tehát rákérdez még akkor is ha nem csináltam semmit a file-al hogy mentse e a változásokat, pedig nincs is változás...
Én először megkeresném az okot, hogy ugyan miért nem hagyja úgy a sormagasságot...
(Betűméret, betűvastagság stb...)
Megpróbálnám xlsx-ben is menteni, hátha úgy NEM bírálja felül az akaratodat.
ha a próbálkozások sikertelenek, akkor betennék egy sort a ThisWorkbook lapra (alt+f11-re feljön egy fejlesztői felület és annak bal oldalán találod) betennék egy sort pl. a megnyitás eseményére:
Private Sub Workbook_Open() Cells.RowHeight = 14 End Sub
Használok egy régi Excel file-t amit egyfajta telefon-regiszterként használok.
Ez még a win 95 ös időkben indult, és ma is használom és inkább új bejegyzés kerül bele, minthogy törölnék.
Szóval Az Office 2007 et használom, és a file-ok mentése automatikusan az Office 97-2003 ra van állítva.
Ez a bizonyos régi regiszternek használt file amikor új adatot írok bele akkor a sormagasságot átállítja az eredeti 14-esről 17 re, és erről nem tudom leszoktatni. Természetesen ha belépek a formázásba akkor engedi átméretezni de minden mentés előtt meg kell csinálnom ezt, és kicsit unom már.
Hol lehet beállítani, hogy hagyja békén az eredetileg 14 esre állított sorokat, és ne formázza magától 17 re?
Tudom nem nagy dolog, de már bosszant.
A mások ugyanennél a file-nál, hogy a menüsor alatt minden file megnyitás után kiírja a kis figyelmeztetését, hogy a makrókat letiltotta biztonsági okból.
Amennyiben beállítom neki ugyanott, hogy ne tegye mert nekem így jó akkor a következő megnyitáskor megint előjön ez a "védelem" így nem szoktam piszkálni, mert minek...
Hogy lehet ezt automatikusra tenni, hogy ne foglaljon el két menüsornyi helyet ez a figyelmeztetés?
Egyébként én nem tudom mire kell nekem itt a makró, saját magam semmire sem használom. De ez a figyelmeztetés csíkkal együtt mindig előjön...:(
Kipróbáltam a módszert, de sajnos nem akar működni. Az első munkalapon beszúrtam egy oszlopot ahova összefűztem az éveket és országokat (pl. 1990Hungary), és a 2. munkalapon is a keresési értékre megcsináltam ezt, melyet beállítottam az Fkeres keresési értékének. A táblánál kijelöltem a korosztályok adatait tartalmazó tömböt, melynek az első oszlopa az összefűzött éveket és országokat tartalmazza oszlop_számnak meg egyértelműen a korcsoportoknak megfelelő oszlopszámot írtam (2, 3,.. stb.). Lefixáltam a keresési táblázatot és a keresési értéket, de valamiért teljesen összekeveri az adatokat, vagy néháy esetben nem is találja azokat. Többször ellenőríztem a képletet, elvileg jónak kellene lennie, de a gyakorlatban mégse. Ha van vmi tipp mit ronthattam el azt szívesen venném. Előre is köszönöm.
Felvennék egy segédoszlopot amiben összefűzném az adott sor év ér ország adatát, utána pedig a keresésnél ugyanígy lenne egy év és orszég összfűzés és sima FKERES-sel rákeresnék.
Lenne még 1 kérdésem: Van egy excle táblázatom, ahol az első munkalapon egy táblázatba vannak foglalva az évszámok (C oszlop), mellette a világ országai (D oszlop), illetve a fejlécben a korosztályok (E3 - M3 cellákban). Valahogy így néz ki: Tábla1 Az eredeti táblázatomnak ez egy lebutított változata, mert az a világ összes országának a népesség-eloszlássát tartalmazza, korosztályonként 1950-ig visszamenőleg. Az átláthatóság kedvéért a 2. munkalapra szeretnék egyfajta szűrőrendszert kialakítani. A terv az lenne, hogy a 2. munkalap D3-as cellájában egy legördülő lista alapján ki lehetne választani a vizsgálni kívánt évszámot, az E3-as cellában pedig ugyanígy egy lista alapján pedig az országot. Ezt követően az F3-N3 cellákban megjelenne a kiválasztott paramétereknek megfelelő érték korosztályonkénti bontásban, az alábbi módon: Tábla2
Kérdés, hogy milyen képletet írjak az F3-N3 cellákba, mely az adott paraméterek megadásával, meg keresné az arra vonatkozó korosztályonkénti értéket?
de jó, hogy azt írod "Tábla", az excel 2007 is táblázatnak nevezi, pedig tképpen az excelben minden táblázat, a tábla megnevezés sokkal jobban megfogható!
mert táblázattá alakított részből lett rámutatással létrehozva.
ha zavar, kérd a tartománnyá alakítást.
vagy be lehet állítani, hogy ne ezeket a fajta @neveket alkalmazza ("Táblázatnevek használata képletekben"), hanem a szokásos A3:A88 tipusú azonosítókat!
Egy kis segitségre lenne szükségem. Letöltöttem egy Foci vb gól sablont és van benne egy függvény amit nem értek: =DARABTELI(GroupStages[Loser];[@Country]) vagyis azt hogy a [Country mező név elött miért van a kukac @ jel?
Szegény óra függvény nem tehet róla, azt teszi amire kitalálták: "A függvény az időérték argumentumnak megfelelő óra értéket adja eredményül 0 és 23 közötti egész szám formájában." A "logikus viselkedés" függvénnyel még nem találkoztam, pedig mennyivel egyszerűbb lenne minden!
Ezzel tisztában vagyok azért. Ennek ellenére logikus viselkedésnek tartottam volna, hogy az időadatként megadott 29:x:y-ból az óra függvény helyes eredményt adjon, de szerintem túlragoztuk a dolgot.
Mert ugye ha az ember egy router mögül bámészkodik kifelé, akkor a routernek van egy külső IP címe, amit az internetszolgáltatótól kap. Mindenki más ezt látja, és ez köszön vissza a belinkelt honlapról. A PC pedig a routertől kap egy belső IP címet, az ipconfig pedig ezt mutatja meg.
Ha direkt kapcsolatod van az internetszolgáltatóval, akkor nincs két IP cím, csak egy, és mindkét eljárás ugyanazt adja vissza.
De azért én kitalálnék valami program-ágat arra az esetre ha a keresett file nem létezik, mert durva dolgok történhetnek ha csak úgy átugrik egy hibás sort a kód...
Wow. Köszi :D Még egy olyanban tudnátok segíteni, hogyha a program egy fájlt nem talál az elérési útvonalon, akkor ne hibaüzenettel álljon le. Akármi más funkciót csinálhat, csak ne álljon le.
VBA-ban a LoadPicture paranccsal kapcsolatban lenne egy olyan kérdésem, hogy nem lehet azt valahogy megoldani, hogy a betöltendő képfájlnak ne a teljes elérési útvonalát kelljen megadni?
Tippeltem rá, próbálkoztam vele, de nem sikerült. :=( Ha jól értem, ki kell jelölni az egész céltartományt eggyel hosszabban, mielőtt a varázslót elindítom, és aztán ctrl shift enterrel lezárni. Sok nulla lett. Mit hagytam ki?
Hogy lehet a legegyszerűbben meghatározni, hogy egy számhalmazban melyik intervallumba hány érték esik? Ezt csináltamebből. Az adatok időformátumban voltak megadva, így az ÓRA függvénnyel levettem az órát, kihúztam egy számsort, és a DARABTELI függvénnyel meghatároztam a számokat, de ez csak azért működött, mert minden intervallum 1 hosszúságú volt. Mi a legegyszerűbb általános módszer? Valami DB-függvényre tippeltem, de nem találtam meg. (Excel 2000)
De van, csak azzal nem neked kell dolgozni, hanem annak, aki segíteni akar. :-) Nyilván lehet olyan makrót írni, amelyik megoldja a problémát. De mi itt azért alapvetően normális (még ha nem is normalizált :-)) Excel-táblázatokkal foglalkozunk, és a több érték egy cellában nem tekinthető normális használatnak. Én is csak ezt tudom javasolni, kell belőle csinálni egy rendes táblázatot.
Ha vannak üres oszlopok a helységnevek, és a napok száma után, akkor a "Szövegből oszlopok" menüponttal fél perc alatt külön oszlopba rendezheted a vesszővel elválasztott szövegrészeket.
Ha nincs, akkor másold ezeket az adatokat egy másik lapra, és ott végezd el a szétválasztást, majd ehhez másold az űrlap többi részét.
Kérdőív-feldolgozás közben vetődött fel 1 kisebb problémám, ami a következő:
Az első munkalapom tartalmazza a kérdőív kérdéseit és az ahhoz beérkezett válaszokat. Az egyik kérdés az utazási célpontokra vonatkozik melynél több válaszlehetőséget is meg lehet jelölni. Ezt a rendszer (google docs) egy cellába menti el, a válaszokat vesszóvel elválasztva (pl. C14 cella tartalma: Balaton, Budapest, Tisza-tó). Egy másik kérdés az utazások hosszára vonatkozik, ahol több válaszlehetőség közül 1-et lehet kiválasztani (1 éjszaka, 2-3 éjsz., ...stb).
E 2 kérdés alapján szereték kimutatást csinálni úgy, hogy utazási célpontonként szeretném megvizsgálni, hol mennyi időt tartózkodtak a válaszadók. A gondot az jelenti, hogy az első kérdésre több válaszlehetőség is adható, így egy adott cellán belül több válasz is lehet, amiket én szétbontva válaszonként szeretnék összevetni az időhosszra vonatkozó kérdéssel. Az kéne, hogy az első kérdésre leadott válaszlehetőségek cellánkénti előfordulását számolja meg a 2. kérdésre leadott válaszehetőségek szerint. (pl. hányan utaztak Budapestre (is), akiknek az utazásainak hossza átlagosan 2-3 éjszaka).
Remélem érthető voltam. Amennyiben lenne ötletetek, hogy tudnám megoldani, azt előre is megköszönném.
Azt szeretném megoldani, hogyha van egy excel munkafüzetem, melynek 3 különböző oszlopába (A,B,C) soronként más-és más adatok vannak, és ha egy VBA formon lévő combobox listából kiválasztom monjuk az egyik elemet (mondjuk A oszlop elemeiből, amit már előtte egy kóddal beolvastattam a combobox elemeinek), akkor 2 textbox szövege automatikusan kitöltődjön a B és a C oszlopokban lévő adatokkal (természetesen egy sorban lévő értékekre gondolok).
ha kejelölsz a diagramon egyvagy több értéket, akkor azokra külön tudsz érvényesíteni egy másik diagramtípust.
Pl.: Létrehotol egy oszlopdiagramot. Abba kijelölsz néhány adatoszlopot, majd választassz egy vonaldiagram típust. Így a kiválasztott oszlopdiagramok most vonalak lesznek és amit nem választottál ki az oszlop marad.
Kérnék egy kis segítséget. Új 2010-es excelem lett telepítve. Kérdésem, hol található, van-e olyan funkciója, hogy oszlop-vonal diagram. (pl. vannak havi/heti érétkeim, és vannak havi/ heti céljaim is meghatározva.) A 2003-asban ez könnyen ment, de sajnos az újban sehol nem találom és az F1 is csak trendvonalat hoz fel nekem.
Azt szeretném elérni, hogyha egy VBA-ba-ban megírt userformon található Commandbutton-ra kattintok, akkor az excel Munkalap 1 felületén egy sor A50 cellától kezdődően egészen D50 celláig bezárólag szumma módon összeadja oszloponként az 50-es sor előtti sorok tartalmát, és kijelezze azt oszloponként az 50-es sor A-D mezőiben. Lehet kicsit bonyolultan fogalmaztam, magyarul: szeretném ha egy gombnyomásra összeadná egy adott oszlopban található értékeket a programkód, és az 50-es sorben kijelezné az így kapott összegeket :) Tudom, hogy excelben a szum függvény tökéletes erre, de az nem jó ahhoz, amit én szeretnék vele.
Sikerült az első grafikon is szuper! Viszont a C5,C6 egyedül nem megy.
A második grafikon úgy nézne ki, hogy 1-24-ig lennének hengerek két színben (nyerő/vesztő). Ehhez kellene csinálni két segédoszlopot (gondolom mint az elsőnél) az egyik a nyertesnek a másik pedig a vesztesnek 1-24-ig. A nullás tradeket most nem kell megjeleníteni.
Ennek segítségével vizuálisan azonnal kiderül, hogy hány órakor van több nyerő illetve vesztő trade a nap folyamán.
első grafikon kicsit trükkös, felvettem egy segédoszlopot C13: =HA(E13="nullás";0;E13+E14); alatta C14: =HA(E14="nullás";C13;C13+E14+F14) lehúzva C23-ig. Aztán Bés C grafikonban ábrázolható
Rengeteg sikeres stratégia létezik bármely idősíkon. Azt tudni kell, hogy az emberek 90%-a vesztes ebben a szakmában. 80%-ban psziho sport és csak 20% múlik azon miként milyen stratégiával kereskedünk.
Az én személyes véleményem az, hogy az első 500ezret inkább tanfolyamra költsük mint sem elveszítsük az első hetekben ami szinte garantált! Azután lehet demózni egy évig és ha konzisztens nyerők vagyunk csak akkor kilépni élesben minimum 5000$-al!
Mielőtt valaki megdorgálna azért mert én tanfolyamot javasolok leírom, valóban minden rajta van az interneten is ingyen...
Ha valaki kedvet érez két grafikon beszúrásához és 8 db függvény megírásához amivel sokat segítene nekem akkor az innen letudja tölteni a táblázatot amiben leírtam miként képzeltem el. Ez sajnos meghaladja a képességeimet és enélkül hiányosnak érzem a naplómat.
Egy kis segítséget szeretnék kérni: office 2003-as excelem van, és szeretnék egy bemondóprogramot csinálni, tehát hiperhivatkozásokat létrehozni ami a számítógépen belüli .vaw fájlokra mutat. Megnyitáskor ez a hibaüzenet jön ki: "A C: ..... .vaw megnyitása. A hiperhivatkozások veszélyeztethetik a számítógépet és az adatokat. A számítógép védelme érdekében csak megbízható források hivatkozásaira kattintson. Folytatja? Igen/Nem" Ha az igenre kattintok, akkor lejátsza a fájlt.
Kérdésem: hogyan lehet kiiktatni ezt a hibaüzenetet, hogy egyből lejátsza a hivatkozást?
Figyelj, elmondom a titkot, hogy hogyan zajlik egy ilyen.
Stirlitz sétál a sötét erdőben. Nemrég volt találkozója Müllerrel, aki felvázolta neki az ActiveWorkbook.SaveAs fedőnevű problémát.
- Hm - gondolja Strilitz - ennek a SaveAs metódusnak biztosan valami olyan argumentuma, ami hatással van a csv export elválasztókarakterére. Nézzük csak meg a súgót.
Stirlitz megnyitja az első keze ügyébe eső Excelt, Alt+F11 kombóval átmegy VB editorba, és rákeres a súgóban a SaveAs-re. A súgó hosszan sorolja a Szovjetúnió számára érdektelen információkat, mígnem hirtelen Stirlitz szeme megakad a Local nevű argumentumon.
"Local Optional Variant. True saves files against the language of Microsoft Excel (including control panel settings). False (default) saves files against the language of Visual Basic for Applications (VBA) (which is typically US English unless the VBA project where Workbooks.Open is run from is an old internationalized XL5/95 VBA project)."
- Aha! - gondolja Stirlitz. - Ennek a Local dolognak köze van a nyelvhez, meg Control Panel beállításokhoz, ráadásul az alapértelmett érték a gaz imperialistáknak kedvez. Próbáljuk csak ki, mi történik, ha belepiszkálunk egy kicsit.
Stirlitz átállítja a Local értékét True-ra, és kipróbálja a SaveAs-t egy adathalmazon. Voilá!
- Azt hiszem, elküldhetem a jelentésemet Moszkvába - töpreng magában Stirlitz a sikert látva.
Tudja valaki, hogy tudnám elérni makróval, egy excel fájl pontosvesszővel tagolt *.csv fájlba mentését?
Az alábbi kódot a makrórögzítővel készítettem (Mentés másként -> csv (pontosvesszővel tagolt) (*.csv)). A kézi beállításkor valóban pontosvesszől mentette, de utána, a makró futtatásakor már "sima" veszzővel tagolt fájlt hozott létre.
Azért nem fogja kiadni, mert ez nem Access, és az Accessben is csak szövegeket kezelhetnél ilyen módon, számokat nem (legfeljebb agyonbonyolítva, ha szövegként tárolod, szétszeded, konvertálod...)
A legegyszerűbb újratervezni a táblázatot. Egy cellába egy szám kerüljön.
Korábban Limmux írt hasonló bejegyzést, most olvasom.
A robbanómester segített neki, de nekem nem sikerül ezzel a megoldással sem.
Ha pl.A1-A10 celláig szeretném megtudni hány db. 3.-as található,s pl.A5 cellában lévő értékek 1,3,5 akkor nekem azzal a képlettel hogy A1:A10 kritériumnak pedig *3* nem adja ki az összes hármas számot.
Szakdolgozatom kérdőíveit próbálom kiértékelni Excel segítségével.
Az egyes kérdésekre adott válaszokat számokkal helyettesítettem, a könnyebb átláthatóság érdekében.
Van olyan kérdés, amire töb választ is adhattak a megkérdezettek, így egy cellába több szám is kerül, ezt pl.a Darabteli fügvény nem veszifigyelembe.
Az lenne a kérdésem, hogy ilyenkor hogyan kellene jelölni az egy kérdéshez tartozó válaszokat,hogy azt figyelmebe is vegye a függvény.Egy ellába csak egy érték írható?
Bocsánat, ha nagy hülyeséget kérdezek, de csak halványan dereng a táblázat kezelés.
Nevezz ki egy üres füzetet gyűjtőnek (nem kell, hogy ez legyen a neve).
Alt+F11-re bejön a VB szerkesztő. Bal oldalon kiválasztod ezt a füzetet, Insert menü, Module. Kapsz a füzetedben egy Module1 nevű modult a bal oldalon, erre állva a jobb oldalon kapott üres felületre másold be a makrót.
A 200 fájlod legyen azonos könyvtárban, ez az új füzet egy másikban.
A makró jelzett sorában írd át az útvonalat a 200 fájl útvonalára. Sajnos, a fórummotor eltünteti a \ jeleket, én meg mindig elfelejtem, hogy csak akkor mutatja (egyszer), ha kétszer ütöm be. A sor helyesen:
Const utvonal = "E:\Alkönyvtár\" 'Itt írd át az útvonalat
Remélem, most jól adja vissza.
A gyorsabb futás érdekében a Sub Osszevon sor alá írd be:
Application.ScreenUpdating = False
az End sub fölé pedig
Application.ScreenUpdating = True
Csak a gyűjtő füzeted legyen nyitva. Alt+F8-ra megjelenik a makrókat tartalmazó ablak, itt indíthatod az Osszevon makrót.
Van sok (nagyon sok, kb 200) különálló excel file. Mindegyikben 3-3 oszlop van különböző számokkal, de az oszlopok legtetején (tehát az első sorban) természetesen az oszlopok elnevezése szerepel. Egy oszlop kb 300 sorból áll.
Most nekem azt kéne valahogy elérnem, hogy minden excel file 2. oszlopa egy oszlopba kerüljön, tehát, hogy az összes adat, amely a 2. oszlopban található egy táblázat egy oszlopába kerüljön. Az nem baj, ha a 200-szor bele kerül az oszlop elnevezés (gyáriszám).
Természetesen nem CTRL+C éd CTRL+V megoldásra gondolok.
a1:a10-ben vannak az eredmények, a lényeg a * joker karakterként használata. Ha az eredmény (válasz4) egy cellában van, akkor azt is megadhatod kritériumnak - csak fűzd hozzá a csillag karaktert.
Az alábbi problémámban szeretnék segítségeteket kérni:
A szakdolgozatomhoz szükséges kérdőív feldolgozását csinálom épp és a probléma a következő lenne:
A kérdőív során van pár olyan kérdésem, melyre több válaszlehetőséget is meg lehetett jelölni. Ezeket a válaszokat a rendszer (google docs) válaszadónként egy-egy cellába mentegette el vesszővel elválasztva (3 megjelölt válaszlehetőség esetén a cella tartalma pl.: "válasz1, válasz4, válasz8").
Tegyük fel, hogy szeretném megszámolni, hogy hányan jelölték be a "válasz4"-et. A darabteli függvénnyel probáltam elsőre, de az csak akkor számolja bele a "válasz4"-et ha az adott cella csak a "válasz4"-et tartalmazza, vagyis a válaszadó ezen kívül semmi mást nem jelölt meg. Tehát, ha a cella tartalma kizárólag az, hogy "válasz4" akkor beleszámolja, de ha az hogy "válasz1, válasz4, válasz8", akkor már nem.
Kérdés: hogy tudnám azt megcsinálni, hogy minden egyes cella, ha tartalmazza a "válasz4" karaktersort, akkor adogassa ezeket össze?
feldobom a problémámat, amire alighanem nincs megoldás...
Adott egy pivottábla, egy számított mezővel.
Ez tartalmaz egy évenkénti részösszegzést.
A gond az, hogy a számított mezőnél a részösszegzést a számított mezőben megadott képlettel végzi - ami normális is. De nem ez kell, hanem rendes "összeg".
Meg akarom őrizni a pivot keretét, nem akarok mellészámolgatni a cellákban.
Tud erre valaki valamit? (Persze lehet, hogy csak én értem, amit írtam...)
Volt egy öteltem, hogy hogyan lehetne gyorsítani rajta, de akkor nem érdekes. Fél perc az nem olyan sok, főleg ha szórakoztatod magad a Select-ekkel :)
A státuszsorba tett üzenetek nem olyan feltűnőek, mint az msgbox-osak, de az utóbbi is egy megoldás arra, hogy ne higgye a felhasználó, lefagyott a gépe.
A Jimmy féle előre figyelmeztetést a ciklus elé kell tenned. Ha ezt msgboxba teszed, a makró akkor fut tovább, mikor a felhasználó leenterezte, a státuszsorba téve pedig végig látszik a futás alatt. Kérdés, észreveszi-e a felhasználó. :)
Delila kösz, ki fogom próbálni. Bár az igazat megvallva, nem tudom, hogy akkor is jelentkezik-e a hiba, amikor a hibaüzenetet ki kell írni. Halvány emlékeim szerint a megállás akkor jelentkezett, amikor egyáltalán nem kellett az eltérésre figyelmeztetni. (Szándékom szerint egyébként is ez volt a részlet funkciója. Hiszen, ha tucatjával jönnek az eltérések, akkkor úgyis valami generális hiba van. Én meg azt ellenőriztem, hogy nincs-e valami apró poloska, ami egy-két rejtett hibát okoz a 2500 sor egyenként közel 20-20 adatában. Így a jellemző eset az, amikor a programrész hibajelzés nélkül fut le.)
Kreálsz egy új oszlopot, és abba képlettel összefűzöd a 4 oszlop tartalmát, ami sorbarendezezési szempont, a prioritás szerinti sorrendben. Tehát ha pl. A, D, B, K oszlopok szerint akarsz sorbarendezni, akkor X segédoszlop tartalma:
X2 = A2 & D2 & B2 & K2
Ezután rendezed az egészet X oszlop szerint, majd törlöd az X oszlopot.
Ha valamelyik oszlopban számok vannak, akkor ott még kell egy furfang: át kell alakítani a számokat helyiértéket megőrző szöveggé. Ha pl. a fenti példában D oszlopban számok vannak, és egyik szám sem nagyobb, mint 10^16, akkor
Nem a kérdésedre válaszolok, de arra, hogy a felhasználó "ne unatkozzon", van egy másik mód is, mint az msgbox.
Kiírathatod a státuszsorba a program pillanatnyi állását, vagy bármilyen más szöveget.
For sor = 1 To sorok adat1 = adat1 = Sheets(aktlapnév).Cells(sor, oszlop) adat2 = adat2 = Workbooks(ellfile).Sheets(aktlapnév).Cells(sor, oszlop) If adat1 <> adat2 Then Application.StatusBar = Str(sor) + ". sor, " + oszlopnév(oszlop) + ". oszlop eltér!" End If Next Application.StatusBar = False
Az utolsó sor visszaállítja a státuszsor eredeti beállítását.
Sem a magyarázatát, sem a megoldását nem tudom, de azt igen, hogy nem különleges eset. Egy-egy hosszabb programfutás során nálam is gyakran előfordul, hogy kvázi "lefagy" az Excel, de közben valójában tekeri a CPU-t ezerrel, és számolja, mait számolni kell, csak megszakad a kapcsolata a külvilággal. Úgy vettem észre, hogy a fókuszváltás az ablakok közt (pl. az Excel ablak elveszti a fókuszt) gyakran (talán mindig) kiváltja ezt a viselkedést. De ha megszakítom a program futását egy Ctrl+Break -kel, majd azt modnom neki, hogy folytassa, visszaáll a megszokott működés.
Az egész valószínűleg egy rosszul megírt Microsoft termék hibája. Mivel a makród ettől még rendesen lefut, a helyedben nem nyugtalankodnék nagyon. Viszont érdemes a makródat úgy megírni, hogy az időigényes számolási rész előtt tegyen ki a usernek egy kis cédulát, amin az áll, hogy hosszú folyamat jön, ami alatt az Excel esetleg úgy tűnhet, mintha lefagyott volna, de legyen türelemmel, és ne piszkálja a Ctrl+Alt+Del gombokat.
Van 2500 sornyi adatom, ezen belül 16 oszlop (A-P). Ezeket tartalmazza a sor és az oszlop változó az alábbi részletben, ahol ellenőrzést végzek, hogy azonos-e a két fájl összes adata.
Közben, hogy a felhasználó (szerencsére ez itt csak magam vagyok, hiszen a programot tesztelem) ne unatkozzon, minden sor vizsgálatának elején ráállok annak 1. oszlopára: (Cells(sor, 1).Select). Így a vizsgálat közben szépen fut lefelé a képernyő.
For sor = 1 To sorok
Cells(sor, 1).Select ' Hogy lássuk, amint megy a sorokon
Ez egy nagyon egyszerű programrészlet. Nem is lenne gondom vele. De számomra érthetetlen okokból időnként megáll a képernyőn a futás. A program dolgozik ugyan, de valamelyik sor kiírásánál megmerevedik a képernyő. Azaz látszólag nem hajtja végre a Cells(sor, 1).Select parancsot.
Ráadásul a jelenség nem következetes. Van amikor rendesen lefut, van amikor valamelyik soron megáll a léptetés. És, hogy melyiken, az mindig változó. Valami memóriazavar lehet, úgy sejtem.
Aztán – ha megállt a képernyőn a léptetés - a program befejezi azért az ellenőrzést, és kiírja a program végén, hogy vége az ellenőrzésnek (vagy ha közben eltérés van, azaz ki kell írni a hibát, hogy eltérnek az adatok, akkor azt is rendesen megteszi.), tehát csak a Cells(sor, 1).Select parancs nem működik. Szerencsére nincs jelentősége, mert a felhasználó nem találkozik vele, csak engem nyugtalanít. Mint minden olyan esemény, ahol nem az történik, amit szeretnék Ismeritek Murphy idevágó törvényét: „A program mindig az utasításaidat hajtja végre, nem pedig a kívánságaidat”.
Szóval tudja valaki a dolog magyarázatát, esetleg a megoldását?
Dehogynem, rengeteg. De a többségét megoldom. Amit nem, abban eddig segítettetek. Most úgy látom több mint 3 hónap után, hogy a programom átadható a felhasználónak. Kösz az eddigieket is.
De azért még dolgozom tovább. Sejtésem szerint az Excel programozás lehetőségeinek talán vagy fél százalékát megismertem:-))). De hogy ebből mikor lesz akár 25%, az a messzi jövő kérdése:-(((
Pl. Használhatod a ComboBox Change eseménykezelőjét:
Private Sub ComboBox1_Change() If Me.ComboBox1.Text <> "" Then Me.Label1.Caption = "A ComboBox értéke NEM üres" Else: Me.Label1.Caption = "A ComboBox most üres" End If End Sub
Mivel a MIN és MAX függvényekkel [=MIN(A1:L47) és =MAX(A1:L47)] sikerül kideríteni, hogy a tartomány legkisebb tagja 1, a legnagyobb 111, egy új oszlopba felvesszük 1-től 111-ig a sorszámokat. Legyen most ez a tartomány az N1:N111.
Az O1 cella képlete: =DARABTELI($A$1:$L$47;N1). Ezt lemásolod az O111 celláig, és kész.
"Megspórolhatod" az N oszlopot, ha egy oszlopba az első sorba a =DARABTELI($A$1:$L$47;SOR()) képletet írod a fenti helyett, és ezt másolod le a 111. sorig. A SOR() függvény az aktuális sor számát adja eredményül, nem kell egy másik oszlopban lévő sorszámra hivatkoznia a DARABTELI függvénynek.
Akkor mondok egy nagyon primitív megoldást. Azt meg tudod tenni, hogy valamennyi oszlop adatát egyenként kijelölöd, és egyenként átmásolod az A oszlop adatai mögé? Ha igen, akkor az átmásolgatás után az A oszlopban lesz 564 adatod, tekintve, hogy most van 12 oszlopod, egyenként 47 sorral. (Megjegyzés: Az átmásolásnál javaslom a kivágás/beillesztést, így nehezebb eltéveszteni, hogy hol tartasz)
Ezután az A oszlop 564 adatát (vagy az egész A oszlopot) kijelölöd (a kijelölés muszáj az adatok közt lévő szóközök miatt), és adatok->sorba rendezés>A oszlop->emelkedő sorrendben.
Ez már összehozza az azonos értékeket, és meg tudod számolni őket.
A szakértőktől elnézést a megoldás közönségessége miatt, de működik, és talán érthető.
2003-ban szét kell választani. Írtam a pontot, láttam én is a kétféle elválasztót.
A min és max függvénnyel megnéztem, hogy 1-től 111-ig vannak számok. Egy ilyen számsorral és a darabteli függvénnyel már könnyen meg lehet számlálni az A1:L47 tartományban az egyes számok előfordulását.
Ezek szerint nem kattintottál. :-) Ez egy csv, simán megnyitja tagoltan az Excel, csak rosszul írta a kérdező. Egy helyen ponttal van néhány elválasztva, azt kell javítani.
Lenne egy gondom ha netán valaki tudna segiteni rajtam, fel tettem egy csv ( http://www.csomortani.ro/szavazas/ fájt ahol 47 sorban külömböző számok vannak vesszövel elkülönitve egymástól a kérdésem az lenne, hogy lehetne összeszámolni a legkönnyebben, hogy pl a 2 szám hányszor jelenik meg (ez egy szavazat számlálás lenne) és igy tovább mert igy neki álltam számlálni de eléhg bonyolultnak tünik a számlálás . Köszönöm a segitségeteket üdv Ernő
Köszönöm, sikerült makróval megoldani, van még egy kis próblámám van egy excel táblázat 2392 hivatkozással amira ha rákattintok megjelenik a böngészőben a kép. Milyen programmal vagy hogyan lehetne letölteni a képeket egy mappába?
3 féle karaktert írhatsz a MUNKALAP nevű munkalap A oszlopába, ezek a K, M, és P.
Az kiderült, hogy ha K-t írsz, akkor egy másik lap (mi a lap neve?) B oszlopába akarod íratni a MUNKALAP változott sorában lévő E oszlop értékét, az első üres sorba.
Hova kell íratni, és melyik oszlop értékét, ha a beírt karakter M, vagy P?
=HA(MUNKALAP!B2="K";(MUNKALAP!E2);("")) Így oldottam meg, de nem teljesen tuti. Ugyanez a P-vel. Egy baj van, hogy így a másik két munkalapon üres soraim is maradnak. Erre viszont nincs ötletem hogyan lehet megoldani.
Kicsit off, de talán idevágó emlék: Jó 20 évvel ezelőtt írtam meglehetősen összetett programokatt (Clipper programmal, dbase adatállománnyal). A program nagyon figyelt a lehetséges hibákra az adatbevitelkor, így általában nem volt gond az értékeléssel, meg a nyomtatásokkal. Aztán az egyik felhasználó úgy gondolta, hogy ő ért az adatbáziskezeléshez, és elkezdett a program megkerülésével belepiszkálni az adatállományba. Aztán sorozatban jelentek meg a hibák az értékelésnél. Nagyon hamar összevesztünk:-)
Ránéztem még egyszer és nagyon hosszú a makró.../sajnos a szenvedéseim ellenére nem annyira szép és frappáns, csak nekem tűnt úgy, mikor végre sikerült befejeznem.../
Tesztelés során /egy milliószor/, nálam tök jól működött.
Már használták is mások, legalább 4x és minden tutin működött. Aztán használta valaki, akinek fura ötletei voltak a makróval kapcsoltaban...neki már nem működött.
Hát, én szívesen átküldöm neked a makrót, de nem lesz nagyon szórakoztató :-).
De szerintem anélkül, hogy nagyon belemennél, hogy mi mit csinál...biztos egyból kiszűrnéd a gyenge pontokat. Ha azokra rámutatnál, az nagy segítség lenne nekem.
Nagyon megköszönném, ha bele tudnál nézni, de csak ha nagyon nincs mit csinálnod...
Dim r As Range Set r = Worksheets("Munka1").Range("E" & Rows.Count).End(xlUp).Offset(1) If checkbox1.Value = True Then r = 1 Else r.ClearContents End If
Csak nem volt kedvem form-mal bajlódni, ezért a teszteléshez cellaként deklaráltam a checkbox1-et. Ami a felhasználást illeti, a Dim kezdetű sort a szubrutin elejére kell tenni, a többivel pedig helyettesítsd azt a két sort, amit 16049-ben beküldtél.
Hát én szívességből írtam valakiknek makrót, de lehet nem kellett volna :-)...jól kiszúrtam magammal :-DDD..
Jó persze, én egy csomó új dolgot megtanultam-ezért is vállaltam be részben-, de jól megszenvedtem vele... bár egyáltalán nem annyira bonyolult amiket csinálnia kell.
Hihetetlen sok időm elment rá...és dühítő, hogy a végeredmény az, hogy a végfelhasználó csak azt látja...megnyomom és nem működk...
De persze ez az igazság. Meg persze ez az én hibám.
Elvileg mindent definiáltam, próbáltam okos lenni, meg előre gondolkodni...rengeteget javítgattam...
Azt hiszem lehet hogy bizonyos esetekben "felhasználó barátabb", ha nem az van, hogy semmit sem kell csinálnia a felhasználónak /lást pl makró/, hanem pl inkább függvényezett templéteket adunk nekik, amiket kicsit jobban átlátnak/értenek, nem?
Egy makró sosem lesz bolondbiztos, csak ha 10 sornál rövidebb, és egyébként nem csinál semmit. De azért törekedni kell rá, mert a favágónak az a dolga, hogy fát vágjon, és ha nem tud bánni a makróval, amit adtunk neki, az nem feltétlenül az ő hibája. A magam részéről jó gyakorlatnak gondolom az alábbiakat:
1) A VB Editor Tools->Options->Require Variable Declaration bekapcsolása. Ez minden új kódlapra alapértelmezésben kirakja az Option Explicit kifejezést, ami pedig megköveteli a változók deklarálását. A változók deklarálása azért jó, mert már az első fordításkor kibukik, hogyha valami típusütközés van, míg ha nincsenek deklarálva, akkor talán csak bizonyos körülmények között jelentkezik a hiba. Meg az Intellisense sem egy utolsó dolog.
2) Mindig pontosan definiálni kell a munkafüzetet, a munkalapot és a cellatartományt, amivel dolgozunk.
Nem elég az, hogy
ActiveCell = 2
Hanem pl.
ThisWorkbook.Sheets("Munka1").Range("F3") = 2
Hosszabb, de megéri, mert így biztosan azt csinálja a kód, amit akarsz. Amúgy meg ki tudja, hogy mi lesz az ActiveCell, amikor éppen ahhoz a sorhoz és a program? Hasonlóképpen, hanyagolni kell at ActiveSheet-et is, amikor csak lehetséges.
3) Érdemes a kódot kisebb részekre, szubrutinokra bontani, amelyeknek mind meghatározott funkciójuk van. Ettől áttekinthetőbb lesz, és a javítás/továbbfejlesztés is egyszerűbb.
4) Figyelembe kell venni, hogy vannak az Excelben verziófüggő elemek. Különösen vállalati környezetben gyakran előfordul, hogy többféle verzióban is futnia kell a programnak.
Elsőre ennyi, majd még ha eszembe jut valami, közreadom.
Dim r As Range, checkbox1 As Range Set checkbox1 = Range("A1") Set r = Worksheets("Munka1").Range("E" & Rows.Count).End(xlUp).Offset(1) If checkbox1.Value = True Then r = 1 Else r.ClearContents End If
Itt mindenki segítséget kér köztük én is.Itt hülyítem magam egy táblázattaladott egy webáruház 2392 termékkel a képek elérési útvonala egy oszlopban van megadva a megjelenítendő név "link"
ami hiperavatkozás a termék képére.Egyenként símán ugye hivakozás szerkesztése megjelenítő szöveg és máris jön az url. Hogyan lehetne láthatóvá tenni az oszlopban a több mint 2000 urlt-
Csatolom a képet amin egyenként megy. De ezt megcsinálni 2000-szer :(
Egy dologgal nem tudok megbírkózni. Van egy munkafüzetem, három munkalappal. Az első munkalapon van egy listám a C oszlopban, aminek minden egyes sora elé, ( B oszlopba ) P, K, M betűt írok. Ezt kellene az Excelnek a másik két munkalapra szeparálnia. Tehát ha az első munkalapon beírom a sor elé hogy P, akkor azt a második munkalapra kellene hogy tegye.
A segítségeteket kérném, mert egy feladattal nem tudok megbírkózni.
Adott egy VBA által létrehozott Form, melyen sok-sok ComboBox, és CheckBox, és egyéb adatbeviteli mező található.
Minden mező kitöltésekor, illetve a mezők által felajánlott választási lehetőségek kiválasztásakor ugyebár értékes adatok halmozódnak fel, amelyeket szeretnék egy excel tábla keretein belül rögzíteni.
Alapból tudom, hogy hogyan kellene megoldani a feladatot, viszont a helyzet annyiban bonyolódik, hogy a bevitt adatokat az excel táblázatban soronként szeretném eltároltatni az alábbi meghatározott szempontok szerint.
Példának okáért gyorsba szerkesztettem egy formot, és egy adattáblát, (amelyet a mellékletbe raktam) amely ugye az adatbeviteli mezőket tartalmazza, amelyekbe ugye beírjuk az adatokat.
Összefüggések: Amennyiben az adatbeviteli formon megadjuk a szükséges adatokat, és lementjük a Rögzítés gombban, abban az esetben a megadott adatok ugyebár rögzülnek a táblázat meghatározott oszlopainak, és sorainak keresztmetszetében.
A PROBLÉMÁM AZONBAN AZ, HOGY NEM TUDOM, HOGY HOGYAN KELL MEGCSINÁLNI AZT, HOGY AZ ADATBEVITELI FORM MINDIG A SORON KÖVETKEZŐ ÜRES SOR-OSZLOP KERESZTMETSZET ADATMEZŐIT TÖLTSE, TEHÁT NE írja felül a már bevitt adatokat azzal, hogy ugyanarra a helyre rögzíti a soron következő adatokat.
A táblázat képernyő mentésén jól látható, hogy az A oszlopban különböző kalkulációk mennek végbe (amelyek a táblázatban megjelenő adatokkal vannak összefüggésben), tehát az az út, hogy mondjuk sorokat szúrkálok be egy a kód segítségével, nem működik, mert akkor megbomlik a táblázat A oszlopban lévő kalkulációs része.
Alapból valami ilyesféle kódot használok a Rögzítés gombra történő kattintáskor például, ha az Ügyfél elmúlt 18 éves :
if checkbox1.value = true then Worksheets("Munka1").Range("e8") = 1
if checkbox1.value = false then Worksheets("Munka1").Range("e8") = „”
Ebben a kódban ugye az a baj, hogy konkrétan meg van határozva, hogy az adat rögzítése a táblázat mely cellájába kerüljön, nekem pedig annyivel kellene több, ha egy bizonyos sortartományba már szerepelnek adatok, akkor abban az esetben a következő sor töltődjön.
A Frame háttere nem állítható be transzparensre 2003-ban sem.
De ha csak elkülöníteni akarod az adatokat, arra a Label is jó. Leteszel egy Labelt, beállítod a BorderStyle-t folytonos vonalra, a BackStyle-t meg transzparensre, és kész. Ha nagyon akarod, még teszel rá egy Textbox-ot is, a felső Border-re feliratnak.
A Frameket formalitás miatt használom, hogy az ablakon lévő adatokat el tudjam különíteni, tehát azok kellenének. A 2003-as excelben működik, hogy a Frame átlátszó?
Nem tudom, 2010-ben mi a helyzet, mert én még 2003-ban élek, és nem látok a jövőbe. Viszont azt javaslom, nézd meg az OptionButton objektum GroupName tulajdonságát, és akkor szerintem nem lesz szükséged Frame-re.
Rákérdezek, mert lassan én kezdem azt hinni, hogy hülye vagyok.
Az Excel 2010-ben azt tényleg nem lehet megoldani, hogy a VBA programozás alkalmával a Form-okra kitett Frame-ek átlátszóak legyenek, azaz ne szürke szívű legyen, hanem az Form ablak háttere látszódjon helyette??
Egy kis segítséget kérnék tőletek, mert hiányosak a VBA programkód ismereteim.
Adott egy ablak(form), amin van 3 OptionButton, amelyek egymással kapcsolatban állnak (tehát a 3 közül csak 1 választható), valamint egy CommandButton, ami az ablak bezárásának funkcióját látná el oly módon, hogy megvizsgálja, hogy a 3 OptionButtont, hogy bármelyik ki van-e jelölve közülük. Azt szeretném elérni, hogyha egyik sincs kijelölve, akkor jelenjen meg egy új form egy hibaüzenettel, hogy a választás kötelező.
Azt tudom, hogyha csak egy OptionButton értékét vizsgáljuk, akkor így oldanánk meg a feladatot, de 3 esetében hogy néz ki a programkód?
If OptionButton1.Value = False Then UserForm5.Show