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.
Belefutottam egy újabb problémába, aminek nem értem az okát.
Dossziék számozásánál kötöjeles elválasztás van, access-be átmentésnél ezt se szövegként, se feljegyzésként nem hajlandó befogadni, nem értem az okát. (hibaüzenet: ezeket a sorokat nem veszi át az access, üres cellákat eredményez).
Arra gyanakszom, hogy anno mivel évekig csak számokat rögzítettek, ezért számként volt értelmezve, amikor kitalálták az al-dossziék miatti kötőjeles számozást, akkor se kötőjellel, hanem minusz jellel rögzitették, és valamiért számként értelmezi az áttöltö rutin. (Vagy valami más lehet az ok.;)
Azért feltételezem ezt az okot, mert volt már ilyen esetem, hogy bizonyos excel táblázatban bizonyos számokkal probléma volt, nem volt elegendö számról szövegre, majd visszadefiniálni a cellákat, be kellett iktatni egy 1-essel való szorzást is a tényleges számmá alakításhoz. Itt most "ténylegesen" szöveggé kellene alakítani, erre mi a megoldás?
Úgy tűnik, hogy a kezdő és a végső ténylegesen megadott elem (9-1=8) különbségét osztja kettővel és ezt használja (4). A számított kezdőérték 12,3333 meg valszeg a (3(megadott elemek száma)*4(átlagos különbség)+1(kezdő adat)/3(megadott elemek száma) képlettel jön ki.
Fel kell dobni az egészet egy grafikonra és ott látszik, hogy lineáris v. exponenciális görbét ad az excel "folytatása". Én egyébként lineárisra tippelnék.
Ha valóban lineáris, akkor könnyű kiszámolni a paramétereit. Első ránézésre nekem úgy tűnik egy - valamilyen módszerrel kiszámolt - kezdőértékhez adogat 4-et.
Milyen algoritmus alapján számolja az Excel a folytatást, ha egymást követő cellákba nem 1, 3, 5, 7 ... írok és folytatja, hanem össze-vissza számokat. Pld: 1,3,9 -et úgy folytatja, hogy 12,333333 utána 16,333333 majd 20,333333 stb...
Data/Adat fülre mész és ott a Text to Columns (Szöveg oszloppá?) ikont választod, megadod, hogy a táblázatodnak van fejléce illetve azt választod ki, hogy NEM fix hosszúságú celláid vannak (hanem szeparátorokat használsz).
Állítsd be, hogy a szeparátor a szóköz és kész is.
A fentiek xl2007-re és felette vonatkoznak. Ha 2003-as vagy korábbi exceled van, akkor vagy függvényesen lehet szétszedni a cellák tartalmát, vagy valaki majd megírja, hogy a Text to Columns benne volt-e már a 2003-as excelben is és ha igen akkor melyik menüben (Data / Adat menüre gyanakszom).
Van egy pdf dokumentumom, mely egy táblázatot tartalmaz tele adatokkal.
A táblázatot kijelölöm és átmásolom egy excel -be.
A probléma az, hogy ugyan a táblázat sorai megmaradnak, de a táblázat oszlopait összefűzi és így az excel -ben "A" oszlpban lesz minden adat.
Hogy tudom azt megoldani, hogy az excel -emben a pl "A1" cella tartalmát szétszedje és A1, B1, C1, D1, E1 .... cellákba tegye át?...így az eredeti táblázat adatcsoportja lenne
Amikor a másolás során "összefűzi" az adatokat a pdf-ből történő bemásoláskor, akkor az adatcsoportok között egy szóköz van. Az eredeti táblázatban az egy cellába tartozó adatokban nincs szóköz.
Másik probléma: 1-500 közötti számok szerepelnek egy oszlopban, ezt szöveggé kell alakítani vezető nullák feltöltésével együtt. A szöveg() függvény erre használható lenne?
Toccata jól mondja, az FKERES érzékeny arra, hogy az oszlopok milyen sorrendben vannak.
Ha valamilyen okból kifolyólag nem lehet a táblázat oszlopainak sorrendjén változtatni, akkor szólj és INDEX-ből és MATCH-ből összerakunk egy igazán csúnya, de jól működő függvényt.
Próbáltam, hülyeséget írt ki. De valószínű, mert nem rendeztem növekvő sorrendbe. De meg fogom próbálni. De most zizi vagyok rámozdulni teljes intenzitással.
Az A oszlopban a termékek kódnevei (kb 150 féle termék) gyártási dátum szerint növekvő sorrendben, a B oszlopban meg hogy mikor gyártották. Valahogy így:
A B
B123 2011.01.10.
G522 2011.01.10.
F002 2011.01.10.
D101 2011.01.11.
D106 2011.01.11.
B123 2011.01.12.
L772 2011.01.12.
stb..
egy terméket többsztör is gyárthattak, ilyen pl a B123 termék. Kb 500 sorból áll a táblázat.
Van egy másik munkafüzet (táblázatom), amiből a kódnevekből megtudható a rendes neve. Az A oszlopban a rendes neve, B oszlopban a kódneve. PL.:
A B
zöld fonal B123
kék fonal F002
sárga fonal D101
stb..
Amit szeretnék, hogy az első táblázatban megjelenjenek a kódnevek mellett a rendes nevek is egy másik oszlopban.
Először Ctrl+F keresővel elkezdtem kikersgélni a termékeket, de ez így baromi lassú, ráadásul több ilyen táblázat van. Úgyhogy elég sokáig tartana.
Légyszi segítsetek!
A HA függvénnyel nem is álltam neki a kb 150 keresés miatt.
Az SQL által javasolt videó az utolsó beírt dátummal készíti el a diagramot teljes időintervallummal, vagy vissza x dátummal, az általam küldött tetszőleges 2 dátum közöttit rajzol - foghíjas dátumnál is.
Alaphelyzetben van egy A1:A10 cellatartományom, mely teljesen üres. Hogyan lehetne megoldani, hogy a tartomány celláinak összege csak és kizárólag 100 lehessen? Úgy szeretném, hogy szabadon lehessen módosítgatni a cellákban lévő értéket mindaddig, amíg az összegük meg nem haladja a 100-at, illetve, hogy amennyiben már mind a 10 cella tartalmaz értéket, azok összege pont csak 100 lehessen? (Tehát ha pl 9 db cellában van érték, melyeknek összege 95, akkor a tizedik cellába csak 5-öt engedjen beírni)
A dátum, B2 kezdő dátum, B3 végső dátum, E adatok. Van egy listám, ami napi felbontású, egy évre visszamenőleg és ebből kellene diagrammot készítenem de mindig csak egy adott dátumtartományon belül. Van lehetőség diagrammban hasonló módon így dátumtól-dátumig oszlopokat megadni ?
Igen, Robbantómester utalt is egy korábbi posztomra, ahol leírtam, hogy mire jó a dupla minusz. Abban a posztban leírtam azt is, hogy a duplaminusz nem kell mindenhova, de lusta vagyok megjegyezni, hogy hova muszály (asszem a SUMPRODUCT), így az egyszerűség kedvéért én mindenhova berakom.
Olyan problémába ütköztem (fatömegbecslés) hogy háromszöges fügvény kéne amely két bevitt számot megkeres egy segédtáblázatban és a kettő metszeténél lévő számot kiírja mellékelek egy képet hogy érthetőbb legyen. segítségeteket előre is őszintén köszönöm! (az áttekinthetőség kedvéért a narancssárga mezőkben kéne megjeleníttetni a piros és kék metszetén található számot)
Ez teljesen tuti köszönöm már csak egy apróság hiányzik. Egy-egy cellában meg akarom adni a kezdő és a befejező dátumot. Próbáltam a képletbe írni abszolút értékkel, majd elneveztem a a két cellát a névkezelőben és a neveket adtam meg, ettől függetlenül 0-át számol. Biztos valami piti dolog de nem jövök rá. Ne nevessetek ki. :D
Még egy dolgot szeretnék megkérdezni. Ha jól tudom az excel a dátumokat sorszámként kezeli. Tehát ha minden munkafüzetem minden termékét egy külön munkafüzetbe kilistázom dátum szerint, akkor lehet olyat csinálni, hogy pl 20110520 és 20110415 között szummázza az adott oszlopot ? Azt nem tudom, hogy a dátumhoz, ami pl A oszlopban van hogyan lehet kapcsolni a többi oszlopot, nyilván egyenként....
Szia ! Ez nagyon klassz ! Ez alapján szerintem meg tudom csinálni a táblázatomat. Úgy tudom átfedni a hónapokat, hogy a listában fél hónapokat veszek alapul, az előző hónap utolsó kettő és az aktuális hónap első két hetét.
Mégegyszer köszönöm szépen a segítséget, a sok jóindulatot és ne haragudjatok az agyleszívásért. :)
Kipróbáltam excel 2007 ben ”L” alakzatot meg tudtam csinálni. Hogyan tudok hozzá "ragasztani" cellatartalmat hozzárendelni? Nehezen igazodok ki az új elrendezésű képernyőn.
Próbáltam a neten rákeresni erre a parancsra nem találtam semmit mi a parancs pontos neve? esetleg leirás
Alapjában más a kiindulás, mint Sznidánál. A névadásokat nézd meg, ofszet függvénnyel jelölök ki annyi tételt az adatok végéről, amennyit a J1 cellában megadsz.
Az összegző képletek (pirossal) az F2:H2 tartományban vannak a 3 termékre. Ezek a szum függvények a rugalmas, névvel megadott tartományokat összegzik.
A könnyebb áttekintéshez az F3-ba beírtam az aktuális tartományt. Ezt megnézve módosíthatod a J1-et több, vagy kevesebb napra.
A bolhabetűs táblázatodat nem tudtam kibogarászni, ezért vettem alapul az indító kérdésedben jelzett 4 oszlopot.
Lehet hogy primitív megoldás, de arra gondoltam hogy a különböző hónapok oszlopait kigyűjtöm egy külön munkafüzetbe és azokra az oszlopokra alkalmazom a képletet amit írtatok korábban, így talán működik a 20-25 napos visszaszámolás, mert nem kell munkafüzeteket átlépnie.
Szia ! :) Igen, az nagyon komoly megoldás, nem jöttem volna rá magamtól. Köszönöm.
Lehet hogy még valaki emlékszik erre:
Ez volt az a táblázat, amiben 20 napot kellene visszaszámolnom. Közben kiderült, hogy ez lehet 24 vagy 21 nap is teljesen mindegy, csak a második hónap közepétől fedje az első hónap közepéig a számokat kb 20-25 napra. Ha a hónap elejétől számoljuk a teljesítményt, akkor a hónap elején lévő kiugrások miatt torz képet kapunk. Erre van valakinek ötlete ?
Most így néz ki pl az első oszlop: B4=(E4/F4)*100 E4 illetve F4 pedig csak szummázva van a 100x-ik sorig. E4-et, illetve F4-et viszont kb 20-25 napra visszamenőleg kellene tudnom.
Sikerült összehoznom ezzel az összefűzéssel. Köszi! :) Azért kellettek a sorszámok, mert ezek a számok kerültek be az OFSZET függvényekbe, amelyek a scrollozható grafikonhoz vannak kapcsolva.
Fűzd össze a segédoszlopban az év(a1)-et és a hónap(a1)-et, és ezt add meg a kereső cellában.
A B1 képlete: =JOBB(ÉV(A1);2)&"."&JOBB("0"&HÓNAP(A1);2), a kereső cella szöveg formátumú legyen, oda 06.02 -t írj be a 2006. febr-i adatok első és utolsó sorának kikereséséhez.
Ez az első kérdésedre vonatkozik, de most kiderült, hogy nem a sorszámokra vagy igazán kiváncsi, hanem a tól-ig tartományt akarod megjeleníteni. Erre való az autoszűrő. Az egyéni kategóriában be tudod állítani a kisebb, nagyobb, egyenlő értékeket.
Ha a 2003-as verziónál magasabbal dolgozol, a szűrési lehetőségek között megtalálod a Dátumszűrők lehetőséget.
A szöveg egy cellából érkezik ami esetemben pl=integrator!F43 . Cella tartalma: pl 5655 Borsodnádasd Kazánkovács utca 15/ E 5/15 ez nem fér ki egy sorba csak kettőbe a nyomtatvány adottságai miatt, a rendelkezésre álló hely ilyen L alakú hasonlóan ahogy rajzoltad. Hogy tudom azt megoldani, hogy automatikusan az alsó cellába tegye a szöveget ami nem fért ki a felsőbe.
Próbáltam alakzatot beszúrni L alakú nem találtam. Szabadkézi sokszöggel próbálkoztam de abba nem tuttam szöveget beírni, az Egyszerü alakzatokba tudtam szöveget beírni bár ezek közöt nincs ojan ami nekem jó lene
Hogy kel hozzá "ragasztani" cellához és ugyanúgy tudja venni ez az alakzat a benne lévő szöveget egy másik cellából
Köszönöm, ez működik és értem is, hogy egyezést keres a képlet, viszont ezt csak egy éven belül lehet használni. Nekem meg előfordul olyan is, hogy pl. 2006. február és 2008. július közötti értékeket szeretnék megjeleníttetni, vagyis a nagyobb, vagy egyenlő, mint 2006.02.01 és kisebb, mint 2008.08.01 közötti értékeknek kell szerepelniük. Megpróbálom úgy, hogy a 2006. februári értékek mellé 2006.02.01-et írok, és azt nézem meg, hogy hol szerepel először ez az érték. A 2006. márciusi értékek mellé meg 2006.03.01-et írok és a kapott számból 1-et levonva megkapom a februári legutolsó érték sorának a számát.
Ne haragudj, de olyan érzésem van, hogy igazából nem kell neked L alakú egyesített sella, csak ezt ötölted ki mert nem tudsz más megoldást
Amúgy ilyet nem lehet, de be tudsz szúrni "L" alakzatot, amit tudsz "ragasztani" cellához és ugyanúgy tudja venni ez az alakzat a benne lévő szöveget egy másik cellából
Cellákat szeretném L alakban egyesíteni Pl: A2 B2 C2 B1 C1 Excel 2003-ban de nem sikerül, csak négyzet alakúakat tudok létrehozni. Hogy lehet ezt kivitelezni, vagy újabb verziónál ez megoldható?
Nyomtatvány kitöltésére használnám. amin ilyen L alakú rublikák vannak, az adatok szövegek, egy másik munkaapról hivatkozással érkeznek egy sorba nem fér el. Vagy azt hogyan tudom megoldani hogy a cellából kimaradt adatot egy másikba tegye autómatikusan.
Vagy valamijen nyomtatvány kitöltő kezelő programot tudtok ami excel adatokat kezeli bemenetként?
Sziasztok! Hogy kapom meg egy növekvő sorrendbe rendezett dátumtartományban annak a dátumnak a sor értékét, amelyik az adott hónap első ill. utolsó eleme? Az adott hónapot én változtatom. Biztos van valami egyszerű megoldás, nekem sajnos nem akar összejönni...
ha külső hivatkozást tartalmazó cellában kérdezel meg előd/utód képletet, akkor megjelenik egy szaggatott vonal egyik végén a celláddal a másikon nyíllal és egy kis négyzettel - jelezve, hogy az egy másik füzet/v lap.
Sziasztok! Adott több Excel fájl mindegyik több munkalappal. Egyes cellák más munkalapok, illetve fájlok celláira hivatkoznak. Az azonos munkalapra történő hivatkozásokat meg tudom mutatni képletvizsgálattal (elődök, utódok mutatása), de ilyenkor a más munkalapra történő hivatkozást csak jelöli az Excel, de a cellát nem adja meg. Van arra lehetőség, hogy ilyenkor is megmutassa a hivatkozás pontos helyét? Az is nagy segítség lenne, ha egy táblázat celláihoz tartozó hivatkozásokat, képleteket egyszerűen ki lehetne gyűjteni. A cellákban a "képletek megjelenítését" ismerem, de ilyenkor a számok tűnnek el és váltáskor a cellaszélességek változása miatt is nehézkes a kezelése.
Nézted abban a táblázatban, hogyan oldottam meg az idővel való szorzást? Az időt egyéni formátumban van megadva, és így lehet szorzásra használni a cellát!
Köszönöm a segítséget. A sima csere nekem elég, mert egyszerűen csak adatbázist raktam össze Excelben, amit másol-beillesztel paranccsal egy másik programba viszek át, ami nem ismeri fel a tizedesvesszőt csak a tizedespontot. Még egyszer köszi.
Az a kérdés, hogy hogyan akarod utána használni a cellákban lévő számokat, mert ha simán kicseréled, akkor nem szám lesz ami szám, azaz nem fog számolni velük az excel.
Ezt a cserét simán meg tudod csinálni, szerkesztés, csere, mit cserélsz mire, tehát ,-t .-ra.
Ha utánba is számként akarod kezelni, akkor arra az időre a windows területi beállításokban kell a tizedes-t pontra cseréni.
Egy olyan kérdéssel fordulok hozzátok, hogy hogyan lehetséges (tizedes)vesszőt pontra cserélni Excelben, ha egy nagyobb adatbázisom van. Az a problémám, hogy közel 10000 cellában vannak megfigyeléseim, amelyek között vannak kisebb-nagyobb értékek is (tehát a tizedesvessző helye sokszor változik). Az lenne a kérdésem, hogy létezik-e megoldás arra, hogy a vesszőket pontra cseréljem?
Semmi gond, megnéztem a küldött file-t, és ott így volt a legegyszerűbb. Azért is használtam a Range függvényt/parancsot, mert ott megjelent a "Q", mint oszlop jelölő betű, ezért azt gondoltam a kérdező majd rájön, és ügyesen testre szabja magának. Tévedtem. :)
Igen, tonci123 14933-as hozzászólásából lehet arra következtetni, hogy iskolai feladat, és igen, említette 10-zel előtte, hogy nem engedi a feladat a plusz oszlopot.
Ezt nem értem. Az alapkérdéstől érzésem szerint már elkanyarodtunk afelé, hogy "hogy lehetne..." Kérdező már nincs is, csak idepottyantott valamit :) Ja meg asszem írta azt is hogy nem lehet plusz oszlop.
Amúgy meg ha ez egy zh vagy valamilyen házi, akkor a feladó nem gondolta át a feladatot.
Az egyetlen amit el tok képzelni egy iskolai feladathoz, az a cella+cella+cella+cella módon kézzel összeadogatni.
Köszönöm mindenkinek a segítséget. A feladatot leadtam, ha tudom megszerzem a megoldást:-) és közzé teszem. Én még kevés voltam ehez. Hála az égnek ez csak egy része volt a feladatnak..... úgyhogy még remélem ettől még elfogadják.
Ahogy Delila említette, makróval megoldható a dolog egy képlettel.
Az ehhez szükséges függvény (egy lehetséges megoldásban) így néz ki:
Function Pénzösszegzés(Tartomány As Range, E_Árfolyam As Range) Dim c As Range, Result As Single For Each c In Tartomány.Cells If Right(c.NumberFormat, 6) = "[$€-1]" Then Result = Result + c.Value Else Result = Result + c.Value / E_Árfolyam End If Next Pénzösszegzés = Result End Function
Úgy tűnik, hogy a CELLA függvény nem hajlandó tömböt visszaadni, így aztán se tömbfüggvénnyel, se szorzatösszeggel nem ment, próbáltam xl2003 és xl2007 alatt is. Ha menne, akkor valami ilyesmi lenne:
Az elsőt képlettel nem, csak makróval lehet megoldani. Miért nem írod a pénznemet egy külön oszlopba?
A másodiknál a HA függvénybe ágyazz be egy DARABTELI függvényt, amivel az x-eket számoltatod meg a sorban. Ha nincs a sorban x, a DARABTELI nulla értéket ad.
Az első kérdésem devizanemből lenne egy oszlopban csak cellaformázással létrehozva van Ft és Euro értékek és az oszlop alján Euro-ba kellene összeszámolnom, hogyan oldható meg?
A második kérdés kicsit talán bonyolultabb.
Ezeket a termékeket könyvelni kellene, és két részletben kell fizetni. A probléma, hogy van vagy 6 negyed év és bármikor fizethetem az első negyed évet és utána a másikat. Akár nem közvetlenül egymás után.
Egy képlet kellene, ami figyeli, hogy az első részlet le van könyvelve és jön a második rész. Egy másik munkalapon x-el van jelölve amikorra könyvelni kell HA függvénnyel megoldottam, hogy csak akkor számol ha ott x van. Viszont néznie kellene, hogy abban a sorba számolt e már x-et.
Szerintem az egyértelműen a 2. rendszer, csatolok egy képet amit arról az oldalról vágtam ki, és csak a 21-hez van írva, hogy 2. rendszer. Ki is emeltem mire gondoltam.
2010-ben kipróbálva május 23-t már a 21. hétre írta ki, 22 még nem, tehát jól működik!
Vissza_típusA hét kezdőnapja 1 A hét vasárnappal kezdődik. A napok 1-től 7-ig vannak számozva. 2 A hét hétfővel kezdődik. A napok 1-től 7-ig vannak számozva.
Számomra úgy tűnik, hogy e függvény ezen betegsége megmaradt a 2010-esben is.
Ha a T5-ös cellába beírsz egy vonalkódot, mintha érkezne az adat, akkor számol a megfelelő sorban.
Az R1, S1 cellában van minta a szummázásra, ha az r1.be beírsz egy TM... adatot, akkor szummázza, ezt felhasználhatod az össze többire, vagy egy legördülő is csinálhatsz neki!
T5-be érkezik a vonalkód, az össze egy cellába, a program megkeresi melyik sor az, és növeli a darabszámot. Kérdés, a vonalkód milyen formátumban érkezik? pl.: 9410471?
Kell-e nullázni, és mikor, és hogyan akarod?
Mit akarsz az időkkel? A darabszámmal meg kell szorozni? az benne van az R oszlopba, igaz nem az O oszlopra hivatkozva, hanem számként beírva. Ez jó így?
Úristen, ilyet is lehet ? :) Eszembe jutott még egy dolog de ezt már le sem merem írni... Látjátok az alkatrészek mellett vannak olyan kódok, hogy TM xxxx. Ezek a normaidők kódjai, tehát TM06-2821 az 0,11 perc. Igazság szerint ezt is össze kellene adnom valahogy... :( Tehát minden Tmxxx-es értékét ami egyforma. Ezzel végképp nem akarok senkit terhelni, így is nagyon sok segítséget kapok tőletek. :)
A vonalkódok nálatok nem fognak megjelenni, mivel code 128-as betűtípus kell hozzájuk. A vonalkódnak megfelelő kódolt karakterkészlet fog látszani, mondjuk arial-ban :)
Valami olyasmiről lehet itt szó, hogy amikor bekerül az A1-be a beolvasott vonalkód, akkor a vonalkód értékét meg kell keresni a másik munkalapon, a vonalkódok listájában, és a neki megfelelő darabszámot növelni eggyel. Ne adj isten, ha nincs meg a vonalkód, akkor felvenni a listába.
Az megszámolja, hogy hányszor változott az A1-es cellád, ha ez a metódus jó Neked, akkor már csak a Te körülményeidre kell szabni. Gondolok itt a cellák hivatkozásait jól beírni a makróba, valamikor ki kell nullázni a számlálókat, stb.
Vagyis a darabszámnál azt kellene hogy számolja hányszor lett a vonalkód beírva. Egyszerűsítve, ha van egy cellám és öt alkalommal beírokoda valamit, pl 3 5 6 7 8 4 számokat, akkor azt adja eredményül. hogy 5, mivel 5x írtam be oda valamit.
Így néz ki a táblázatom. A lényeg, hogy az első lap ki van nyomtatva, amiről a darabszámolásnál csipogtatják a kódot. A másik lapon pedig a számolás történik számítógépen ténylegesen excel táblába, ami az idő szorzatát is kiadja. A vonalkódok a termék kódja +1 alkatrészenként, tehát pl 940185 az alap kód. Az első alkatrész kódja 9401851 stb...
Én arra gondoltam, hogyha az A1-es cellába teszed be a vonalkódokat, akkor a B1-be számolja hány vonalkód került oda.
Ennek a kódja:
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A1:A1")) Is Nothing Then Cells(1, 2) = Cells(1, 2) + 1 End If End Sub
Csatolva, a VBE képe, ezt az aktuális munkalap objektumba kell bemásolni!
Újabb projekt :D Meg lehet azt valahogy csinálni hogy egy cellába ne az értéket írja, hanem az adatbevitelek számát ?
Egyszerűbben. Vonalkódot olvasok be cellába és azt szeretném, hogy ne a vonalkód értékét írja be, hanem azt számolja hányszor olvastam be a kódot. Lehet hogy volt már ilyesmiről szó, de sajnos nem találtam meg. Köszi! :)
Amennyit vacakoltam vele tegnap, olyan gyorsan megtaláltam ma - szóval köszönöm, ha valaki küzdött a problémával, megvan és természetesen baromi egyszerű:
Először vagyok errefelé és remélem, valaki tud nekem segíteni...szóval:
A felhasználó(m) E-mailben kap egy Excel-táblát, aminek nem lehet előre tudni a nevét.
Kinyitja.
Az Excel-tábla, amit kap, az egy többé-kevésbé szabványosan felépített táblázat (egy táblázatos megrendelő) - aminek a feldolgozásával már nem lenne gondom, arra megírtam már a szükséges "feldolgozó programot".
Azt szeretném elérni, hogy amikor a felhasználó kinyitotta a levelezőjéből az Exce-táblát és látja, hogy az egy megrendelő, akkor indítsa el az általam megírt programot, tehát olyan rutin kellene nekem, ami elindítása után felismeri, hogy nyitva van egy (másik) Excel-tábla és hogy annak mi a pontos neve.
Úgy oldottam meg a dolgot, hogy SZUMHATÖBB segítségével létrehoztam külön éves és külön havi összegeket tartalmazó táblázatokat és egy újabb tartományba kerülnek ezek az adatok attól függően, hogy a legördülő menüben mit választok ki, itt használtam az INDEX függvényt. Az OFSZET függvényt csak arra használtam, hogy a diagramom scrollozható legyen, szóval csúnya, de működik... :) Köszi!
Kihasználva, hogy SQLkerdes még nem szerezte meg a világuralmat (#14850-es hsz.), egy másik megoldást javaslok. Ebben egy függvénnyel megkapod az utolsó szót.
Szóköz nélküli szövegnél a teljes szót írja ki.
Function UtoSzo(szoveg As String) As String Dim sor% For sor% = Len(szoveg) To 1 Step -1 If Mid(szoveg$, sor%, 1) = " " Then UtoSzo = Right(szoveg, Len(szoveg) - sor%) Exit Function End If Next UtoSzo = szoveg End Function
' Returns the nth element from a string, ' using a specified separator character Dim x As Variant x = Split(str, sepChar) If n > 0 And n - 1 <= UBound(x) Then ExtractElement = x(n - 1) Else ExtractElement = "" End If End Function
Function WordCount(txt) As Long ' Returns the number of words in a string Dim x As Variant txt = Application.Trim(txt) x = Split(txt, " ") WordCount = UBound(x) + 1 End Function
A cella tartalmát felbontod betűkre egy MID tömbfüggvény alkalmazásával.
Minden betűre megvizsgálod, hogy az szóköz-e (IGEN=1, NEM=0), ezt az eredményt megszorzod az adott betű sorszámával és ezeknek a szorzatoknak a maximumát keresed egy MAX függvénnyel.
A kapott eredmény az utolsó szót megelőző szóköz pozíciója. Innen már csak egy sima RIGHT függvény.
Ha vannak a cellatartalom végén szóközök akkor az egész fenti cuccot nem a cella tartalmára, hanem a cella TRIM-melt tartalmára végzed el.
Hogyan lehet egy tetszőleges hosszúságú és db szóból álló cella utolsó szavát kiszedni?
Ha pl csak 3, esetleg 4-5 szóból álló celláról van szó, akkor a LEN, FIND, RIGHT segítségével ezt meg tudom oldani, ha tudom mennyi a maximális szó mennyiség.
De hogyan oldható ez meg ha nem tudom mennyi lehet a maximális szó a cellában?
Azt szereteném az exceltől kérni makróban, hogy egy megadott folderban lévő összes munkafüzetet nyisson ki, majd mindenek az első lapját másolja egy master fájlba.
De nem akar működni.
Hol rontottam el szerintetek?
Köszi a segítséget!!
--------
Sub MergeSheets()
Dim wbMaster As Workbook Dim NumbSht As Integer Dim BegSht As Integer
El kellene döntened, hogy a bemenő adatod az radián, vagy fok, amennyiben radián, akkor a képlet jó, amit kelan összefűzött, amennyiben fok, akkor a képletből töröld ki az összes "fok" szót!
Azt kell mondjam excelben ez sem halálos probléma.
Ha a worksheet-ek neve egységesítve van (pld 2011+PONT+SZÓKÖZ+HÓNAPTELJESNEVE), akkor még egy durva kinézetű OFFSET-tel is meg lehet csinálni.
Ha a worksheetek nevét nem lehet valamilyen logikai lánc alapján előállítani akkor meg ott van régi barátunk az UDF.
A 2011. január 5-e viszont valszeg szíven döfi a rendszert, mert ahogy látom az egy teljesen más file-ban van (mármint a 2010 decemberi adat). Bár... ;-)
Így néz ki a táblázat. Amint látjátok az első fülre egy összesítőt tettem, ami gyakorlatilag ugyanez a táblázat csak leegyszerűsítve, ebbe kellene az utolsó 20 nap eredménye. DE jogos a kérdés, mi van ha február 5-én szeretném megtudni... itt kezdődik a baj. A táblázatom egy évre van bontva ahogy a képen látszik, tehát pl febr 5-én január 15-ig kellene hogy visszaszámoljon, viszont a hónapok különböző hosszúságúak... pfff. :(
Szerintem ez nem jó, mert csak a hónap utolsó 20 napját összesíti.
A megoldásba be kell építeni a TODAY() függvényből vett adott napi napot és abból levonni 20-at (ha több mint 20, egyébként 1-től kezdeni az összesítést).
A megoldás az OFFSET függvény használata, amit úgy paraméterezel be, hogy egy dinamikusan változó tartományt adjon vissza. Az OFFSET-tel "létrehozott" tartományt elnevezed (named range) és a Chartod bemeneti adata ez a Név lesz.
Vigyázz, van egy trükk (bug) amikor a chart bemeneti adatának név hivatkozást használsz, szépen megmutatja a videóban (kell a név elé a munkalap neve).
Sok sikert. Ha van kérdésed a videó után, vágd hozzánk nyugodtan.
Sziasztok, már megint butaságokkal bombázlak benneteket.
Van egy táblázatom, amiben van egy aktuális hónap. ABCD oszlopokban van egy-egy termék neve, a sorok pedig a hónap napjait jelentik. A termékek nevei alá függőlegesen beírjuk a darabszámokat, amiket a végén szummáz. Így tudjuk, hogy miből mennyit adtunk ki, ez egyfajta teljesítményelszámolás is. Amit szeretnék megvalósítani, hogy egy másik munkafüzetben ugyanilyen alapon, de csak az elmúlt 20 nap számait adja össze egy cellában az aktuális dátumhoz képest. Tehát ha január 30-at írunk, akkor csak január 10-től szummázzon.
Sziasztok! Szereték készíteni egy olyan grafikont, amely az adatokat egy legördülő menüből kiválaszott Nap/Hónap/Év paraméter szerint összegezve jeleníti meg, vagyis van egy csomó adatom és a grafikonban a kiválaszott intervallumra vonatkozó összegeket szeretném látni. Gondolom, hogy létre kell hoznom ehhez egy segédtáblázatot, ami a paraméter szerint változik és ebből kell grafikont készítenem, de a lényegre nem tudok rájönni, hogy hogy lehetne egy cellát rábírni arra, hogy változó méretű tartományt összegezzen. Az adatok dátumokhoz tartozó számok vagyesen, egyik hónapban több az adat, másik hónapban kevesebb... Van esetleg ilyen sheet-etek, amit tovább fejleszthetek? Előre is köszönöm, ha tudtok segíteni! :)
Demokráciában élünk, ami magában foglalja a szövegként tárolt számok vagy képletek újrakiértékelési módszerének szabad kiválasztását.
Persze ha sikerül a tervem és megszerzem a világuralmat, akkor eltörlöm ezt a nagy szabadosságot és csak Text 2 Columns-szal lehet majd konvertálni... Addig úgy csinálok mintha tolerálnám ezt a nagy szabadosságot.
Ha megnézitek az eredeti kérdéshez csatolt képet, ott is ez történt a dokumentnumber adattal. Mondjuk ott mázli, hogy egybefüggő az érintett tartomány és az Excel auto-correct-ben elsikálja a gondot, ha a zöld kis háromszögre kattan a júzer.
Ahol lehet a másolás-lehúzást csinálni ott az egyszerűbb, egyértelmű.
Én soxor dolgozom adatbázis extract-okból, ahol van, hogy "rendes" számok szövegként jönnek át, ott nincs esélye a lehúzásnak, mert nem képlet van amit másolni lehetne, hanem natúr alapadat.
Lehet azt csinálni, hogy Text to Columns (Data/Adat fül) az adott területre. Itt olyan delimitert kell kiválasztani ami NINCS az adott cellákban. A Text to Columns "lefut", nem talál delimitert és úgy hagyja a cella tartalmát ahogy van (vagyis nem szedi szét két vagy több oszlopra) DE újra kiértékeli a kapott új cellák (amik igazából a régi cellák) értékét és ekkor voila, kiszámolja a függvény értékét.
Szövegformátumra van állítva az oszlop, állítsd vissza általánosra.
Ha ettől nem javul meg azonnal (nem fog), akkor nyomd meg az F9-et. Ha ez sem segít, akkor egyenként bele kell lépni a cellákba, és entert nyomni. (_Miután_ a formátumot visszaállítottad.)
Van egy olyan gondom, hogy az egyik oszlopban nem működik a függvény, csak kiírja a képletet, a másik oszlopban pedig rendesen működik, pedig teljesen egyforma a két oszlop formátuma (ha minden igaz). Van valakinek valami ötlete arra, hogy mi lehet a gond?
Az alt+tab gombokkal nem tudok váltani a megnyitott lapok között. Van valami megoldás? Mert a ctrl+tab nem az utoljára használt lapra ugrik, hanem folyamatosan előre ugrik...
ha megvan az üres pivot, akkor egérrel bele lehet húzkodni a mezőlistából megfelelő mezőket a szükséges helyekre. (2007-2010-ben ezt külön be kell állítania kimutatás beállításainál (klasszikus kimutatás nézet, vagymi)
A 2007-es verzió varázslójában 1 lépés van. A táblázatban állva a tartományt jelölheted ki, vagy külső adatforrást választhatsz, és a kimutatás helyét határozhatod meg. Ezzel létrehoztál egy üres kimutatást. Ha ezen a területen állsz, egy elrendezési segédlet jelenik meg a lap jobb oldalán, ami az általad beillesztett képnek az újabb változata. A kimutatási terület mellé kattintva eltűnik.
Robbantomester, igazad van, egyszerűbb az MROUND függvény.
Sziasztok! Az Excel 2003-ban a Pivot tábla elrendezését a mellékelt képen látható ablakbanl is be lehetett állítani. Benne van ez az Excel 2007-ben? Köszönöm!
Van egy olyan problemam excelben, hogy matematikai kerekitest szeretnenk vegezni egesz szamokon olyan forman, hogy mindig a legkozelebbi 5-os ertekhez kozelitsen a vegeredmeny.
pl. 3456-bol legyen 3455, de 3458-bol 3460 legyen.
A kerekites fuggvenyt vegigprobaltuk, de az csak folfele kerekit (3456 -> 3460)
Van erre fuggveny megoldas, vagy marad a manualis modszer?
Nem akarok erre sok időt vesztegetni, nem jellemző, hogy a két verziót egyidejűleg használom. Csupán mint érdekességet említettem meg, mert valakinek látszólag hasonló problémája akadt.
Abban biztosan igazad van, hogy két külön programként kezeli a rendszer – mivel valóban kettő.
Az egész úgy jött elő, hogy 2003-asban kezdtem beadni az adatokat, mikor észrevettem, hogy nem azt kérték, és lustaságból át akartam másolni az addig beírt adatokat és képleteket. :)
Az okosok biztos jobban tudják nálam, és érthetőbben tudják leírni, de rémlik valami, hogy két különálló Excelt külön kezel a rendszer. Akkor is ha ugyan az a verzió van elindítva egymás után. Ebben az esetben nem az Excel saját vágólapján keresztül másol, hanem az op rendszeren keresztül.
Most ki is próbáltam és a saját 2007-es példányomat kétszer indítottam el. Nem tudok másolni a kettő között. Illetve a másolás csak az általad is leírt korlátokkal lehetséges.
Ebbe itt nálunk nagyon sokan belefutnak, hogy valamilyen fájlkezelő programból nyitják meg az egyes táblákat, így azok külön-külön programban indulnak el. Ezért sem használom az Excelnek a "Az összes ablak megjelenítése a tálcán" beállítását. Így minden tábla egy programban van. A tálcán csak egy ikon látszik. Így ha mégis megjelenik több ikon a tálcán, akkor látom, hogy külön programban futnak a tábláim és azonnal megteszem a "szükséges intézkedéseket".
Nem. Egy kis táblázat, 2 oszlop és néhány sor szám, a harmadik oszlopban egy összeadás, semmi szűrés.
Csupán lusta voltam megint beírni a 2007-be a számokat.
Azóta kiváncsiságból megpróbáltam azt is, hogy másolom a 3 oszlopot a 2003-as verzióban, átlépek a 2007-be, és oda irányítottan próbálom beilleszteni. Ezt az ablakot kapom:
Én 2007-ben általában azt tapasztaltam, hogy ha szűrve van a táblázat és ekkor másolok, akkor a beillesztés csak értékkel történik és képletet csak az irányított beillesztés->képlettel tudok másolni. Lehet nálad is ez volt.
Na de Delila pont ezt csinálta. Nézd meg az A oszlopot, ott van a "van" vs "nincs" (ie, hogy van-e olyan ahol 90%-os adat van bármelyik oszlopban, az adott sorban).
Köszönöm az eddigi segítségeket, hasznosnak bizonyult ez az "automatizált jó pofa" alkalmazás.
Már csak olyan kiegészítésre lenne szükségem, hogy a számított érték mögé szeretnék besuvasztani fix karaktert is (% jelet). Eddig a tőle jobbra levő cellába helyeztem el. Ezekből kifolyólag két kérdés merül fel:
képlet mögött lehetséges-e alkalmazni más karaktert is, vagy
"feltételes formázás"-sal kezelt cella szomszédos celláira is ki lehet-e vetíteni ugyanazt a "formázást" (pl.: C2 cellát "formáztam", s a D2-n is ugyanazt a változást szeretném elérni, de a tartalma beírt szöveg, ergo a számítás alapú "formázás" kilőve).
A 60 db termék neve tartalmaz szóközöket és számokat? Ez csak akkor baj, ha a nevek kezdő karaktere számjegy, mert ilyen névadást nem szenvedhet az Excel. Az elnevezés többi helyén már szerepelhet szám.
Mivel a szóközöket is utálja, azok helyett a HELYETTE (SUBSTITUTE) függvénnyel berakhatsz egy bal Alt+0255 (˙) karaktert, ami egy alig látható kis felső helyzetű pont. Ezt már lehet alkalmazni a névadásnál.
Ha számjeggyel kezdődnek a terméknevek, azok elejére is biggyeszthet egy ilyen miniatűr pontot.
B1-> =HELYETTE(A1;" ";"˙"), C1-> ="˙" & B1
Egyszer kell vele vesződni, utána már felgyorsítja a munkát.
Xooo, nem fogok neked hazudni: nem látom a különbséget.
Ha jól értem a problémádat, van az A worksheet-eden kb 60 terméknév, mindegyik terméknévhez tartozik 5 db kód.
Amit el szeretnél érni az az, hogy a B worksheeten, az A oszlopban egy legördülő menüben kiválasztasz egyet a fenti 60 terméknév közül, majd a B oszlopban - szintén legördülőmenüben - kiválasztod a megfelelő kódot. Értelemszerűen azt szeretnéd, hogy ha az ABCDE terméket választottad az A oszlopban (mondjuk A1) akkor a B1 cella legördülőjében már csak az ABCDE termékhez tartozó 5 db kód jelenjen meg és csak azok közül lehessen választani.
A lenti technikák pontosan ezt csinálják, a szóközök miatt lehet egy kis csavar a dologban, hogy a szóközöket ki kell gyomlálni a terméknevekből, amikor Named Range-ként használod a terméknevet. =SUBSTITUTE(A1," ","_")
Vagy teljesen félreértem a problémát és akkor lécci írd le hol és mit értek félre.
Hello. Köszi, de ez nekem nem jó szerintem, mert itt az elv az hogy ha étel a főmenü akkor -alma -banán - körte almenüket lehet kiválasztani.
Nekem viszont van kb 60 db termékem, az első munkalapon, mindegyikhez tartozik 1-8 munkaszám ( 5 jegyű kódok ) amiket frissítünk. Ezért nekem listához kellene listát rendelnem.
Tehát ha a 60 db termékből a1 oszlopban kiválasztok egyet a listáról, akkor b1-ben a csak ehhez tartozó lista kellene hogy előjöjjön, ami csak ahhoz az egy termékhez rendelt kódokat tartalmazza, amit külön megcsináltam és elneveztem. Tehát kb mint a HA függyvény. Ha A1=X, akkor B1=Y, csak nekem listákkal. Ezért nem jó a megoldás amit javasoltál sajnos, de azért nagyon köszönöm. :)
A termékem neve tele van szóközzel számmal stb, tehát olyan nevű listát nem tudok készíteni...
Sziasztok ! A következő dologban kérném a segítségeteket.
Adott A és B munkafüzet. Az egyikben adatok vannak, amikből a másikban legördülő listákat csináltam, hogy a felhasználó ki tudja választani ami neki kell.
Az első kérdésem az, hogy hogyan lehet ( ha lehet ) a legördülő lista szövegét " highlightolni " :D Szóval a cella amibe bele kellene hogy férjen a szöveg kisebb mint a forrás, ezért nem látszik a szöveg végig amikor kiválasztom. ( sortöréssel csináltam meg, szóval amikor beillesztio már jó, akkor 2 sorban van, amikor kiválasztja pedig 1 sorban, tehát nem látszik a szöveg vége )
A második pedig az, hogy legördülő listát tudok-e előszedni HA fügyvénnyel.
Példa: A munkalapon XYCVB szöveghez tartozik 123 456 789 kód.
A másik munkalapon ha kiválasztom XYCVB szöveget, akkor csak 123 456 789-es kódokat kellene hogy felkínálja, ami az A munkalapon az XYCVB szöveggel egy sorban van.
Nektek szerintem nem nagy kaland, nekem kihívás :D
Sub Szín_lekérdezés() If Selection.Font.ColorIndex = -4105 Then MsgBox "A karakter színkódja: " & " fekete (automatikus, -4105)" Else MsgBox "A karakter színkódja: " & Selection.Font.ColorIndex & " " End If If Selection.Interior.ColorIndex = xlNone Then '-4142 MsgBox "A cella hátterének színkódja: " & " átlátszó, -4142" Else MsgBox "A cella hátterének színkódja: " & Selection.Interior.ColorIndex & " " End If End Sub
A kiszínezett cellán indítva megadja a háttér, és a karakterszín kódját.
Fejből nem mondok neked kódokat, de nyisd ki a cellaformázásban a szám fülön az egyedi formátumot, és nézelődj. A negatív számok pirosítására kész megoldás van benne, ha ez elég egyedi szín.
Anélkül, hogy végigpróbálgatnám a teljes színpalettát, honnan tudhatnám meg, hogy melyik "szín szám" milyen színt takar valójában? Negatív számokat más, de egyedi színnel szeretnék megjeleníttetni, a számformátum ekkor pl: 0,00_ ;[Szín5]-0,00
Van egy olyan problémám, hogy van egy 9000 sorból álló excel táblám, aminek a celláiban sok tizedesjeggyel bíró számok vannak. pl.: 0,00800000037997961
De nekem ebből csak a tizedes vessző után 3 számjegyre van szükség. Van olyan képlet ami levágja a maradék számjegyekt? A celleformázás csak takarja, de amikor összefűzöm a cellákat valamivel akkor kiadja a teljes számsort.
Hogy lehetne lecsonkolni 3 tizedesjegyik a cellák tartalmát?
Nekem is összejött végülis, bocsánatot kérek, hogy szemetelek a hozzászólásommal, csak néha el tudok akadni és végső kétségbeesésemben írok ide Nektek. :)
Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Cancel = True If Target.Column = 1 And Target.Row = 1 And Target.Value = "TRUE" Then Target.Value = "FALSE" Exit Sub End If If Target.Column = 1 And Target.Row = 1 And Target.Value = "FALSE" Then Target.Value = "TRUE" End If
Hogy a többi cellánál éljen a jobb klikkes menü, akkor ez a tuti:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) If Not Intersect(Target, Range("A1:A2")) Is Nothing Then If Target.Value = "False" Then Target.Value = "True" Else Target.Value = "False" End If Cancel = True End If End Sub
Az aktuális munkalap objektumába (VBE) másold be ezt a kódot:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) If Not Intersect(Target, Range("A1:A1")) Is Nothing Then If Target.Value = "False" Then Target.Value = "True" Else Target.Value = "False" End If End If Cancel = True End Sub
Ez a kód az aktuális munkalap A1-es cellára jobb klikk-kel való kattintáskor fut le, és írja be az Igaz, vagy Hamis értéket!
Tudnátok olyanban segíteni nekem, hogy egy meghatározott cellára jobb egér gombbal kattitva a cella tartalma az előző érték ellentettjére vált? Tehát egy TRUE/FALSE kapcsolót szeretnék létrehozni. :) Köszönöm!
Olyan problémába ütköztem, hogy ha bekérek egy tartományt, ami például "Munka1!A1:A5", akkor melyik változó tárolja azt, hogy Munka1, azaz a munkalap nevét amire hivatkozok.
Van egy ilyen sorom: Sheets("Munka1").cells(MyRange.Row, MyRange.Column)
A Munka1 helyére kellene az a változó ami visszaadja a munkalap nevét!
A válaszom nem erre a speciális esetre vonatkozik, de én is meglepődtem tegnap.
Egy 2003-as füzetből akartam értékeket és képleteket másolni 2007-be. Mindegy, hogy Ctrl+c, Ctrl+v módszerrel, vagy áthúzással tettem, a képletek helyére értékek kerültek. :(
Volt egy excel templatem, ahol az egyik sheet offset és match segítégével olvasott ki a kellő helyekről.
SOK SOK FÜGGVÉNY :-).
Na most az történt, hogy ezek a függvények átalakultak value-vá én meg azon gondolkodom ez hogyan történhetett.
Csak pár embernek van hozzáférése a fájlhoz és annyira specikifusan vannak ezek a függvények a fájban, hoyg egyszerűen nem tudom elképzelni hogyan tudta volna valaki felülírni valuval...
Szerintetek létezik, hogy valami oknál fogva egyszerűen törlődik az offset és értékké átíródik?
A Start menü/Programok/Kellékek/Rendszereszközök/Karaktertábla prodgramban találsz indexben lévő számokat, pl. a Verdana betűtípusnál. Ezeket másold, és az Excelben a cellaformázásnál Ctrl-v-vel beillesztheted az Egyéni kategóriában.
SQLkerdes elég korrekt választ adott erre, de ha végképp nem akarsz egy adatbáziskezelőt, akkor meghatározhatod, hogy max. hány színkód lehet egymás mellett, vagy max. hány termékkód, és lehet több hasonló funkciójú oszlopd (amitől persze a képletek akár a visszataszítóságig is elbonyolódhatnak).
Ha viszont nem akarsz adatbázist, és véges sok színed van, akkor minek a színkódok?
"Ebben az esetben milyen szint rendeljen az almához, illetve milyen terméket rendeljen a sárga színhez?" -- Almából van piros és sárga is. Sárga színű lehet az alma és a banán is.
Több-több kapcsolatot kéne valahogy megjelenítenem. A probléma a megoldási javaslatoddal, mármit azzal hogy egy sheet legyen és hogy egy sor csak egy színt és egy terméket tartalmazzon azért nem jó nekem, mert a színek és termékek valójában nagyon hosszú szövegek, melyekből egyik másik akár több tízhez is kapcsolódhat a másik sheetről (hogy érthetőbb legyen, high level requirementeket szeretnék use case-ekhez párosítani, és ezt a párosítást látni visszafelé is).
Amit ki szeretnék hozni, vhogy így nézne ki az előző egyszerű példánál maradva:
sheet1
1 alma 2,3
2 körte 1,3
3 banán 4
4 dinnye 1,2,3
sheet 2
1 piros 2,4
2 zöld 1,4
3 sárga 1,2,4
4 kék 3
"Miért van szükséged, az első munkalapra, ha ott csak az szerepel, amit a másodikon már felsoroltál?" -- az első munkalapra azért van szükségem, hogy a hosszú szövegeket ott külön tárolhassam, és a másik munkalapon már csak az id-ra kelljen hivatkoznom.
Remélem, régebbi verziót alkalmazol, mint a 2007-es, mert annál nem találom a beállítást.
A 2003-nál az Eszközök/Beállítások/Megjelenítés fülön az Objektumoknál a "Helyük látszik" van nálad bejelölve. "Az összes megjelenítése" beállítással mindig látható lesz a diagramod.
Én úgy látom ez egy klasszikus normalizációs probléma.
A több a többhöz kapcsolatok tipikus adatbázis-terület és ez valszeg azt jelenti, hogy a kérdező problémáját nem excelben (táblázatok), hanem pld. Access-ben (relációs adattáblák) kellene kezelni.
Az adatbáziskezelésben a több a többhöz kapcsolatokat egyébként egy ún. segédtáblával szokták megoldani, ami a több/több összes releváns verzióját felsorolja. Ez itt nem tűnik járható útnak.
Nem biztos, hogy pontosan értem mit szeretnél, de szerény véleményem szerint nem is fog működni.
Több elem tartozhat több elemhez. Az Excel nem fogja kitalálni, hogy mikor mit szeretnél hozzárendelni az egyes elemekhez. Például: alma, sárga alma, piros banán, zöld banán, sárga Ebben az esetben milyen szint rendeljen az almához, illetve milyen terméket rendeljen a sárga színhez?
Inkább azt írd le hogy mit és milyen célra szeretnél használni, akkor lehet tudok (tudunk) valamilyen jobb vagy más megoldást mondani. Egy tippem így látatlanban is van. A fenti példához hasonlóan felsorolod a listádat sorokban és oszlopokban. Egy sor csak egy terméket és egy színt tartalmaz. Aztán ebből már több féle módszerrel nyerhetsz ki adatot. Az egyszerűbb módszerek például a kimutatás és a helyi illetve irányított szűrések. Bonyolultabbak lehetnek összetettebb képletek, vagy végső soron makró. Miért van szükséged, az első munkalapra, ha ott csak az szerepel, amit a másodikon már felsoroltál?
Ha egy színhez több termék is tartozhat, egy termékhez több szín is tartozhat, azt hogyan kezeljem? A vesszővel elválasztás nem tűnik működő képesnek, ahol több terméket írok be egy színhez, ott már nem találja meg.
segítséget szeretnék kérni egy excelben megoldandó feladathoz.
Két sheet van, az elsőn ezek az oszlopok: Termék_ID, Terméknév, Szín_ID
Második shett oszlopai: Szín_ID, Szín, Termék_ID
A második sheeten manuálisan beírogatom, hogy melyik színhez melyik termék_id tartozik (egy színhez több termék is tartozhat, egy termékhez több szín is tartozhat).
Hogyan tudom feltölteni az első sheet harmadik oszlopát a második sheet megfelelő Szín_ID értékeivel? És hogyan célszerű a színeknél a termék_id-t beírni, ha több is tartozik hozzá? Vesszővel elválasztva?
Viszont nekem az rémlik, hogy a shell parancsoknál valamilyen módon figyelni kell (illik), hogy már végrehajtódott-e az utasítás mielött a programod tovább fut a következő sorral. De ennek módját most nem tudom.
Megnéztem a tábládat, de én is befürödtem vele. Te az mkdir-t használtad. Utánaolvasgattam és ez tényleg nem képes többszintű könyvtárstruktúra létrehozására. Ez engem is meglepett, mikor a DOS-ban kiadott md meg képes rá. (Mint korábban írtam ez is meglepett.) Ez a meglepetések napja :o) Gondoltam ha DOS-ban lehet akkor lehet VBA-ban is, de nem próbáltam ki. :o(
Programozásban még nagyon sokat kell tanulnom, de megpróbáltam utánanézni.
Egy megoldás lehet a DOS-os md parancs meghívása, de ezzel nem kísérleteztem
Én is barkácsoltam egy megoldást. (A per jeleket +-ra cseréltem, ezt majd cseréld vissza.)
Az eredeti programodat:
folder = Worksheets("Bevisz").Cells(16, 1) Set fso = CreateObject("Scripting.FileSystemObject") If Not fso.FolderExists(folder) Then MsgBox folder & " elérési út nem létezik", vbInformation, "Nem létező mappa" hely = Worksheets("Bevisz").Cells(16, 1) MkDir (hely) Else MsgBox folder & " elérési út létezik", vbInformation, "" End If
Így módosítottam:
folder = Worksheets("Bevisz").Cells(16, 1) If Len(Dir(folder, vbDirectory)) = 0 Then konyvtarak = Split(folder, "+") If UBound(konyvtarak) > 1 Then utvonal = konyvtarak(0) For i = 1 To UBound(konyvtarak) utvonal = utvonal & "+" & konyvtarak(i) If Len(Dir(utvonal, vbDirectory)) = 0 Then MkDir utvonal End If Next i End If End If
Tegnap este próbálkoztam, de sajnos nem sikerült egy mappánál többet létrehozzak egyszerre, egyesével ment. Azt azért nem írom ide, mert E.István azt írta, hogy tud több mappát létrehozni egy lépésben, az Ő ajánlatát kellene használni.
Én ha az MkDir parancshoz beírom a többszintű elérési utat, akkor "Path not found" hibaüzenettel megáll.
Sajnálom, hogy nem tudtam segíteni, ha a több lépcső megoldás jó, akkor szól, azt el tudom küldeni!
Könyvtárműveletes makrót az egyszerű beolvasáson kívül még nem készítettem. Így látatlanban csak tippelni tudok. Szerintem az lehet a gond, hogy egyszerre akarod létrehozni a könyvtárakat. Valószínűleg a beírt elérési útvonalat a makrónak szét kellene szedni darabjaira és egyesével létrehozni a főkönyvtárat, majd abba belépve az alkönyvtárat és így tovább. Nem hiszem hogy létezne olyan művelet amellyel egyszerre lehetne létrehozni többszintű könyvtárstruktúrát.
Formátum menü, feltételes formázás, ott most ez van: =B2<>SZUM(C2:AC2)
Ha írsz egy másik feltételt ami a szorozza a szum-ot valamilyen értékkel (mondjuk a 75%,nál akarsz színt váltani, akkor 0,75-el), és beállítod a színét.
A következő problémában kérném a segítségeteket: Adva van egy kész makró, ami menteni tud adatokat a:-Worksheets("Bevisz").Cells(20, 1)- helyre. Ha nincs ez megcsinálva előre akkor viszont semmi sem történik, megpróbáltam vizsgáltatni és létrehozatni a könyvtárat,de max egy mélységig hajlandó, pl:- D:ment- de a - D:mentmentés1- már nem jön létre, sőt ez esetben az első sem. Remélem érthető.
Erről a linkről le tudod tölteni! (Remélem működik a link)
Megcsináltam az összes tételre!
Annyi a változtatás, hogy a "B" oszlopból kitöröltem a képletet, oda kell beírnod a szállítandó mennyiséget, ha nincs annyi a raktárakban, akkor piros lesz a háttere!
A problémám a következő, két időértéket szeretnék kivonni egymásból, a cellaformátumok: [ó]" h" pp "p"
Ha a különbség negatív, akkor ############ jelenik meg eredményként, nyilván az Excel nem tud mit kezdeni a negatív idő fogalmával, de én szeretném, hogy ez jelenjen meg. Nem tudok rájönni a megoldásra... Tudtok segíteni?
Így érthetőbb lesz. :) Ez egy szállítmányozási terv, aminek a felső sorának egy blokkja ezt tartalmazza pl: 400 co 11630. Vagyis hány db termék melyik raktárban milyen munkaszámon van. Az oszlop ( csak 3 kiszállítás terve van meg mindig, tehát 3 dátumot tartalmaz egy blokk )
Jelenleg manuálisan számolgatom, hogy ha pl 1200 terméket kell kiszállítanom ápr 30-án, akkor ahhoz szedjen össze az első raktárból 400-at ( mert ott annyi van ) a másodikból pedig 800-at pl. Ez egyszerű, van amikor 4-5 helyről kell összeszednem és számolgatnom a maradékot a következőhöz.
Van erre szerintetek valami épkézláb megoldás, hogy ha beírom az összesen-be hogy 1320, akkor ez sorban ( a raktárak sorban vannak ) szedje össze a megfelelő mennyiségű terméket?
Példa: 300 co 11447 380 a 11447 250 co 77455
Össz: 500
Ehhez az első raktárból 300-at vesz el, a másodikból pedig 200-at, de abban maradt 180.
Excel programon belül kínlódok már egy jó ideje. Még valamikor jócskán a múltban sikerült olyasvalamit véletlenül elkövetnem, hogy akármennyire görgettem le a "Munkafüzet"-en, néhány kijelölt sor mindig látszódott a lap tetején. Ezt milyen paranccsal lehet elérni? (2003 Office-om van.) Segítséget előre is köszönöm! Üdv:
Adott egy excel file, amiben van VB kód, command button stb.
A file 2006-ban készült: tulajdonságok->Részletek->tartalom létrehozása.
Ezt a tartalom létrehozása időt hogyan tudom átállítani, mondjuk a mai napra??? Póbáltam, hogy kimásoltam mindent és beillesztettem egy új file-ba, de a dátum maradt 2006
A file mentés máskét és eredeti felülírásánál is maradt a dátum
sziasztok Excel-guruk, egy aprócska (és talán láma) kérdésem lenne:
azt hogyan lehet/kell megcsinálni, hogy az Excelben függvény alkalmazásával a cellákba az aktuális értékeket írja be: év, hónap, nap (mármint, hogy 2011, 04, és 27 legyen az addig üres 3 cellában)?
"'szükséges referencia a "Microsoft Scripting Runtime"-hoz. VBA-ban Tools - References alatt"
VBE nem VBA, de nem véletlenül írtam oda megjegyzésnek. :)
Szóval a Visual Basic Editorban a menüben kiválasztod a Tools-t majd a References-t és bepipálod a "Microsoft Scripting Runtime"-ot. De úgy is működnie kellene amit Jimmy írt.
Például. Én szeretek csak annyi sort kimásolni az alapfájlból amennyiben értékes adat van (vizsgáljuk például azt hogy mi az utolsó sor), ez itt lent annyiban egyszerűbb hogy mindenképpen 200 sornyi adatot másol. Az "első munkalap" nem mindig az első munkalap ezért érdemes lenne inkább névre hivatkozni.
Sub CrDb()
Dim FSO As Scripting.FileSystemObject, folder As Scripting.folder, file As Scripting.file, wb As Workbook
'szükséges referencia a "Microsoft Scripting Runtime"-hoz. VBA-ban Tools - References alatt
Ha jól értem a szöveget, akkor ez sok munkalapot csinál egy munkafüzetbe.
Nálam az a helyzet, hogy eltettem a MUNKA könyvtárba 250 db excel fájlt, p001 - p250 néven.
Mindegyikből az első munkalapon lévő A-J oszlopok tartalmát kell kimásolni a MIND.xls fájl első munkalpjára, egymás alá.
Végignéztem őket, a leghosszabb sincs 200 sor, tehát A1:J200 cellákat kell átmásolni, de a célterület az A1, A201, A401, stb. cellákkal kell kezdődnie.
A végeredmény a mind.xls első munkalapján a1 - j5000 táblázat, amit már tudok kezelni.
Üdv, látom, nagyon profik vannak itt vba szkriptek terén is, máris van reményem.;)
Az access listára irtam, azt a választ kaptam, hogy szkripttel oldható meg, de fogalmam sincs, milyen access szkriptet kellene irni, és csak sql-hez értek.;)
Viszont akkor a másik oldalról fognám meg a probléma gyökerét, és talán ebben tudtok segiteni.
Adott rengeteg excel fájl, heti pénztár forgalmi adatokkal, 10 oszlop, 110 sor.
Access-be át kell másolni őket, de access-be csak egyesével lehet, abba beleőszülök.
Az lenne a legegyszerűbb, ha az excel fájlokat - mindegyik egy munkalapos - egyetlen fájl egyetlen munkalapjára, egymás alá be lehetne másolni, azt már - pici kézimunkával - be tudnám importálni access-be.
VBA, Integers are 16-bit signed types, when you perform arithmetic on 2 integers the arithmetic is carried out in 16-bits. Since the result of multiplying these two numbers exceeds the value that can be represented with 16 bits you get an exception. The second example works because the first number is first converted to a 32-bit type and the arithmetic is then carried out using 32-bit numbers.
Az excel ezt native-an is tudja, nem kell hozzá makró. A megoldás az INDIRECT (magyar: INDIREKT) függvény, de hosszú lenne írásban elmagyarázni. Mindjárt keresek egy linket ahol már készen le van írva.
sziasztok, én az execelen belül szeretnék egy legördülő listát létrehozni, ami eddig nem jelent gondot. Viszont van egy "A" lista(a főfeladatokról) és B lista(ami egyes főfeladatokat bont részfeladatokra). ha egy listába raknám mindezt, nagyon hosszú lenne kiválasztani az illetőnek a megfelelő feladatot, ezért szeretnék (makróval?) hivatkozni: ha kiválasztom a főlistából az adott feladatot, a következő cellában a legördülő lista az előbbiekben kiválasztott főfeladathoz tartozó részfeladatai jelennének már csak meg, szűkítve az egész részlistát. első ránézésre makróra gondoltam, de abban meg nem igazán vagyok otthon... Esetleg ötlet a megoldásával kapcsolatban?KÖszi!
Hát én első nekifutásra egyszerűbb dologra használtam volna. (Lehet, hogy egyszerűbben is mehetett volna...? Ki tudja milyen függvényeket rejt a most telepített csomag.) Szóval egyszerűen többjegyű számokat kellene kiiratnom véletlenszerűen betűvel. Az egyes oszlopokba beírtam a megfelelő neveket, majd az összefűz paranccsal és a most telepített INDIREKT-tel generálom a számokat - egészeket és tizedes törteket. De jó lesz ez még sokmindenre.
Szívesen, nekem is jutott ezzel a feladattal egy kis szórakozás.
Gyerekkorunkban szólásokat, közmondásokat cetlikre írtunk fel úgy, hogy az első felét egyik-, a másodikat másik színű papírra. Aztán húztunk 1-1 papírt a két halomból, és összeolvastuk.
A vezeték, és keresztnevek helyett most beírtam pár mondást, ilyen eredményeket kaptam:
Ja és nagyon kezdő számára melyik könyből lehet sok szemléletes példán keresztül megtanulni a makrozást? Nem egyetemi könyvre inkább valami excel for Dummies-ra gondolok.
Sziasztok, csak felszínesen ismerem az excelt - így is sok örömöm van benne - , de most olyan problémám van, amit nem tudom meg lehet-e oldani vele.
Olyasmi feladatról van szó, mint anno BASIC-ben egy ON x=1,2,3,4... Do a,b,c,d... féle játék, konkrétan mondjuk egy oszlopban van egy csomó szöveg (vagy szám) és onnan kellene egyet kiolvasni akár egy vél() gererálta érték függvényében. PL. az A oszlopban szerepel 20 vezetéknév, a B-ben 20 keresztnév és 1-1 vél()szám által generált érték alapján írjon egy random nevet egy adott cellába. (Remélem érhető voltam) Volna segítség?
Mielőtt átmásolod az oszlopot, az eredeti (F) oszlop tartalmát alakítsd át =F$3+$A4 stílisra (minden sorban, kivéve természetesen az első adatot (16:00)).
Megcsináltam hogy az egyik oszlop a menetidőket számolva kijön az alábbi képlettel:
=F$3+A4
A oszlop F oszlop
Moszkva tér 16:00
0:02 Városmajor 16:02
0:05 Budagyöngye 16:05 stb
Viszont ha egy 16:15-ös indulást vennék fel akkor nem másolja oldalra a számokat mindig érték hibát kapok, mert valahogy a megállót akarja hozzárendelni az értékhez amit nem értelmez. Hogy tudom odébbvarázsolni valahogy hogy mindig az A oszlop értékével számoljon?
Nem változtattam semmit, csak az event-et Calculate-ra (-re?).
Közben rájöttem, hogy nem kell volatile függvény, mert a figyelendő terület egyébként is függvény, szóval minden frissítéskor újraszámolódik és izgatja a Calculate event-et.
Private Sub Worksheet_Calculate() Dim wsLog As Worksheet, rLog As Range Dim rQuery As Range, c As Range, Hit As Range
Set wsLog = Worksheets("Munka5") Set rQuery = Range("B1", Range("B" & Rows.Count).End(xlUp)) For Each c In rQuery Set rLog = wsLog.Range("B" & Rows.Count).End(xlUp).Offset(1) Set Hit = wsLog.Range("B:B").Find(what:=c.Value, after:=rLog, LookIn:=xlValues, lookat:=xlWhole, searchdirection:=xlPrevious) If Hit Is Nothing Then rLog.Offset(, -1).Resize(, 3).Value = c.Offset(, -1).Resize(, 3).Value rLog.Offset(, 2) = Now ElseIf Hit.Offset(, 1) <> c.Offset(, 1) Then rLog.Offset(, -1).Resize(, 3).Value = c.Offset(, -1).Resize(, 3).Value rLog.Offset(, 2) = Now End If Next End Sub
Egyszerűbb lenne, kivéve úgy, hogy az az L betű függvény eredménye. Mert akkor megint ott vagyunk, hogy mitől lesz automatikus. Az általad leírt viselkedés a SelectionChange eseményre hajaz. Biztos, hogy a kódot a weblekérdezést tartalmazó munkalap kódlapjára tetted be, és nem módosítottad? Merthogy működnie kellene...
Nincs kedved átküldeni a táblázatot email-ben?
válaszok:
-az "L" karakter sajnos logikai fügvény eredménye
-gőzöm sincs mitől lehetne automatikus.. nem tudom van e olyan parancs, ami a kódba írva arra adna utasítást, hogy az újrainduljon, újrafusson weblekérdezés esetén, vagy időzítve kétpercenként, vagy ilyesmi.
-Igen igen, a kódot a munka3 worksheetre tettem, amire az adatok befutnak. Ezért működik, ahogy működik.
-Módosítottam: a kódban egy értéket átneveztem (B1-ről B2-re), hogy a fejlécet ne loggolja, ez tuti irreleváns. :)
Ja, és ehhez mindig "xxx xxx" formátumban írd be, mert azt keresi először, aztán ha nincs ilyen fájl, akkor kiveszi belőle a szóközt, és újra keresi szóköz nélkül.
Private Sub Worksheet_Change(ByVal Target As Range) Dim FN As String, myPath As String, ext As String Dim wa As Object
If Target.Address <> "$A$1" Then Exit Sub myPath = "C:itt_vannak_a_fájlok_mappa" FN = Dir(myPath & "*" & Range("A1").Value & "*.*", vbNormal) If FN = "" Then
End If ext = Mid(FN, InStrRev(FN, ".")+1) If ext = "doc" Then Set wa = CreateObject("word.Application") wa.documents.Open myPath & FN wa.Visible = True ElseIf ext = "xls" Then Workbooks.Open myPath & FN End If End Sub
ha a file név elején van xxx xxx akkor megnyitja, így is xxx xxx és xxxxxx is. Ha a file név végén van pl abcdefg xxxxxx.doc és így írom be xxxxxx akkor megnyitja, ha xxx xxx akkor nem.
Jimmy kérlek segíts rajtam még egy apróságban :) Vannak olyan file-ok amelyek így néznek ki 940 084 box abcdefg.doc és vannak olyanok amelyek így: Box abcdefg 940084.doc, tehát a kódban van egy szóköz. Erre van megoldás, vagy az összes file-t nevezgessem át szóköz nélkülire ? Ugyanis amikor beírja a user a táblázatba a kódot, nem tudja hogy szóközzel van anélkül van-e mentve a doksi. Viszont a táblázatban szóközzel szokták írni, amikor kinyomtatják :D
Tehát lehet olyat csinálni, hogy ha szóközzel írja be a kódot a táblázatba xxx xxx akkor azokban is keressen amelyeknek ilyen a formátuma ? xxxxxx
Egyszerűbb lenne, kivéve úgy, hogy az az L betű függvény eredménye. Mert akkor megint ott vagyunk, hogy mitől lesz automatikus. Az általad leírt viselkedés a SelectionChange eseményre hajaz. Biztos, hogy a kódot a weblekérdezést tartalmazó munkalap kódlapjára tetted be, és nem módosítottad? Merthogy működnie kellene...
Private Sub Worksheet_Change(ByVal Target As Range) Dim wsLog As Worksheet, rLog As Range Dim rQuery As Range, c As Range, Hit As Range
Set wsLog = Worksheets("Munka5") Set rQuery = Range("B1", Range("B" & Rows.Count).End(xlUp)) For Each c In rQuery Set rLog = wsLog.Range("B" & Rows.Count).End(xlUp).Offset(1) Set Hit = wsLog.Range("B:B").Find(what:=c.Value, after:=rLog, LookIn:=xlValues, lookat:=xlWhole, searchdirection:=xlPrevious) If Hit Is Nothing Then rLog.Offset(, -1).Resize(, 3).Value = c.Offset(, -1).Resize(, 3).Value rLog.Offset(, 2) = Now ElseIf Hit.Offset(, 1) <> c.Offset(, 1) Then rLog.Offset(, -1).Resize(, 3).Value = c.Offset(, -1).Resize(, 3).Value rLog.Offset(, 2) = Now End If Next End Sub
MOST csak akkor loggol, ha "rákényszerítem", úgyértem, ha rámegyek a munka3-ra majd a munka5-re váltok, akkor azt az állapotot loggolja, de ha elmegyek a városba dolgomat intézni, és nem váltogatom a lapokat oda-vissza, akkor a munka3 ezen kódja "nem dolgozik" nem loggol automatikusan, csakis a váltásnál.(pedig a munkafüzet mindig aktív és online)
Jimmy The Hand: minden eddigitől elvonatkoztatva: nem lenne egyszerübb, ha az egész loggolásnak EGYETLEN feltétel szerint kellene történnie?? semmi összehasonlítgatás meg efféle. CSAK annyi, hogy a weblekérdezéses munka3 nevű lapon, ha a "D" oszlop valamely cellájában a kód találna egy "L" karaktert, akkor csak az adott sor A, B, C oszlopában szereplő értéket (számított értéket!) loggolja csak (idővel együtt).
mert én azt az "L" karaktert logikai fügvényekkel el tudom helyezni a "D" oszlopba.
Köszönöm :) A helyzet, hogy ez egy elég aljas excel tábla. Nyomtatási területet, vonalkód címkét készítő makró is van benne, ennek a végére tettem be egy 3-as modulba, csináltam egy TESZT nevű könyvtárat néhány doksival, de valamit elronthatok, mert nem nagyon akar működni. :(
Ötletem éppenséggel volt, de nem tudtam megvalósítani.
Szóval azt próbáltam, hogy makróval indítani az internet explorert, és elküldeni a megadott oldalra, aztán ott lekérdezni az oldalról egy adott objektum értékét. Az objektum nevét ugye az oldalforrásból lehet megállapítani. Hát itt elakadtam. Nem értek a javascripthez, de html-hez se nagyon, és nem tudom, hogy hogyan vannak ezek az értékek megjelenítve.
A nevüket sem találom. Olyat találtam, hogy
<span id="ertek_nyito"> </span>
meg
<span id="hozam_idoszak"> </span>
meg hasonlók, de az
Set object = ie.Document.getElementsByName("hozam_idoszak")
végrehajtása után az object tartalma a nagy semmi.
Én már nem dolgozom 2003 excelben, de amikor xl2007-ben compatibility mode-ban lementettem file-okat amikben volt COUNTA(H:H) akkor azt mondta, hogy az probléma lehet.
Ha legalább annyi teljesül, hogy minden fájl nevében benne van a kód, és minden fájl ugyanabban a mappában van, akkor már meg lehet spórolni a manuális felvitelt.
A1-re kihegyezve valami ilyesmi lehet:
Private Sub Worksheet_Change(ByVal Target As Range) Dim FN As String, myPath As String, ext As String Dim wa As Object
If Target.Address <> "$A$1" Then Exit Sub myPath = "C:\itt_vannak_a_fájlok_mappa\" FN = Dir(myPath & "*" & Range("A1").Value & "*.*", vbNormal) If FN = "" Then Exit Sub ext = Mid(FN, InStrRev(FN, ".")+1) If ext = "doc" Then Set wa = CreateObject("word.Application") wa.documents.Open myPath & FN wa.Visible = True ElseIf ext = "xls" Then Workbooks.Open myPath & FN End If End Sub
Köszi a választ ! Az az igazság, hogy egyöntetű algoritmust nem lehet ráhúzni a file-okra, hogy értsd, ezek szövetek amiknek van egy kódjuk, de a file neve sokszor ilyen: 935 445 szines bőr jobbos.doc vagy 887 445 szürke anyag.doc. Olyan megoldásra gondolotam mint a HA függvénynél, hogy ha 958 444 van a kódban, akkor nyissa meg a xycvb.doc-ot. Ezt nyilván manuálisan egyszer fel kellene vinnem, hogy melyik kód alapján mit nyisson meg.
egy hivatkozást szeretnék - függvénnyel - mellyel egy másik munkafüzet adott oszlopának mindenkori utolsó cellaértékét tudom beilleszteni úgy, hogy az értékek nincsenek sorba rendezve.
ha jól tudom akkor a "hol.van" és "cím" függvényekre van szükség....
Próbáld ki ezt. Feltételeztem, hogy a B oszlopban vannak az alma, cékla, banán, stb., szóval amivel beazonosítható a nemtudommi, továbbá a C oszlopban van nemtudomminek a nemtudommije, amit figyelni kell. Sajnos e tekintetben eléggé ellentmondásos információk jöttek eddig. Az alapötlet pedig az eddigiektől eltérően az, hogy a már naplózott banánok közül keresem ki az utolsó banánt, és ha ahhoz képest van eltérés, akkor naplózom megint. Így nem kell temp munkalap.
Private Sub Worksheet_Change(ByVal Target As Range) Dim wsLog As Worksheet, rLog As Range Dim rQuery As Range, c As Range, Hit As Range
Set wsLog = Worksheets("Munka5") Set rQuery = Range("B1", Range("B" & Rows.Count).End(xlUp)) For Each c In rQuery Set rLog = wsLog.Range("B" & Rows.Count).End(xlUp).Offset(1) Set Hit = wsLog.Range("B:B").Find(what:=c.Value, after:=rLog, LookIn:=xlValues, lookat:=xlWhole, searchdirection:=xlPrevious) If Hit Is Nothing Then rLog.Offset(, -1).Resize(, 3).Value = c.Offset(, -1).Resize(, 3).Value rLog.Offset(, 2) = Now ElseIf Hit.Offset(, 1) <> c.Offset(, 1) Then rLog.Offset(, -1).Resize(, 3).Value = c.Offset(, -1).Resize(, 3).Value rLog.Offset(, 2) = Now End If Next End Sub
weblapról szépen elérem a kérdéses oldalt, viszont vagy nem találom a kis nyilat mellyel kijelölhetem az adatokat, vagy az adatokat kijelölöm majd pedig importálom - viszont hiányosan jelennek meg a munkafüzetben. Körbenéztem a különböző fórumokon, de sajna sehol sem találtam megoldást. Elképzelhető hogy ezt a fajta dolgot nem tudja kezelni az excel...
árfolyamokra lenne szükségem, amit a táblázat megnyitása után azonnal tudok - mármint az értékeket - frissiteni.
A problémát igazából az jelentheti, hogy ugyanazon internetes oldalcimhez több megjeleníthető adathalmaz (flash?) tartozik.
biztos érthetetlenül fogalamztam, elnézést érte. Ha valaki találkozott hasonló szituval kérem adjon tanácsot.
a B oszlopban csak akkor van alma nevű elem, ha a weblekérdezés ad alma nevű elemet, amúgy nincs.
leegyszerűsítené a dolgot, ha mondjuk ÉN DIREKT egy feltételhez kötném, mit LOGGOLJON????
például ilyesmi: a munka3 worksheetben , ha az adott sor "C" oszlopban lenne egy "L" karakter, akkor loggolja a sor 3 értékét? (időkijelzéssel) a munka5-re.
Nem. Kicsit elbeszélünk egymás mellett, ha jól hallom :-)
A B oszlop sorai mindíg azonosak (pld. ha a weblekérdezés nem ad eredményt az alma nevű elemre, attól függetlenül a B oszlopban lesz alma nevű elem (és mindíg pld. a második) vagy a B oszlopban csak akkor lesz alma nevű elem, ha a weblekérdezés rész ad alma nevű elemet)?
A weblekérdezés sorrendjét értem, én a figyelendő (logolandó) tartomány sorrendjét kérdeztem (A oszlop és társai?). Az ottani tételek sorrendje fix vagy az is változik aszerint, hogy mi jön le a weblekérdezésben?
a weblekérdezés abc sorrendben jön.. ez kicsit gáz, mivel (alma banán cékla) esetében a cékla 3. helyen áll következő frissítéskor akár második helyen is állhat (alma cékla görögdinnye) ---a banán kiesik, a görögdinnye bejön
az új érték mindig az ABC szerint szúródik be a sorok közé, és a weblekérdezés üres tartománya pedig törlődik (a banán sora teljes egészében)... Az összehasonlító megoldásban ennek nem lenne túl nagy jelentősége, vagy mégis??
-hogy kell "kinyomni a figyelendő tartományt" egy temp worksheet-be? mármint hogy temp legyen.. valódi elözmény legyen.
-hogy kell összehasonlítani így a tempben lévő értékeket az újonnan beérkezett értékekkel
-és az eltéréseket hogyan kell kiiratnom a munka5-re. :)
hát ezeket nem tudom. :)
de ha már megvan..
-azután már tudom szűrni, listázni, formálni, alakítni, "függvényelni", hogy statisztika lehessenek belőle.
-az egész munkafüzetben szereplő cellák nem csak kizárólag a weblekérdezések értékeit illetve annak számított eredményeit tartalmazzák.
-érdemes lenne a munka3 worksheet-re kitalálni vmit, ne pedig workbook-ra, mert a többi munkafüzet is változik, és azoknak a változásíit nem szeretném loggolni.
Hát, akkor itt az a megoldás, hogy a figyelendő tartomány (NEM a weblekérdezéses területet) értékét ki kell nyomni egy átmeneti worksheet-re és minden weblekérdezés után ellenőrizni kell, hogy a figyelendő tartomány új értéke megegyezik-e az ideiglenes worksheet-en lévő adatokkal. Ha nem, akkor kell logolni.
Felteszem a figyelendő tartományban az adatok sorrendje nem változik (csak azért kérdem, mert most van amikor "alma, cékla, répa", máskor meg "banán, cékla, paradicsom".
köszönöm a code-ot, és egyet értek a tapasztalatoddal.
ez így müködik, de nem jól.
a weblekérdezés nem publikus. egy olyan táblázat, aminek az oszlopszámai változatlanok, a sorainak száma változik 0-30 között, most perpillanat 5 sor. Sohasem több mint 30 sor. Betettem az "F" cellára.
A KÓD-dal az a baj, maga a WEBLEKÉRDEZÉST gondolja változásnak, így ugyanarról ugyanarra, vagy semmiről semmire történő cellaváltozást is loggol.
Eredmény:, hogy a munka5-ön öt sorban van adat, aztán alatta 25 sorban nincs, aztán két perc múlva azalatt megint lesz öt sor, (ami ugyanaz az adat, mint a legelsö ötösnél)
A weblekérdezés kétpercenkénti, de ez csak a REALtime (hatás) figyelés miatt van, valódi változás az adatokban ritkán van ( óránként), tehát két percenként ne loggolja ugyanazt lehetöleg. :) itt SQLkerdesnek nek igaza van. az a baj, hogy nem történik valós változás. ha kétpercenként történne, akkor ez a kód lenne a legjobb a világon.
HOgy kellene megcsinálnom ezt a TEMP összehasonlítós megoldást?, nem akarom bonyolítani a dolgot, valami alapmegoldás is jó lenne, nem kell nekem tökéletes, viszont IDŐ-kijelzése fontos lenne.
!!Példa!! 3-4 értékkel csak hogy érthető legyen (sorry az adatok bizalmasak, ezért helyettesítem ezekkel):
Sziasztok ! Egy relatív egyszerű dologban szeretném a segítségeteket kérni. Van egy excel táblázatom, amit nyomtatok, rengeteg pédányban minden nap. A lényeg, hogy van 15 könyvtáram kb 300 file-al, amik összefüggésben vannak ezzel a táblázattal.
Az egyik cellába egy kódot írok, pl 935848, ez alapján megkeresem a könyvtárakban ugyanezt a word-ot, ecelt ( a neve nem teljesen ugyanez ) és azt is kinyomtatom módosított adatokkal. Hiperhivatkozással, if fügvénnyel vagy valahogyan meg lehet oldani, hogy ha pl A1=935848 akkor nyissa meg nekem automatikusan a C:X935848abcd.doc file-t ?
nem tudom milyen adatok kérdeznél le és honnan így, de egy olyan helyen ahol 2 percenként frissülő adatok vannak, szolgáltatják az oldalon belül azok logolását is. (pl. árfolyamadatok, tőzsdei kereskedelmi adatok stb...)
Teszteletem egy saját weblekérdezésseel, és azt tapasztaltam, hogy amikor a lekérdezés frissül, a Worksheet_Change eseményben a Target a teljes tartománnyal lesz egyenlő. Ha tehát pl. egy weblekérdezés normál esetben az A1:T110 tartományt foglalja el, frissítéskor Target = A1:T110 lesz. Mindez független attól, hogy ténylegesen van-e változás a webről lehívott értékekben.
Ez azonban szerintem teljesen konzekvens működés, mert a Worksheet_Change ugyanígy működik sima cellamódosításnál is. Ha ugyanis pl. A1-ben eredetileg 1 van, és rálépsz A1-re, lenyomod az 1-est és ENTER-t, akkor tulajdonképpen a cella értéke nem változott meg, hiszen előtte is, utána is 1 az értéke, a Worksheet_Change mégis lefut. Az értékek tényleges megváltozását úgy lehetne esetleg nyomon követni, hogy a teljes lekérdezés tartalmát (az értékeket) lementeni egy temp munkalapra, és frissítés után azzal hasonlítani össze az új értékeket.
JTH makrója csak abban az egy esetben nem működik (vagyis de pedig nem kéne) ha a weblekérdezés eredményeként a figyelendő cella mégsem változik. Ez akkor történhet, ha az alkalmazott függvények olyanok, hogy két változás kiolthatja egymás hatását. Erről pilótakeksz nem nyilatkozott.
Viszont azt gondolom, hogy mivel változás nem marad ki, csak olyan false pozitívok kerülnek be, amiknek nem kellene, a makró jó.
Meglehet, de amit JTH megadott makrót, azzal is működik (kipróbáltam, csak a range-t vettem le egy cellára és az időt annak megfelelően, ahogy azt az importálás frissítési gyakoriságában beállítottam). Nagyon jó a dolog, érdemes kipróbálni.
"A valós lekérdezés a F oszloptól kezdődik, de ez lényegtelen."
Attól tartok, nem lényegtelen. Ide szerintem a Worksheet_Change vagy Workbook_SheetChange esemény kell, és figyelni kell, hogy hol történik változás a munkalapon. A képlet újraszámolása nem jelent változást, szóval az A2:C31 tartományt hiába figyeli a program. Amennyiben a lekérdezésben benne van az F2 cella, szerintem az alábbi kód jó lesz. A ThisWorkbook kódlapjára másold be.
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Dim r As Range If (Sh.Name = "Munka3") And Not Intersect(Target, Sh.Range("F2")) Is Nothing Then Set r = Worksheets("Munka5").Range("A" & Rows.Count).End(xlUp).Offset(1) r.Resize(30) = Now Sh.Range("A2:C31").Copy
r.Offset(, 1).PasteSpecial xlPasteValues End If End Sub
valamit elcseszek : ne haragudj! Pontosítok amennyira csak tudok: legelőször pontatlan voltam.
-->munka3 a2:c31 - re érkezik a weblekérdezés, illetve a weblekérdezés által lehívott táblázat azon része, ami fügvények segítségével A B C oszlopokba lett szűrve a számomra hasznos tartalmuk. A valós lekérdezés a F oszloptól kezdődik, de ez lényegtelen. A lényeges infó az A B C oszlop. (amiben a sorok összetartoznak) és nem 10 sor hanem a legfelső változatlan címsor alatt 30 változó tartalmú sor áll. Tehát a címsort nem kell loggolni.
-->munka5 a2:..... -re szeretném a loggolást végrehajtani! (több ezer soron keresztül is loggolhat)
a munka5-re megyek, view code, és beleírom azt, amit írtál a Worksheet-be:
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim LogRow As Integer If Target.Row < 32 And Target.Column < 4 Then
' az A2:C31 tartomány változott
LogRow = Sheet5.UsedRange.Rows.Count + 1
Sheet5.Cells(LogRow, 1).Value = Time
Sheet5.Cells(LogRow, 2).Value = Target.Address
Sheet5.Cells(LogRow, 3).Value = Target.Value
End If
End Sub
a Kódban mi mutat a munka3-ra? és rendben van ez így? mert nekem nem működik, azt írja ki, hogy "Can't execute Code in break Code."
Segítségedet előre is és utólag is köszönöm.
És bocs, ha az arcodat kaparod, amiért értetlenkedem. ÜDV!
A kihúzott részek egy korábbi koncepcióból maradtak bent, hagyd ki őket.
A Sheet1, Sheet2 a munkalapok kódnevére vonatkozik, értelemszerűen cserélni kell őket ha az adataid más füleken vannak.
Más: ha a weblekérdezést makro csinálja, akkor ezt abba is bele lehet integrálni.
Más2: ha a weblekérdezés eredményeképp egy egész range változik egybe (pld. A1:B20) akkor nem feltétlenül fog jól működni a lenti kód, mert a Value property-nek bekever ha a Target nem sima cella.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Range2Check As Range
Dim LogRow As Integer Set Range2Check = Range(Sheet1.Cells(1, 1), Sheet1.Cells(11, 2)) If Target.Row < 12 And Target.Column < 3 Then
ez igy nem igazan jo. mert nem masolni szeretnem az adatokat hanem naplozni loggolni. a munka1 lapon 2 oszlop 10 sor öt percenkent valtozik. a munka2 lapon minden valtozast elozmenyt rogziteni szeretnek. lehetoleg a rogzites idopontjat is C oszlopba.. ez keplettel nem megoldhato. vmilyen VBA macro kellene hozza. koszonom a valaszodat. ÜDV
Tud valaki segíteni nekem abban, milyen macrot kell írnom ahhoz, hogy az egy munkalapon weblekérdezéssel A, B oszlopába érkező 2 percenként változó, frissülő adatokat másik munkalap A és B oszlopába naplózza. esetleg a naplózás időtartamát kiírja.
Ha valaki segítene esetleg, tegye kérem szájbarágósan, mert új vagyok még a pályán.
Egy váltógombot tettem egy munkafüzetlapra, aminek hol a mérete nő meg a rákkantításkor, hol a megnevezése betűmérete csökken le parányira. Mi lehet szerintetek ennek a fura jelenségnek az oka?
Egyszerre több pivottábla jelentésszűrőjének állítgatásához kinek milyen ötlete van?
Pl.:
van 10 pivottábla (Összegyúrhatnám egybe az egészet sql oldalon, de nem szeretném - és nem is ez az igény)
a jelentésszűrőjükben 1-1 hónap, vagy év mezővel.
Nem akarja az user végiggyalogolni a 10 kimutatást, hogy azonosat állítson be mindegyiknél.
Elég sok pivotos újítással találkoztam a 2010-esben a 7-eshez képest. Nincs erre is valami frappáns szerintetek?
Tömör gyors makróval viszonylag egyszerűen meg tudom oldani (még nem tettem meg csak az elgondolás van meg), azonban arra vagyok kíváncsi, hogy van e erre beépített 2010-esben (még nem találtam, 3 és 7-ben szerintem nincs)
Egy talán egyszerű, de nekem kissé bonyolult feladat megoldásához szeretnék segítséget kérni.
Szóval az időt szeretném áttenni 10-es számrendszerbe, vagyis ha az az eredmény, hogy 2:30, vagyis 2 óra 30 perc, akkor az eredmény 2.50 legyen, tehát kettő és fél óra.
A Microsoft Office Excel 2003-ban, hogy lehet számokhoz a négyzetméter mértékegységet beállítani úgy, hogy a 2-es felső indexben legyen? Így próbálkoztam: kijelöltem a számokat, Formátum-->Cellák-->Egyéni Normál" m^2".
Akkor a másik oldalon egy OFFSET (magyar verziója OFFSZET)-be beraknám ezt:
=ADDRESS(SUM(--(A1:A9=B20)*ROW(A1:A9)),2,,,"sheet1") (angol excel-em van, szóval ezt még át kell alakítsd magyar függvényekre (SUM=SZUM, ROW=SOR, ADDRESS=?)
Ha nincs biztonsági mentésed, akkor szerintem sehogy.
Ha céges környezetben dolgoztál, akkor lehet van automatikus archiválás, ekkor hálózati rendszergazda, illetve az intézőben megnézheted, hogy vannak-e előző verziók az adott könyvtárhoz.
Excelben dolgoztam, nagyon fontos adatokkal napok óta. Egy másik mappában ennek mintájára akartam egy másik excel fájt, de másolás helyett véletlenül parancsikont hoztam létre. Az új excel fájlban is dolgoztam, lementettem, de ezzel ugye felülírtam az eredeti fájt, amiből eltűntek a nagyon fontos adatok. Amatőr hiba, tudom... Hogyan tudom visszahozni az eredeti állaptot?
Az utolsó válasz volt a legszimpatikusabb, és szerintem a legegyszerűbb is, mert az én kódom is úgy nézett ki, csak nem volt benne az Application.ExecuteExcel4Macro("GET.DOCUMENT(50)") parancs, ami tökéletesen összeszámolja 2003-ban is az összes oldalt! :)
A többit nem próbáltam, mert ez már megfelelő eredmény hozott.
A kód, hátha szüksége van rá valakinek: :)
Sub Minden_második_oldal_nyomtatás() dim i, TotalPages as integer
TotalPages = Application.ExecuteExcel4Macro("GET.DOCUMENT(50)") 1: k = CVar(InputBox("Add meg a első oldal számát!", "Első oldalszám megadása")) If k <> "" Then On Error GoTo Hiba k = k / 1 On Error GoTo 0 For i = k To TotalPages Step 2 'ActiveWindow.SelectedSheets.PrintOut From:=i, To:=i, Copies:=1, _ ' ActivePrinter:="PDFCreator a(z) Ne00: kimeneten", Collate:=True ActiveSheet.PrintOut From:=i, To:=i, Copies:=1, Collate:=True Next i End If Exit Sub Hiba: If Err.Number = 13 Then MsgBox ("Csak számot adhatsz meg!") Resume 1 End If End Sub
Van olyan nyomtatóbeállítás, hogy manuális-duplex-et nyomtasson, ez azt jelenti, hogy először (azt hiszem) a páros, utána a páratlan lapokat nyomtatja ki (asszem az utolsó lapot először és így visszafele).
Ha ezt akarod elérni, akkor lehet egyszerűbb ezt a property-t beállítani.
Ismét egy kérdéssel fordulok nagy publikum elé! :)
Meg szeretném tudni annak a változónak a nevét, amely megmondja, hogy egy munkalapon az éppen aktuális nyomtató-, illetve oldalbeállítással hány oldalas a munkafüzeztem.
Ha ezt tudom, akkor egy for ciklussal ki tudom nyomtatni a páros illetve a páratlan oldalakat az excel 2003-ban.
Szerintem a Munkafüzet2 fájl Open és Close eseményébe kellene betenni egy olyan kódot, ami a Munkafüzet1 megfelelő celláiba beírja az aktuális pontos időt.
A következő probléma megoldásában kérem a segítségeteket:
Adott két munkafüzet (Munkafüzet1.xlsm; Munkafüzet2.xlsm) . A feladat az lenne, hogy a Munkafüzet1-ből kell megnyitni a Munkafüzet2-t, és mérni kellene valahogy azt, amikor a megnyitás megtörtént, illetve amikor bezárták a Munkafüzet2 fájlt (a két időpont lenne a lényeg). A mérés eredményét pedig be kellene írni a Munkafüzet1-be.
A megoldásra az alábbiakat próbálgatom, de valamiért nem működik.
A Munkafüzet2 megnyitása és a mérés indítása a Munkafüzet1.xlsm – Munka1 munkalapján történt dupla kattintással történik:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
A Munkafüzet2.xlsm bezárása a Munkafüzet2.xlsm - Munka2 munkalapjára kattintással történik:
Private Sub Worksheet_Activate()
ActiveWorkbook.Close
End Sub
A mérés leállítása a Munkafüzet2.xlsm bezárása után a Munkafüzet1.xlsm újbóli aktiválásakor történik:
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
’mérés leállítása
MsgBox "Munkafüzet1 - Workbook_WindowActivate"
End Sub
A problémám az, hogy ha a Munkafüzet2.xlsm fájlt nem „hagyományosan” a Bezárás menüponttal vagy az ablak bezáró „X”-re kattintással zárom be, hanem a fenti Munka2 munkalapra kattintással, (ActiveWorkbook.Close paranccsal) akkor nem aktiválódik a Munkafüzet1.xlsm „WindowActivate” eseménykezelője.
Az is nagy segítség lenne ha valaki tudna infot mondani erőlködjek-e ezzel tovább vagy felesleges. Amit szeretnék összehozni, egy munkalapról egy sorból alma banán körte cellákból egy másik munkalapra almabanánkörtét csinálni egy cellába. Sima legördülő menü van, de 3 fele tagolva tudtam csak létrehozni, mivel csak egy sort vagy oszlopot enged az excel.
Végül csak egy "on error"-al megoldottam, hogy ha nem találja a file-t, akkor "msgbox", hogy "nincs nyitva, próbáld újra".
Elég sok makróm működik így, mert régebben nem ismertem még a megnyitási metódust, és azóta nem írtam át őket. Így legalább érzi a felhasználó, hogy rá is szükség van. :)
Addig jutottam el a prohektben, hogy az első fülön található 3 oszlopból és 15 sorból álló táblázatnak adtam egy nevet pl X. Majd az adatok érvényesítése paranccsal az utolsó fülön próbáltam csinálni egy legördülő menüt, de az excel csak egy oszlopra vagy sorra tud hivatkozni a táblázat neve alapján.... pfffff. Kifogytam az ötletekből.
UDF-ben egy csomó minden nem működik, és én erről mindig megfeledkezem... :(
Azt javaslom, legyen az UDF-ed bemenő paramétere a másik munkafüzetnek az a bizonyos része, és akkor - lévén külső csatolás - az Excel megpróbálja majd frissíteni a hivatkozásokat, és kiabál, ha nem sikerül. Jobb ötletem nincs. Esetleg az, hogy a Workbook_Open során biztosítsd be, hogy a másik fálj is meg legyen nyitva.
Annyi a különbség, hogy a makró rögzítő nem tárolja melyik az aktív nyomtató, és szerintem nem tudod pontosan beírni.
Ezért én kiírattam az Immediate windowra az az aktuális, aztán váltottam és azt is kiírattam. Innen be tudtam illyeszteni a szöveget az idézőjelek közé!