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.
Fel kell hívnom a figyelmedet, hogy az ÁTLAG függvény a 0 értéket tartalmazó cellákkal is számol az F oszlopban. Nézd meg a különbséget az ÁTLAG és az AB.ÁTLAG függvények eredménye között. Az utóbbinál hivatkozni kell a kritérium táblára, ami itt a G1:G2 cella.
Miután ezt beírtad (bemásoltad :P), a jobb alsó sarokkal húzd le az F23-ig.
A képlet azt csinálja, hogy megvizsgálja az E11-es cellát, és ha azt üresnek találja, akkor a függvény 0-val tér vissza (azaz az F11-be 0 kerül), ha pedig nem üres, akkor az eredeti függvényt hajtja végre. Természetesen az E11-es cella átírható másra, pl. D11-re is.
(Ez egy gyakran alkalmazott módszer, hogy a #zéróosztó stb. hibákat elfedje az ember. :) )
Köszönöm a gyors választ! Igen az ilyen megoldást megtaláltam a neten, de az én táblázatomba nem tudom hova kellene írnom melyik cellába és hogyan. A kárszázalék oszlopba gondolom? Tudnál nekem az én képletem alapján egy ilyen példát írni? Mert akárhogy próbálkoztam soha sem sikerült! Köszönöm!
Segítségeteket kérem! Az alábbi táblázatba a kárszázaléknál #zéróosztó-t ír ki ha nincs az első két sorban adat vagy a sárga mezőkben. Nekem úgy kellene hogy nullát írjon ki és úgy számolom mivel nem tudom, hogy 4 vagy 10 sort tudok kitölteni adattal. Megjelenítettem a függvényeket hogy könnyebb legyen. Légyszíves ha van valami megoldás írjátok meg. Köszönöm! Laci
Beveszi, nálam szépen lefutott, sőt még azt is csinálata, amit kellett.
Mostanság kezdem hozzászoktatni magam ehhez a formához. A cells(1,5)-nél még könnyen követhető, melyik oszlop adatairól van szó, de a cells(1,196)-nál már nehezebb.
Az első képen látom, hogy 1-1 sorban többször szerepel a kód, amit ki kell nyerni. Többnyire az első előfordulás után szóköz van, de a többinél alsó kötjel. Ha mindegyiknél szóköz lenne, a kinyeréshez addig kellene futtatni a ciklust a hosszú adatban, míg rá nem talál erre.
Írd át egységesre az A oszlop adatait, ha teheted.
A Type mismatch hiba azért jöhetett elő, mert lehet, hogy az A oszlopban nem számformátumúak a számaid.
Az Exceledben a bővítményeknél kapcsold be az Analysis ToolPack, és az Analysis ToolPack VBA nevűeket, hogy a Match függvényt értelmezni tudja. Bár azt hiszem, az utóbbi leírásod szerint nem azonos lapon (sőt talán nem is azonos füzetben) voltak a próbánál az eredeti adataid, és ahova fell kell írni, azért nem volt találat.
A Target jelenléte a kódban arra utal, hogy ez egy ún. Event handler. Ezekből sok van, de a Target jelenléte arra utal, hogy a kérdéses sort tartalmazó kód arra reagál ha egy adott munkalap valamely cellájának vagy cellák egy csoportjának a tartalma megváltozik.
Esetedben a Target arra a tartományra vagy cellára utal, ahol változás történik.
Vagyis a kód a munkalap minden egyes változásakor megvizsgálja, hgoy a megváltozott terület (Target) benne van-e az L:S oszlopok határolta tartományban.
Ha benne van (vagyis a változott cella(-ák) és az L:S tartomány közös metszete nem üres (NOT ... Nothing)), akkor az IF THEN ágán lévő utasítások hajtódnak végre.
Ha a változott cella nem esik az L:S tartományba (pld. A1) akkor ez ELSE ágon lévő utasítások hajtódnak végre (feltéve, hgoy van ELSE ág, ha nincs akkor semmi sem történik.
Ez így oké, köszi hogy megpróbáltál válaszolni, de valami olyasmira lettem volna kiváncsi, hogy szavakkal elmondva mit csinál az a sor. Például ha a "for i=1 to 5" a kód, akkor azt szavakkal elmondva: "addig megyünk amíg az i értéke nem 5" Ilyesmi választ tud valaki adni?
Először is köszönöm a gyors segítséget! Pár probléma még felmerült, próbáltam futtatni a makrót, de két helyen a következő hibát kaptam: ertek! = Cells(sor% + 1, "A") - type mismatch oszlopT% = Application.WorksheetFunction.Match(Left(kod$, 3) * 1, Rows(1), 0) sorT% = Application.WorksheetFunction.Match(keres$, Columns(oszlopT), 0) - Match tulajdonság nincs megadva, próbáltam az utolsó szuámjegyeket állítani, -1,0,1-re de egyik sem jó, sajnos nem értek hozzá, úgyhogy ebben még kérnék segítséget. Még annyi módosítás történt, hogy csináltam egy (Mátrix) munkafüzetet és oda beírtam minden pozicószámot, úgy ahogy a most csatolt képen látszik 100_1-től 2500_72-ig lefelé és 100_1-től 150_1-ig jobbra. A cél az lenne, hogy az (Import) munkafüzetről az A oszlóból a pozició számokat kivágja és az alatt lévő értéket beilessze a (Mátrix) munkafüzet megfelelő pozicó száma mellé, majd a feltöltött sorokat a pozicó számmal együtt vissza másolja egymás alá az (Import) munkafüzet H,I oszlopába. A képeket ide tudtam feltölteni: http://indafoto.hu/smety
Totál hülye vagyok a VBA-hoz, szal ez csak tipp, bocs ha hülyeséget írok:
az operátorok precedenciája lesz itt a ludas. Vagyis, az IS operátor fontosabb, mint a NOT operátor (az összehasonlító és a logikai operátoroknál általában ez a helyzet). Vagyis, a "NOT valami IS izé" az nem úgy értékelődik ki, hogy "(NOT valami) IS izé", hanem "NOT (valami IS izé)" ...
Sziasztok! Adna valaki egy amennyire csak lehetséges, részletekbe menő magyarázatot erre a sorra hogy mit is csinál?
If Not Intersect(Target, Range("L:S")) Is Nothing Then .....
Ez az intersect parancs ha jól tudom visszad egy range objektumot amely két vagy több range keresztmetszetét mutatja meg. Legalábbis ezt írja: "The Intersect Method will return a Range Object that represents the intersection of two, or more, ranges." A not intersect peidg az ellentettje tehát ha true akkor false ha false akkor true.
De ez most valahogy nem teljesen tiszta, hogy akkor mit takar a fenti kód?
A makró indítása előtt a C1-be írd be a kódod elejét, 101-et, az E1-be 102-t.
Sub Valami() Dim sor%, oszlopT%, usor%, b%, szoveg$, kod$, ertek!, sorT%, keres$ usor% = Range("A" & Rows.Count).End(xlUp).Row
For sor% = 2 To usor% Step 2 'kódszám és érték kinyerése az A oszlopból kod$ = "" szoveg$ = Cells(sor%, "A") ertek! = Cells(sor% + 1, "A")
For b% = 1 To Len(szoveg$) If IsNumeric(Mid(szoveg$, b%, 1)) Or Mid(szoveg$, b%, 1) = "_" Then kod$ = kod$ & Mid(szoveg$, b%, 1) End If Next keres$ = Left(kod$, Len(kod$) - 1)
Némi segítséget kérnék a következő feladathoz. Kép csatolva, a megoldásra váró probléma pedig a következő lenne.
A2 cellában lévő szövegből kellene első körben kivágni a pozició számot itt: 101_1, majd ezt keresse meg C,E és további oszlopkban (több száz van csak az egészet nem vágtam be), ha megtalálta, akkor az A oszlopban a pozicó szám alatti cellában lévő értéket írja a mátrixban lévő (C,D...oszlopok) megfelelő poziciószáma mellé. (Ezeket most kézzel írtam be, mert próbálkoztam a szöveg.keres, bal és közös függvények kombinációjával, de valamiért nem működik, tehát erre is szeretnék megoldást.),ha ez megtörtént, akkor a kitöltött poziciókat ki kellene másolni az értékekkel együtt egy külön oszlopba ez a H,I oszlop a képen.
Némi segítséget kérnék a következő feladathoz. Kép csatolva, a megoldásra váró probléma pedig a következő lenne.
A2 cellában lévő szövegből kellene első körben kivágni a pozició számot itt: 101_1, majd ezt keresse meg C,E és további oszlopkban (több száz van csak az egészet nem vágtam be), ha megtalálta, akkor az A oszlopban a pozicó szám alatti cellában lévő értéket írja a mátrixban lévő (C,D...oszlopok) megfelelő poziciószáma mellé. (Ezeket most kézzel írtam be, mert próbálkoztam a szöveg.keres, bal és közös függvények kombinációjával, de valamiért nem működik, tehát erre is szeretnék megoldást.),ha ez megtörtént, akkor a kitöltött poziciókat ki kellene másolni az értékekkel együtt egy külön oszlopba ez a H,I oszlop a képen.
Csakhogy ez a makró nem ad választ arra az alapkérdésre, hogy mit mond majd a kérdező a dolgozóknak, amikor aziránt érdeklődnek, hogy miért karácsony hetében kell a legtöbb munkát végezni.
Úgy vettem, hogy az első lapod a Munka1, a második a Munka2. Az utóbbihoz kell rendelned az első makrót, a másodikat pedig egy új modulba másold be.
Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False
If Target.Address = "$B$1" Then Hét Target End If
Application.EnableEvents = True End Sub
Sub Heti(het) Dim WS As Worksheet, sor%, oszlop%, sor2% Set WS = Sheets("Munka2")
Range("A2:A20").ClearContents
Sheets("Munka1").Select oszlop% = Application.WorksheetFunction.Match(het, Rows(1), 0) For sor% = 2 To 17 If Cells(sor%, oszlop%) = "x" Then sor2% = WorksheetFunction.CountA(WS.Columns(1)) + 1 WS.Cells(sor2%, 1) = Range("A" & sor%) End If Next Sheets("Munka2").Select End Sub
Köszönöm a segítséget! Nagyszerűen működik. A bakikért elnézést, komolyan megrémiszt, mert ritkán szoktam ilyet tenni. Nem is akarok kifogásokat keresni, figyelmetlen voltam!
Szerintem ez pont azt csinálja amit én mondtam. Beolvas majd valahogy ráerőlteti az excel-re, hogy az vegye át az adatot.
A ráerőltetés része a dolognak az igazán trükkös, mivel az excelbe nem a beolvasott adatok kerülnek (bárkód), hanem az értelmezettek (a bárkódnak megfelelő cikkszám), vagyis a kettő között van valamilyen alkalmazás ami átveszi az adatokat a leolvasótól és felkészíti az excelnek való átadásra.
A segítségeteket szeretném kérni. Van egy karbantartási táblázatom amelyben az összes hét és az összes feladat megtalálható.
Azt szeretném, hogy a másik munkalapon amikor beírom az első sorba a keresett hét számát, akkor megjelenjen az első oszlopban a szükséges feladatok neve (első munkalapon x-szel jelölve).
A probléma az, hogy honnan fogja tudni az Excel, hogy megnyomtad a leolvasó gombját?
A másik, hogy nem tudsz dolgokat küldeni az Excel-nek, amit tudsz az dolgok beolvasása az Excel által. Nagy a különbség, mert az egyik esetben az Excel passzív (küldesz neki dolgot) a másik esetben aktív (beolvas dolgokat).
Nézz utána a leolvasóknak, mert ezt a problémát már többszörösen megoldották (mondjuk nyilván benne is van a vas árában). Nem gondolom, hogy ez valami extrém összeg lenne, google a barátod :-)
Igazából úgy gondoltam hogy akkor lenne frissítés ha megnyomom a leolvasó gombját és az beolvassa az adatot. Ezt valamilyen formátumban elküldené az excelnek. Az excel pedig fogadná és a megfelelő termékhez ugrana ahol én a számítógép numerikus billentyűjén keresztül megadnám neki a darabszámot.
Bár lehet hogy jobb lenne ha egy üres excel táblába gyüjtené az adatot és a darabszámot és azt összehozni valahogy a leltár táblázattal.
Ha a leolvasó (wifin?) folyamatosan feltölti a leolvasott adatokat egy adatbázisba, ez az adatbázis elérhető, importálható és frissíthető excelből, akkor meg lehet oldani amit szeretnél.
Az egyetlen dolog amiben nem vagyok biztos, hogy a leltár adatbázis lekérdezés frissítést hozzá lehet-e kapcsolni a vonalkód leolvasó használatához (vagyis, hogy az Excel akkor kérdezze le az adatokat, amikor új adat van, ne pld. percenként, vagy 20 másodpercenként).
Vannak ilyen vonalkód leolasók, sőt olyanok is, amik beveszik a mennyiséget egy saját keyboardon keresztül és a már kész leltárt tölthető le excelbe ahol már csak a neveket kell hozzátársítani a cikkszámokhoz.
A leltárt én és a barátnőm csináljuk szóval az alkalmazottak abszolút nem látnak bele. Igazából nem tudom milyen programja(i) vannak a vonalkód olvasónak mert még nincs is csak gondolkozok rajta, hogy ha működne akkor...
Igen van olyan termék ami többször felkerül, az üzletben egyik hely - másik hely + raktárak. Szóval ez is bonyolítja a helyzetet.
Arra gondoltam, hogy makróval valahogy meg lehet oldani, hogy beolvasott adatnak megfelelő rekordot kiválasztja és mondjuk egy celláva arrébb ugrik vagy ha az már tartalmaz értéket akor kettővel. Utánna beírom a darabszámot rögzítem és várja a következő vonalkódot.
Szerintem ez fordítva működik. Először a (vonalkódleolvasó saját programjával) rögzítsd be a vonalkódokat és a mennyiségeket (egyébként sem jó ha a leltárt felvevők tudják a könyvekben szereplő mennyiségeket, mert visszaélést tehet lehetővé, szóval az ún. "vakleltár" jobb).
Ezután az összegyűjtött vonalkódokat (amik igazából numerikus kódok) és a mennyiségeket töltsd át excel-be és utána egy egyszerű vlookup-pal kapcsold össze a két "adatbázist".
Amin érdemes elgondolkozni, ha már leltárról van szó, az az, hogy lehet-e hogy ugyanaz a termék többször is felvételre kerül (pld. áruházakban szokott lenni, hogy a csokik két helyen is vannak, az édességek között a polcon, meg a kasszánál, hogy a sorban álló gyerekek addig nyaggassák a szülőket, amíg azok megveszik)... Ha lehet ilyen akkor először összesíteni kell a leltáradatokat (pld egy pivottáblával) és csak utána összekapcsolni.
De hogy az eredeti kérdésedet is megválaszoljam, valószínűleg át lehet venni valahogy a vonalkód leolvasó adatát Excel-be, de ez extrém módon függ a leolvasóval használt programtól is (pld. képes-e leolvasásonként frissített adatbázist létrehozni és lekérdezésre rendelkezésre bocsátani, annak mi a szerkezete, stb.). Szóval lehet, hogy lehetséges a megoldás, de hogy nem egy sima excel fórum keretében, az szinte tuti...
Van egy táblázatom amit leltározásra használok. Az A oszlopban van a termékek neve, a B oszlopba írom be a darabszámot a C oszlopban pedig az ár van.
Ha felvenném minden termék vonalkódját akkor megoldható lenne e az, hogy vonalkód olvasóval beolvasom a vonalkódot és autómatikusan kikeresné a terméket majd a B oszlopára (darabszám) ugrana én beírnám a darabszámot entert nyomok és jöhetne a következő?
Ebben a példában a harmadik blokkban van eset amikor a 3-b kombináció kétszer fordul elő, valamint a negyedik blokkban is van eset amikor a 34-b kombináció kétszer fordul elő.
Válaszolj igennel vagy nemmel: előfordulhat, hogy az adatbázis munkalapodon kétszer fordul elő ugyanaz (pld. a 3-b) kombináció?
Jól értem, hogy a kereső munkalapodon egymás alatt vannak kombinációk, amelyekhez meg kellene keresni az adat mezőt.
Mert akkor a problémád közel sem olyan bonyolult, mint elsőre leírtad. Úgynevezett two-way-lookup-ot kell csinálni és úgy bereferenciázni, hogy lefele is másolható legyen.
Azért meg kell mondjam, hogy új etalont hoztál létre a nehezen értelmezhető kérdések területén és a kb 3-szor elrontott példád sem segített...
Szóval, alapfeltételezések:
- adatok az Adatbazis munkalap A2:C13 tartományában vannak (ezen a lapon az első sor a fejléc, ezért kezdődik a második sorban).
- a keresesi feltetelek egy masik munkalap A és B oszlopában vannak, a keresési eredmény ugyanennek a munkalapnak a C oszlopába kerül. Ennek a lapnak az első sora fejléc, így az első lekérdezendő adatokat tartalmazó sora a 2. sor (vagyis a lenti képletet a C2 cellába kell bemásolni)
- a lenti képletet Ctrl+Shift+Enter-rel kell lezárni, ha jól sikerült akkor kapcsos zárójelek közé kerül a képlet a szerkesztőlécben. Ha nem Ctrl+Shift+Enter-t használsz, a függvény NEM fog működni.
- a függvény azon a feltételezésen alapul, hogy nincs olyan kombináció ami kétszer fordulna elő az adatbazis munkalapon!
A képlet, ami a C2 cellába megy és szabadon másolható lefele:
Kipróbáltam. Az E1 és F1 cellában lévő feltételekhez megadja a jó eredményt.
Az én esetemben a keresési értékek, mint E és F oszlopban egy másik munkalapon vannak. Tehát a képlet húzásával kellene minden sorához a másik munkalapról az eredményeket áthozni.
Akkor lehetséges, hogy a rossz problémára készítettem jó megoldást :-)
Amit én csináltam az azon alapul, hogy a 3-c kombináció többször is előfordulhat és mindegyik ilyen kombináció melletti számot látni szeretnéd.
Most viszont azt írod, hogy csak egyszer fordulnak elő a kombinációk, viszont akkor nem látom a problémát, mert "sima" VLOOKUP+INDEX-el meg lehet oldani. Meg azt sem értem, hogy a lenti magyar forrásból származó megoldással kapcsolatban miért írod, hogy a második előfordulásnál is az első előfordulás számát adja vissza.
Egy keresett első feltételhez(keresési érték) csak egy találat lehet, az alábbi már javított példa szerint. Több adatbázis keres különböző adatokat egymásban. A keresett első feltétel kb 3-9-szer ismétlődik egymás alatt. Minden sorban általában más-más második feltétel van hozzárendelve, amelyek így megadják a keresett adatot, mint eredményt. Sajnos nem mindig, de annak a megoldása még tovább komplikálná a dolgot, hiszen annak a megkülönböztetésére már egy harmadik feltétel kellene!? Az egész adatbázis kb 10.000 sor. Ebben kb. 1500-2000 féle első feltétel van. Nem tudom, hogy eléggé érthetően írom-e?
A 18673-at neked írtam, vess rá egy pillantást. A neten fogsz találni olyan site-okat, amik segítenek megtalálni az angol nyelvű függvények magyar megfelelőjét.
Hát Lala, nincsen jó érzésem ezzel a feladvánnyal kapcsolatban.
Tapasztalatból mondhatom, hogy ha valaki leírja egy excel problémáját, azzal itt többnyire foglalkoznak a bentlakók. A te esetedben azonban még el sem jutottunk az excel problémáig, mert először egy kombinatorikai feladatot kell megoldani.
Miközben igaz, hogy minden bogár rovar (vagy fordítva), az nem igaz, hogy minden excel-es kocka egyben beépített statisztikus is.
Szóval ha elmondod nekünk az algoritmust ami előállítja az általad áhított végeredményt, bátran mondom nagy esélye van annak, hogy valaki leprogramozza neked.
Megoldani egy statisztikai jellegű problémát, nos nem vagyok optimista.
Szóval amíg te nem segítesz annyival, hogy (valamelyik másik topikban?) felkutatod a megoldást a statisztikai problémádra, addíg itt kevés esélyed van, nem azért mert nem akarnánk segíteni neked, hanem mert nem tudunk.
- adatok az A2:C13 tartományban vannak (A és B oszlop keresendő, C oszlop találandó adat)
- a két keresendő adat az E1-ben (az A2:A13 tartományra kiértékelendő adat), és az F1-ben van.
- a lenti képletet az E2 cellába írod és utána lefelé másolod.
- javaslom, hogy a hivatkozásokhoz inkább neveket használj ne pedig cellahivatkozásokat (pld. az A2:A13 tartományt elnevezheted 'ElsoFeltetel'-nek és rögtön olvashatóbb lesz a képleted.
Ha begépeled feltételezi, hogy így akartad. Ha eredményül kapod akkor már valószínűbb, hogy elkezd a napokkal is játszani (nem próbáltam ki, csak blöffölök).
Nem engedi, hogy az órákból levegye a 24 többszöröseit, vagyis enforce-olja az órákban való mutatást. Ennél csúnyábban és magyartalanabbul már nem nagyon tudtam volna leírni :-)
Hogy lehetne rávenni az Excel 2007-et, hogy egy 25:12:23-as időtartamot meghagyjon ebben a hitében, és ne csináljon belőle 1:12:23-at? Értem én, miért csinálja, csak nem szeretem...
Nem válaszoltál arra, hogy megvan-e egyébként az algoritmusod? Vagy azt szeretnéd, hogy valaki oldja meg a dolgot, mint kombinatorikai feladatot (és mellékesen írjon rá programot is)?
Pontosan, az a gond, hogy nem látszik a kijelölés. Ha nem 5, hanem 90 szövegdoboz van, akkor az fontos lenne, hogy a felhasználó lássa, h pont melyik szövegdobozról van szó.
Szerintem ez nem programozási kérdés. Programtól függetlenül megvan rá az algoritmusod? Mert ha igen, akkor gyerekjáték megírni rá a programot bármilyen programnyelven.
Az alabbi program egy ötös lotto variaciot tartalmaz 21 szam 5 kihuzottra 5 talalat,de hogyan tudnak olyant csinani ami mondjuk 2 kihuzottra 2talalatot garantal??
Te magad is írod, hogy a kiválasztás megtörténik, mert MsgBox-ban ki tudod iratni a szövegeket. Az a probléma, hogy nem látszik a kijelölés? Az miért probléma? Lehet egy kicsit több info birtokában többet tudnánk segíteni...
Nem az a baj, hogy az előbb nem volt kipontozva, hanem hogy nem világos, mit akarsz. Ha több találat van, és nem az elsőt keresed, akkor minek az alapján kell eldönteni, hogy hányadikat?
Balszerencsémre excelben kellene VBA makrókat hegesztenem, de van egy tök egyszerű dolog, ami kifogott rajtam. Maga a probléma egy eljáráshalom mélyében van, de egy egyszerű eljárással is szemléltethető:
1) Adott egy excel munkalap, benne néhány szövegdobozzal (nem beviteli mező, csak szimpla színes-szagos szövegdoboz objektum). A cél a szövegdoboz aktiválása (kijelölése), egy ciklusból. Vagyis, egy gomb eseménykezelője:
Sub Findtext() For i = 1 To ActiveSheet.TextBoxes.Count ActiveSheet.TextBoxes(i).Select MsgBox (i) Next i End Sub
Elméletileg kijelöli az összes szövegdobozt egyesével (ha akarom, akár a tartalmukat is ki tudom írni az MsgBox segítségével)... De a kijelölés nem működik: gyakorlatilag az első MsgBox-nál kijelöli az elsőt, aztán a legutolsó MsgBox leokézésa után meg kijelöli az utolsót. De az nem látszik, ahogy végigmegy a kijelölés a szövegdobozokon...
2) ActiveSheet.TextBoxes(i).SelStart = 0 -ra miért azt kapom vissza, hogy "Object doesn't support this property or method" ?
Az AB.MEZŐ függvénnyel tetszőleges bonyolultságú feltétel szerint tudsz keresni. A példádból nem látom, hogy a "3" "c" feltételre miért épp a 1010 akarod kapni az 1008-1011 értékek közül.
A segédoszlop verzió vészmegoldásként jónak tűnik. Hasonló megoldásként hozom létre tulajdonképpen az adatoszlopot is. Ezek az adatok egy kb 10.000 soros munkalapon vannak, ahonnan adatokat veszek át másik munkalapokra, amelyek úgy 2-3000 sorosak. Itt minden sorban egy keresésnek kell lennie, az adatoszlop értékeire, amelyek azután a munkalapokon további hivatkozásként szolgálnak más értékek keresésére. Így viszonylag egyszerű, általános megoldást keresek. Egy ilyen függvényt már több esetben is tudtam volna használni. Érdekes lenne egy általános formula is. Talán a következő Excel-ben már lesz ilyen, a "szumhatöbb" példája okán.
de fontos, hogy, ha valamelyik kritérium többször is előfordul, ne csak az elsőt vegye tekintetbe.
Hanem mit csináljon akkor?
1.
összefűzöd a két oszlopot egy harmadikban és azt használod az fkeresben mint keresési kritérium. Ha több van, akkor csak az első találatot kapod vissza.
2.
szumhatöbb függvény - ekkor ha van azonos akkor azokat összeadja (pl. ha lenne két 3............. c.......... akkro azok összegét kapod meg.
Sziasztok! Küldöm még egyszer, mert először összeugrottak a karakterek.
Abban kérném a sgítségeteket, hogy tudtok-e több feltétel egyszerre teljesülése esetére kereső függvényt ajánlani? Az "fkeres", vagy a "hol.van" -"index" függvényhez hasonlóan, de fontos, hogy, ha valamelyik kritérium többször is előfordul, ne csak az elsőt vegye tekintetbe. Az alábbiakban küldök egy példát. A "3" és "c" egyezésénél az eredmény 1010.
Abban kérném a sgítségeteket, hogy tudtok-e több feltétel egyszerre teljesülése esetére kereső függvényt ajánlani? Az "fkeres", vagy a "hol.van" -"index" függvényhez hasonlóan, de fontos, hogy, ha valamelyik kritérium többször is előfordul, ne csak az elsőt vegye tekintetbe. Az alábbiakban küldök egy példát. A "3" és "c" egyezésénél az eredmény 1010.
Az normális, hogy a megosztott munkafüzet minden alkalommal megkérdezi, hogy akarom-e menteni, akkor is, ha semmit nem csináltam, és amikor azt mondom, hogy nem, akkor mégis az a perc fog látszódni dátumként, amikor bezártam?
Van 12 oszlop ami a termékekre vonatkozik és írom be az adatokat hozzá. De már nem látom a címet az 2-sorban, hogy az melyik is valójában. Nincs esetleg valami mód arra ha ráállok mondjuk a B120-ra akkor dob egy popuppot vagy valamit hogy ez a Kettes termék?
Megnéztem a linkeket. Jó úton haladsz, de ez irtózatos meló. Én korábban végigverekedtem magam rajta. A legegyszerűbb ha a saját munkafüzeted valamelyik lapjára helyezel egy gombot és ahhoz rendeled a makrót. Aztán vagy a makró bekéri, hogy melyik munkafüzet melyik lapján fusson le, vagy a gomb alatt lévő cellába beíratod a felhasználóval és onnan veszi ki a makró
A kicsit bonyolultabb, hogy saját eszköztárat készítesz. 2003 alatt ennek volt egy olyan módja, hogy kézzel elkészítetted az eszköztárat, majd a kész eszköztárat csatoltad a munkafüzethez, így az a munkafüzet megnyitásakor automatikusan megjelent. Ezzel én is szenvedtem, de ha jól emlékszem akkor a 2007-ben már nem tudod csatolni.
Program segítségével azonban a munkafüzet megnyitásakor még mindig el lehet készíteni a saját eszköztárat, ha ennek a módját ismered 2003 alatt akkor az futni fog 2007 alatt is. Maximum egy két helyen kell módosítani a parancsokon. Ennek az a szépséghibája, hogy 2007 alatt már új eszközsort (vagy mi a neve) nem tudsz létrehozni. Az összes saját eszköztárat fixen egy Bővítmények nevű szalagon fogja elhelyezni és csak a gyári ikon képeket lehet használni.
Erre egy példa:
Thisworkbook lapra az alábbi kód: Private Sub Workbook_Open() Dim menu_obje, menu_obje2, menu_obje3 As Object
For Each menu_obje In Application.CommandBars(1).Controls If menu_obje.Caption = "Új menü" Then menu_obje.Delete End If Next For Each menu_obje In Application.CommandBars If menu_obje.Name = "Új eszköztár" Then menu_obje.Delete End If Next
Set menu_obje = Application.CommandBars(1).Controls.Add(Type:=msoControlPopup, temporary:=True) menu_obje.Caption = "Új menü"
Set menu_obje2 = menu_obje.Controls.Add(Type:=msoControlPopup, temporary:=True) menu_obje2.Caption = "almenü" Set menu_obje3 = menu_obje2.Controls.Add(Type:=msoControlButton, temporary:=True) menu_obje3.Caption = "Második program" menu_obje3.OnAction = "program2"
Application.Toolbars.Add Name:="Új eszköztár" With Toolbars("Új eszköztár") .Visible = True .ToolbarButtons.Add Button:=211 .ToolbarButtons(1).OnAction = "program3" .ToolbarButtons(1).Name = "Harmadik program" End With
End Sub
Private Sub Workbook_BeforeClose(cancel As Boolean) Dim menu_obje As Object If Not cancel Then For Each menu_obje In Application.CommandBars(1).Controls If menu_obje.Caption = "Új menü" Then menu_obje.Delete End If Next For Each menu_obje In Application.CommandBars If menu_obje.Name = "Új eszköztár" Then menu_obje.Delete End If Next End If End Sub
Egy modul lapra az alábbi kód:
Private Sub program1() MsgBox "program1" End Sub
Private Sub program2() MsgBox "program2" End Sub
Private Sub program3() MsgBox "program3" End Sub
A harmadik lehetőség hogy magát a szalagot alakítjuk át. Ehhez viszont már érteni kell az xml programozáshoz is. Kezdőknek nagyon jó letölthető szalag szerkesztő programok vannak. Például: Office2007RibbonEditor225 OfficeCustomUIEditor visualribboneditor
Ezekkel létre kell hozni egy szűz Excelt a kívánt új szalaggal. A szalagon lehet gyári ikonképeket elhelyezni, illetve a ikonokra lehet saját képet is feltenni.
Az így elkészült új Excelben lehet elkészíteni a saját programokat és táblázatokat. Később a szalagot egy kis hozzáértéssel már manuálisan is lehet módosítani. Ehhez a fájl kiterjesztését xlsm-ről át kell nevezni zip-re. Majd ki kell csomagolni a fájlt. Kapunk egy könyvtárstruktúrát különböző fájlokkal. Ezekben kell a módosításokat elvégezni, majd be kell zippelni a teljes könyvtárat és vissza kell írni a kiterjesztést xlsm-re.
Ha már haladsz valamennyit a programozással, akkor ezt az xlsm fájlt le lehet menteni Excel bővítményként is. És akkor a makróid „láthatatlanul” a háttérben ott lehetnek a felhasználóknál, akik csak annyit látnak, hogy van egy új szalagjuk különféle gombokkal és menükkel.
Vagy ott van a jó öreg copy as picture lehetőség (xl2007 és xl2010), az konvertál mindent.
Ha csak a pivot table van egy adott lapon akkor makróból ki lehet jelölni a UsedRange object-et, copy as picture és már lehet is Ctrl+v-zni Powerpointban.
Magasabban kvalifikáltak valszeg azt is könnyedén megoldják, hogy makróból nyíljon úgy lap a Powerpointban és automatikusan paste-eljen, de én nem ismerem a PP object modelljét.
A Chart-okat makróból le lehet menteni kép formátumba. Ha ez működne Pivottal, az elég jó lenne neked, mert gombnyomásra készíteni a png formátumú képet, clipboard-ra rakni és már csak a Ctrl+v-t kéne nyomogatnod.
Lehet érdemes lenne ennek utánanézzél, sajnos nem emlékszem hol láttam...
Ugyan abba a két filenévbe exportálja a program az adatokat. Csak addig kell, hogy a leadott rendelésekhez van-e elég alapanyagunk. Aztán következő nap/lekéréskor ha exportálom akkor az arra vonatkozóan nézi meg, hogy van-e elég alapanyag vagy miből kell rendelni.
Nem írtam ki a függvény paramétereit, csak azt, hogy az egyik összegzi az első-, a másik a második tartomány adataiból a kritériumnak megfelelő érétkeket.
Kellene megint egy kis segítség. Van két txt file amiből betöltöm az egyik munkafüzetre az egyedi ID-d a terméknevet és a darabszámot. Ez A176:D184 és a másik txt-t a H175:K179-re. (De ez bármikor változhat mert a rendeléstől függ.)
Az egy-egy txt-ben ugyan azon termék többször is szerepelhet.
Közben megoldottam a Compatibility mode-dal kapcsolatos problémát úgy, hogy időlegesen lekapcsoltam a compatibility mode-ot, megnyitottam a workbook-ot és visszaállítottam a compatibility mode-ot.
'Enforcing xlsx file format
xlUserFileFormat = Application.DefaultSaveFormat
If xlUserFileFormat <> 51 Then Application.DefaultSaveFormat = 51
Minden lapra vonatkozó eseménykezelést a ThisWorkbook laphoz kell rendelned. Ha a General-t Workbook-ra cseréled, alapállásban a Workbook_Open eseményt állítja be a VB. Ezt cseréld le a jobb oldali legördülőben a SheetSelectionChange eseményre.
Ehhez egy példa:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Target.Interior.ColorIndex = 10
End Sub
Az egyes lapokon megváltoztatja a háttér színét, mikor kijelölsz egy-egy tartományt.
Most válts át SheetChange eseményre. Példa:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.EnableEvents = False
Range("A1") = Target.Column + 9
Application.EnableEvents = True
End Sub
Látod, itt a makró első sorában letiltottam az események engedélyezését, a végén pedig visszaállítottam. Módosítasz egy cellát, mire a makró nekilódul, beírja az A1-be a módosítás oszlopának 9-cel növelt számát. Ha az elején nincs a letiltás, ezt az újabb beírást is eseményként kezeli, újra beír az A1-be, és kapsz egy végtelen ciklust.
Az End Sub előtt vissza kell állítani az eseménykezelést, másként az Excel újraindítása előtt nem fognak működni a makróid.
Na de ez munkalapra ugrik. Azt szeretném, hogy más munkalapokon történt eseményre reagáljon, bárhol a munkafüzetben! Vagy pedig minden munkalap változásához hozzá kéne rendelni ezt a makrót?
Pl. ez:
Private Sub Workbook_Change(ByVal Target As Range) Sheets("valami").Cells(1, 3) = Target.Column + 9 End Sub
Első próba: a munkalap másolásakor egy percre lefagyott az Excel, aztán tényleg lemásolódott gombostul, és most mind a két munkalaphoz ugyanaz a makró tartozik. Ez végül is jó, úgyis egyforma munkalapokat akarok.
Bal oldalon látod, hogy a lapod kódját írod, akár a VB szerkesztőben is kiválaszhatod.
Fent a jobb oldali legördülőben a (Declarations) feliratot látod, balra mellette a (General)-t. Ezt legördíted, és a Worksheet-et választod. Alapból ez jelenik meg:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
End Sub
Ha nem akarod, hogy minden fókuszváltás elindítsa a makrót, csak 1-1 módosítás, akkor vedd ki a címből a Selection részt.
Illetve máris van egy: hogyan tudok a megadott munkalaphoz makrót rendelni, amely bárhol a munkafüzetben történt módosítás hatására lefut? A múltkor látott Worksheet_Change mintájára próbálkoztam a Workbook_Change makróval, ami a Google szerint létezik is, de nem sikerült életet lehelnem belé.
Szuper! A lapszámot azért használtam, mert a lapnévvel nem működött, és a hibakeresés idejére egyszerűsíteni akartam. Most ott tartok, hogy a kezdőlapon fel vannak sorolva egymás alatt feldolgozandó munkalapnevek, és végigmegy az ott megnevezett munkalapokon, és mindegyikbl az A3 cella éertékét kiírja egy msgboxba. Ez persze csak teszt, de már el tudok indulni az igazi feladattal. :-) Hálás köszönetem, és holnap is lesznek kérdéseim!
Dolgoznék a fülekkel, és már az első lépésnél elakadtam.:-(
Private Sub Összesít() Dim lapok() As String Sheets(1).Range("D5") = 98 ' Ez még lefut Dim ws As Worksheet ws = ThisWorkbook.Sheets(1) End Sub
91-es hiba: "object variable or with block variable not set " (akár van benne thisworkbook, akár nincs). Próbáltam ráguglizni, de amit találtam, nem tűnik adekvátnak.
A fájlodban szereplő makróhoz is rendelhetsz a gyorselérési eszköztáron ikont.
Miért idegesít a personal betöltése, hiszen azt nem is látod, mert a háttérben, rejtett füzetként töltődik be?
Abban igazad van, hogy módosításkor minden gépen felül kell írni, de ha az első bekezdésben lévő módszert alkalmazod, csak a megváltozott fájlt kell szétküldeni a többieknek.
Pont ezt akartam elkerülni, egyrészt mert még engem is idegesít, hogy az Excel minden indításakor megnyílik a personal, hát még a kollégákat, másrészt mert megnehezíti a módosítást, ha sok gépen kell cserélni. Most azt találtam ki, hogy vezérlő eszköztárból teszek fel szöveges nyomógombot a munkalap tetejére, és ahhoz lesz rendelve a makró. Így működhet? Legfeljebb nem az első, hanem a 3. sortól lesz táblázat. És vajon ez fog másolódni, ha a komplett munkalapot másolom, mert beáll még egy kolléga, akinek kell egy?
Próbálkoztam hályogkovács módjára megoldani a feladatot, fix sorszámra már meg tudom oldani (nem biztos, hogy szépen, mert nagyon kezdő vagyok makróírásban, és alapvető dolgokat egyenként kell kigugliznom).
Sub kibont() meddig = 9 vége = 2 For i = 2 To meddig Text = Cells(i, 1).Value counter = Cells(i, 2).Value For j = 0 To counter - 1 Cells(vége + j, 3) = Text Next j vége = vége + counter Next i End Sub
Ez kettőtől 9-ig szépen beolvassa az A oszlopból a szavakat, a B-ből a számokat, és mindegyik szóból a B-nek megfelelő számút ír egymás alá. Valaki segítene átírni úgy, hogy érzékelje, meddig tartanak az adatok az A oszlopban?
Most látom, hogy a belső ciklusban kifelejtettem a value-t, és simán működik, ezek szerint fölösleges is?
Következő problémámra szeretnék megoldást találni már ha lehet. HA() meg lehet oldani de nagyon macerás. Az első képen a doboznál beírom az adatokat, hogy mennyit rendeltem azanosító stb így a státuszban nyomon tudom követni.
És a kérdés.
Meg lehet-e oldani, hogy a 2. képen lévő formanyomtatványba betöltsem az adatokat és azt elmentve PDF-be már küldeném is el a megrendelést.
Hozz létre egy personalt-t, ami tartalmazza a makró(ka)t. Tedd fel mindegyik gépre, és akkor ki tudsz hozzá tenni ikon(oka)t a gyorselérési eszköztárra, amihez rendelhetsz szép pillangó rajzot.
Igaz, a felhasználható rajzok koránt sem utalnak a makró működésére, de mi felhasználók biztosan sokkal butábbak vagyunk, mint az okos fejlesztők, akik ilyen szép ábrákat alkottak nekünk. Többek között ezért nem vagyok kibékülve a 2003-as verzió fölötti Excelekkel, mert kb. 25 kis makróm van a personalban, amik gyorsítják a munkámat, de ennyi csengettyű, felhőcske, stb. ábránál nem tudom megjegyezni, melyik milyen feladathoz van rendelve. Nyilvánvalóan bennem van a hiba.
hát ez így elég fura elképzelés, mert az union és a függvény 1. argumentuma is Range típusú változót vár - azonban ebben a formában ez nem valósul meg.
Attól függ, mit akarsz csinálni. :-) Szintaktikusan helyesnek tűnik. De ránézésre hasonló MaciLaci lenti problémájához, lehet, hogy ugyanazt a dolgot nem vettem észre mind a kettőben.
Megengedsz még egy kérdést? Ha egy feltételt beírok, mondjuk =ha(a1>0;2;3), és az a1-ben szintén hasonló képlet van, attól még teljesülnie kell az első HA függvénynek ugye? Na ez nekem mégsem teljesül.
Konkrétan:
Az A236 cellában lévő függvény:
=HA($I236>0;FKERES($I236;BEFIZETENDŐ!$T78:$X1025;2;HAMIS);"") <---ez működik.
Szuper vagy, köszönöm! Így írtam be: =ha(DARABTELI(a:a;b107)>1;c207;"") és működik! A c207 értéke után ha szeretném hogy megjelenítse hogy "duplikált", akkor mit kell beírnom? Mondjuk így: =ha(DARABTELI(a:a;b107)>1;c207@duplikált@;"") Tudom hogy az @ jel nem megfelelő, ahelyett mit kell beírnom?
A B oszlopba beírod 1-től 200-ig a számokat, azután akár el is rejtheted. A C oszlopba =darabteli(A:A;C1) kerül, vagy =darabteli(A$1:A$200;C1), és erre rátolsz egy feltételes formázást kétféle feltétellel (=0 és >1).
Olyan problémám van, hogy a (2010EXCEL)egy adott oszlopban ( A1:A200) sorszámok (1-200) vannak rendezetlenül. Milyen függvényt tudok írni a mellette lévő oszlopba(vagy makrót beírni), hogy a hiányzó, vagy duplikált számot jelezze nekem mondjuk színnel? Köszönöm előre is!
Az FKERES függv. hogyan tudja kezelni a cellahivatkozást? pl: =FKERES(P215;K:Z;3;HAMIS) ahol a P215 cellában lévő érték alapján keres. Most nekem a függv. #HIANYZIK-al jön vissza mindíg. Ha a P215 helyére az abban lévő értéket írom be, akkor jól működik.
Nekem el oldalra kellene a bekérő rész, de azt megtudom oldani. A nehézség hogy az excel kirajzolja egy oldalra (ha kifér, ha nem 2 ) 2 oszlopba a városokat, de úgy hogy a város és 1-2 információ kiírjon, aztán alá annyi raklap sort hadjon ki (mert oda kell írnom ha kinyomtattam a raklap számát) és ha egy város kész... autómatikusan alá rakja ki a másik várost .. aztán a következőt, szóval mindet...
Én is ilyesmivel fárasztom itt a lelkes embereket ezért magáról a rendszerről kérdeznék inkább mert ha nincs jól átgondolva - mint az enyém akkor lesz ám anyukázás-aztán az excel részére válaszolnak azok akik értenek is hozzá nem úgy mint én :D
Mi az amit Fix-en tudsz?
Tudod-e a paletta típusát városhoz kötni azaz, hogy Bécs az mindig csak olyat rendel ahol egy palettán 80 darab van?
Pl.: Hogy Bécsbe mindig 80-as raklapokat használtok és mondjuk visztek ki 320-at azaz 4 raklapot?
Egy város az többféle szőlő típust is rendelhet?
Esetleg Fix-en tudod-e, hogy az EL Roda az csak München és Bécs-be mehet?
A Supplyer infó az statikus? Tehát Bécsbe visztek akkor csak is Kis Pistához akinek az adatai is statikusak?
Minden esetre az a 11 város nem túl nagy szám. Szerintem minden egyes városnak legyen egy saját munkafüzete. És esetleg utolsónak egy összesítő.
Legördülő listát pedig úgy tudsz csinálni, hogy mondjuk az A1:A15 oszlopokba fogod és beírod, hogy A1:"Beszállító 1" A2:"Beszállító 2".... Ezután rákattintasz arra a mezőre mondjuk a B1-re ahol a listát látni akarod. Adatok/érvényesítés. Megengedve legördülő lista legyen. Forrásnak megadod az "A1:A15"-t vagy egérrel kijelölöd.
Valaki nem tudja, hogy egy Excel dokumentumba beszúrt Word dokumentumot, vagy szövegdobozt hogyan tudok szerkeszthető állapotban tartani lapvédelem esetén?
Ez elvileg remek lenne, köszi :-), de ha lapvédelmet teszek rá, akkor nem lehet beleírni. Egy cellánál tudom, hogyan vegyem ki a zárolást, de ebben az esetben mit lehetne tenni?
Van valami egyszerű módszer két átfedő számlista összefésülésére? Az eredményben mindegyiknek annyiszor kellene látszania, mint a kettő közül a nagyobbik. (Szóval kvázi unió, de az egy listán belüli ismétlődéseket különbözőeknek tekintve.)
a bekérdezést megoldom az "sima" ügy, de fogalmam sincs hogy oldjam meg, hogy ha mondjuk egyik város csak 2 raklapot rendel, másik meg 15öt akkor az excel autómatikusan csináljon annyi sort alá, plusz helyezze el ez alá, vagy ha alá már nem bírja mellé....
Hogy lehet azt csinálni hogy mondjuk 2 választó gomb egymás mellett, (igen / nem) alap esett igen (bepipálva) de egyszerre csak egyet lehet pipálni, szóval ha másik pipa másik üres legyen... ?
1. én erre nem tudok jó megoldást... xls-be kell menteni, nem xlsx-be... a workbook.add-nál ahol megadod a file nevét, ott kiterjesztést is meg kell adni szerintem, talán workbook.saveas(s.xlsx) vagy ilyesmi.
ez is segíthet:
If ActiveWorkbook.FileFormat = xlExcel9795 Then ActiveWorkbook.SaveAs fileFormat:=xlExcel12 End If
2.
a makróhoz lehet tanúsítványt készíteni és a Tools/DigitalSignature-ban hozzáadni.
Adatok, érvényesítés. Valamiért nem enged a varázsló munkalapot váltani, így jegyezd meg a lista helyét, és a felbukkanó ablakba írd be, pl. Munka2!a1:a5.
A segítségeteket szerintém kérni problémám megoldására:
A következőt szeretném megcsinálni excelben:
Azt szeretném ha létre tudnék hozni egy olyan legördülő listát, aminek segítségével az excel másik munkalapjáról tudnék importálni cellákat az adott munkalapra. PL:
legördülő listában szereplő:
1
2
3
4
H egyesre kattintok, akkor az ahhoz hozzárendelt cellákat egy másik munkalapról az általam kijelölt területre tenné be. Lényeg h az adott lapon ne jelenjen meg minden információ, hanem egy listából lehessen kiválasztani, hogy mit akarok olvasni, és miután rákattintok azt megjeleníti.
Tud vki vmi egyszerű módszert vagy leírást ahol találok útmutatót.
Egy óriási kérés/feladat/kérdés -m lenne. Lassan 2 hónapja raktárosként dolgozom. Járt az agyam és előjött egy nagyon jó ötletem. Segítségeteket szeretnék kérni, mert értek úgyan az excelhez, de ennyire nem mélyedtem bele sosem. Gondolkoztam hogyan mivel lenne egyszerű de ötletem sincs már. (korábban csináltam egy sokkal egyszerűbb verziót, de az már elveszett, meg teljesen másmilyenről van szó most)
Vázlat:
Tehát minden nap van rendelés. (Esetünkben szőlő.) Minden reggel jön email, amiben megvannak adva a városok (kb 11, de mikor sok rendelés van több is lehet vagy kevesebb)
Megvan a rendelő neve, és hogy milyen fajtát rendel, milyen színűt és beleírja hány dobozt rendel. A raklapon lévő dobozok száma változó ( 65-80-85-90 )
Arra gondoltam, hogy meglehetne ezt egyszerűsíteni. Egy képet csináltam a vázlatról miről is lenne szó.
Nézd meg kérlek a képet, hogy jobban meglehessen érteni mire gondolok (köszi :))
_________________________________________________
Tehát a jobb oldali részen, bekérjen pár általános információt felül. Gondolok: Rendelőre, a szőlő fajtájára, színére, hogy hány darab egy paletta. (Ezek arra kellenek hogy beállítsa az összes város fajtáját, és a többit meglátod késöbb :P)
Utána a városokat lehessen írni ekképpen:
Város(mondjuk Bécs): __ × 85 ; (ez a teljes paletta, a példában 1 paletta 85 doboz) 1 × __ (ez az rész p.) Összesen: "X" p. (ez összesen a teljes p. és a rész pallettával) Összes: __ doboz. (itt kiírja hány darab doboz ) Use: [X] Yes ; [ ] No (Ez azért kell mert nem biztos hogy minden város rendel)
Ez eddig nem nehéz, ha erről lenne szó nem kérnék segítséget( esetleg annyit hogy lehet megcsinálni hogy lista jöjjön ki és választani keljen, vagy bepipálni, vagy klikkelni ...)
Most jön a nehéz része, amit beírtunk jobb oldalon, azt az excel vázolja (írja) ki a bal oldalon
Beleszaladtam két problémába, ha valakinek van tapasztalata ezekkel kapcsolatban, megköszönöm a tanácsokat:
1.) Egy macro-ban új workbook-ot nyitok. A macro a felhasználóknál xl2007 v xl2010 alatt fog futni, DE sokaknak be van kapcsolava a compatibility mode, vagyis minden új file-juk xl2003 formátumban nyílik meg. A szitu azonban olyan, hogy a makró szinte biztosan több sort fog létrehozni az új workbookban, mint amit az xl2003 formátum kezelni tud. Szóval azt kellene elérjem valahogy, hogy a Workbooks.add automatikusan xlsx file-t hozzon létre, függetlenül attól, hogy az excel compatibility mode-ban van vagy sem. Ha lehetne elkerülném a létrejövő workbook kódból történő mentését (ami megoldaná a problémát, hisz ott be lehet állítani a mentési formátumot).
2.) Néhány test user azt mondja, hogy mikor megnyitják az excel file-t, ami a makrót tartalmazza, akkor megkapják a "szokásos" a makrók veszélyesek figyelmeztetést. Amikor azonban a security alert melletti options-re kattintanak, ahol lehetne engedélyezni a makrókat, a szokásos több opció helyett csak az az egy opció létezik, hogy a makrókat ne futtassák. Szóval amíg a Trust Centerben át nem állítják a makró beállításokat arra, hogy minden makrót engedélyeznek, addíg nem tudják futtatni a makrót. A makrós file nincs levédve, sima xlsm formátum.
Van egy több cellából összevont cellám, amibe jó sok szöveget kell beírni. A folyamatos helyesírás ellenőrzés miatt úgy használnánk, hogy Wordben megírnánk a szöveget, majd átmásolnánk. De....
Az így beillesztett szöveg egy része lemarad. A karakterek száma nem több 32 767-nál, hanem egyes sorok vége lemarad. Szerkesztő nézetben (ha aktív a cella) megvan az egész szöveg, de Enter után lemaradnak a sorvégek.
Na hogy ne csak várjam a segítséget, közben kigyűjtöttem néhány cikket, de ezzel még elég messze vagyok a megoldástól. Ezek még arra is utalnak, hogy saját szalagot is csinálhatok, ami még jobb lenne. De a gomb képe csak kész kép lehet? És annak vajon az aktuális könyvtárban kell lennie? Mennyivel egyszerűbb volt a 2000-esben a beépített gombszerkesztő....
A következő érdekes cikket találtam, amiből megtudhattam, hogy az Office fejlődése annyira csodálatos, és most már olyan végtelenül logikusak gyárilag az eszközszalagok, hogy a user nyugodtan meg is dögölhet, ha testre szeretné szabni őket, mert úgyis csak rontani tudna a tökéletességükön:
Bónuszként oda van írva, hogy további tájékoztatás az MSDN webhelyen, de konkrét link nélkül a kezdőlapra, kezdje beleásni magát, akinek ilyen perverz gondolata van, mint tesztreszabás...
Na ilyenkor mondom, hogy M$ suxxx.
Valaki tudna valami útmutatást adni? A feladat a következő:
A megosztásra szánt munkafüzetben néhány makrót hozok létre (ezt sajnos csak megosztás előtt tudom, de ennyi kényelmetlenség még vállalható).
Ezekhez valamilyen gombokat kéne készíteni, amelyek minden felhasználó számára láthatóak, és a saját munkalapján lefuttatják a makrókat. (Azt hiába tanítanám, hogyan kell a makróablakot előhívni, mert a megosztás után nem hívható elő.) A gombokat elsősorban valamelyik menüszalagon szeretném elhelyezni, de ha a munkalapok tetején sikerül, az is elfogadható. (Mondjuk van 4 dolgozónak a saját nevére szóló munkalapja meg néhány közös, és később még előfordulhat, hogy a meglévők mintájára újabb egyénieket kell hozzáadni.)
Mindenkinek köszönöm a gondolatmeneteket! A gyermekem megcsinálja, soronként pirosra színezi a páros utcákat, utána már könnyű lesz(kb.600 utca). Így is unatkozik itthon a szünetben, legalább gyakorolja az excelt (7éves). Ezért a munkáért nekem kell levinni a szemetet 3 hétig. :)
Makrókban egyébként én is nagyon kezdő vagyok, csak a programozás meg a BASIC terén nem. :-)
Nekem is van egy kérdésem: azt írja az újság, hogy a megosztott munkafüzetben nem jeleníthető meg a makróablak (és tényleg). De ha kreálok egy makrót, amihez sikerült egy gombot definiálni valamelyik eszköztáron "szalagon" (2007), akkor az működni fog? 2000-es Office-ban csináltam saját gombot saját makróhoz, 2007-ben még sose próbáltam.
A másik: jól látom, hogy a megosztott munkafüzet másolásakor a megosztás nem másolódik, és minden alkalommal újra el kell végezni? :-(
Köszi a linket. Tegnap éjszaka, miután SK javasolta az inputbox-szal bekért adat típusának meghatározását, végig azon studiroztam a Help alapján, hogy miképp kell a Type-t megadni. Most a linkedből ezt is megtanultam. De hagy tegyek fel egy kérdést a link első példájával kapcsolatban. Mit jelent a az alábbi rutinrészletben az If a <> False feltétel?
a = Application.InputBox( _ Prompt:="Enter the Rownumber", _ Title:="Delete rownumber:", Type:=1)
Köszi a válaszokat. Még csak elején tartok a makrók megismerésében, így nyilván sok hogyantovább problémával fogok találkozni, amiknél majd fórumhoz fogok fordulni segítségért. A 9 kisebb mint 8 nál az nem esett le, hogy a számértékeket az excel kisebbnek értelmezi mint a stringeket.
A legjobb persze ez lenne, de a személyi törzslap kezelő szoftver feltehetőlen nem ilyen, és feltehetőleg nem a kérdező tervezte, hanem valószínűleg kész szoftver. És az is valószínű, hogy a lakcím kitöltése (a város és az irányítószám kivételével) szabad kitöltésű. És az ilyeneknél annyi a beírási következetlenség, ahány operátor kezébe került eddig az adatfelvitel. Van, aki az 1-es helyett l karaktert ír, régi írógépes szokás szerint, van aki a lakcímben megadja az emelet és ajtószámot, van aki nem, van aki a földszintet nem jelzi (ilyen például a hivatalos népességnyilvántartás is, ahol az "xxx utca 12. fszt 3" úgy néz ki, hogy "xxx u. 12. 003". Szóval annak az eldöntése, hogy mi a házszám, néha akkor sem könnyű, ha az ember látja a lakcím mezőt. Programról nem is beszélve.
És akkor még nem szóltam az utcanevekről. Hogy a Bethlen Gábor utca mikor Bethlen G., mikor csupa nagybetű. mikor van pont a rövidített keresztnév után, mikor nem, mikor marad el az utca, vagy térre való utalás ott, ahol mindkettő lehetne, stb.
Saját tapasztalatom szerint egy néhány százas címlista helyreállítása (szétszedése külön oszlopokba, az azonos utcanevek azonossá tétele, stb.) többnyire sok órás kézi munkát igényelt az excel függvények használata ellenére is.
Egy lapra csináltam meg, de biztosan át tudod írni 2 füzetre.
A zöld hátterű tartomány tartalmazza az egyes költségek módosulását a dátum függvényében.
Hogy könnyebben érthető legyen, 2 segédoszlopot vettem fel az INDEX függvényhez szükséges sor, és oszlop meghatározására. Az F2 cella képletében behelyettesítheted a D2-re és az E2-re való hivatkozást, beírva helyettük a két cella képletét. A segédoszlopok nélküli képlet
Kedves hozzáértők! Egy problémában kérném a segítségeteket, ha van rá egyáltalán valami megoldás. Egy éves költségtervező excel táblám van, ami másik táblákból olvassa be a számításhoz szükséges összegeket. Hogy lehetne megoldani, hogy ha valamelyik költségnem év közben változna, akkor a tábla úgy kezelné a megváltozott értéket, hogy az addigi napok számát szorozná az eredeti árral majd hozzáadná a hátralévő napok számát szorzva az új árral és a kettő összegét jelenítené meg a cellában. Mindezt úgy, hogy csak a segédtáblában lévő értéket kelljen módosítani, majd az összes sorra végrehajtaná a műveletet. Sajnos a makrókhoz elég amatőr vagyok, de minden hasznos tanácsot szívesen fogadnék.
a) Az input előtt el kell dönteni, milyen típusú értéket várunk, és ilyenkor a nyelvi eszköz végzi az ellenőrzést, és eltérő érték esetén hibajelzéssel leáll a program.
b) A felhasználó azt ír be, amit akar, és a programozó utólag kezeli, a nyelvi eszköz (utasítás/függvény/box) ilyenkor nem ellenőriz. Ebben az esetben viszont célszerű mindent szövegnek tekinteni, mert az a legáltalánosabb. Úgy látszik, itt is ez történik. Ha az inputbox a '8' értéket automatikusan számmá konvertálná, csak mert megteheti, szegény usernek esélye sem lenne bevinni a '8' szöveget, amikor direkt ez a célja. Tehát rád van bízva. Természetesen a hibaellenőrzéssel együtt.
Mit gondolsz, miért nem futott nálam a 2007-n, amikor a 2003-n igen? Hát mert a 2007-t még nem buheráltam, mig a 2003-n a másodlagos képletbeviteli mód mód volt bekapcsolva :))).
Ez szerintetek miért van? Az alábbi makró szépen kiírja a a b1:d1 cellákba, 9 nagyobb mint 8. De ha kiktatom a b=8 értékadást, és aktiválom helyette az alatta levő inputboxos sort, és azzal adok 8 értéket b-nek, akkor azt írja ki, hogy 9 kisebb mint 8. ?????
Sub kisebb_nagyobb()
a = 9
b = 8
'b = InputBox("hatar")
If a < b Then c = " kisebb " Else c = " nagyobb " Cells(2) = a
Le kell adnom holnap az excel táblát amiben már annyit segítettetek és hát semmi közük a függvényekhez ezért le akarom azokat védeni. Én úgy tudtam, hogy kijelölöm amit nem akarom hogy lássanak majd kezdőlap/betűtípusnál rányomok a cellaformázásnál. Azután védelem bepipálom a rejtettet(zárolt elől kiveszem ha van). Majd korrektúra lapvédelem megadom a jelszót kétszer és kész.
A 23 munkafüzetnél kb a felénél működik a másik felénél meg az egészet titltja nem csak a kijelölteket ahol a függvények vannak.
Ez mitől van? Vagy egyáltalán így kell mert most már abban is kételkedem(habár a sugó ezt írja)
A legjobb eleve külön mezőben/oszlopban tárolni a külön feldolgozandó adatokat, és nincs probléma. Talán közhely, és ezért túl ritkán beszélünk róla, de az adattárolás a számítógépek korában is ugyanúgy a tervezéssel kezdődik, mint a papír-ceruzás korszakban.
Én azért nem mertem vállalkozni a konkrét megoldás tervezésére, mert sokat foglalkoztam ilyesmivel, és tudok néhány olyan hátulütőről, amit nem tudok megoldani egy általam ismeretlen adatbázisban. Sem VBA-val, sem anélkül. Nem tudok jó algoritmust arra, hogyan kezeljük az október 6-a, vagy október 23-a utcát, a március 15. teret, stb., ahol a program nehezen dönti el, hogy ez házszám-e, vagy az utcanév része. De, ha azt feltételezzük, hogy a cím végén van a házszám, akkor az is gond lehet, ha van lépcsőház szám. Nem is beszélve az emeletről, amit sokszor írnak arab számmal. És akkor még ott van az ajtószám.
Nagyon megköszönném, ha a 18409-ben bemutatott rutint valaki átírná, hogy a 2007-es alatt is müködjön. Mert excel 2003 alatt fut, de a 2007 alatt süket.
Nagyon szépen köszönöm, sokat segítettél!!!! Az apróbb problémákat majd valamilyen algoritmussal megcsinálom (4/1 számot 41-nek, 2/A számot 2-nek írja és az utcákat is másolja (Ady u. 4). Amit írtál az nekem nagyon nagy segítség.
Utána nézve úgy találtam, hogy a 2007-esnél is megváltozik a munkalap indexelése, ha áthelyezzük. De ez kevésbé okoz problémát, mert viszonylag ritkán kerül rá sor. A 2003-asnál az zavart meg, hogy a munkalapokat jobbról balról tölti be, az indexelés meg balról jobbra történik. A 2007-esnél hálistennek mindkettő balról jobbra halad.
Azt hogyan lehet megcsinálni, hogy amég a függvény nem lép életbe addig a cellákba 0 ír és azt eltüntetni, hogy ne jelenjen meg. Úgy rémlik mintha olvastam volna valahol de nem találom.
Nem ismerem a Solvert :D de neten sztem utána tudok nézni. Nem tudom azt sem, hogy kölcsönösen egyértelmű e. :D Azért jelenítettem meg az egyik képbe a függvényeket, hogy lehessen látni csak sajnos nagyon picibe rakja be :D
Azt szeretném megkérdezni, hogy van az alábbi két munkalap és táblázatok. Meg lehet az csinálni, hogy visszafele számol a dolog? Tehát a jobb alsó sarok a végeredmény pirossal van szedve, és ha oda beirom amit szeretnék akkor visszafele kiszámolja az egész táblázatot, tehát visszafele is működi az egész :D Vagy milyen esetekben van? Meg lehet csinálni ezt a táblázatot is így?? Köszi
Egy kis segítséget szeretnék kérni, ha lehet. Személy törzsben a lakcímet (házszámonként) szét kell válogatni páros illetve páratlan oldalra. Egyik oszlopba a páros házszám, a másik oszlopba a páratlanok. Ebben kérném a segítségeteket. Előre is köszönöm!
Azt megadtam, ezzel a kóddal sikerült korrigálnom:
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A2")) Is Nothing And Range("A2").Value = "Start" Then Countup End Sub
Viszont most ismét elalkadtam, egy változót kellene beállítani hogy csak egyszer indítsa el a visszaszámlálót. Mert ameddig kint van "start" az A2 cellában addig folyamatosan elindít egy visszaszámlálót és így pl. 5 percet 10 másodperc alatt visszaszámolja :)
Sziasztok! Kellene megint egy kis segítség a készlethez. Remélem nem untok még :)Van a programon belül egy olyan opció, hogy exportálni tudom az árút amit elvitt a kamion egy txt fileba. Ez a következő képpen néz ki
[Consignor]22451;SUP;Hungaria Tolllfeldolgozo Kft.;Vasarhelyi S. u.35;5800 Mezokovacshaza;HUNGARY;
[Receiver]
236;DT;Érkezési cím;
[Lines]
1;1016742;1;Termék 1 ID;Termék név 1;Article;db szám;
2;1016742;2;Termék 2 ID;Termék név 2;Article;db szám;
3;1016742;3;Termék 3 ID;Termék név 3;Article;db szám;
6;1016742;4;Termék 2 ID;Termék név 2;Article;db szám;
7;1016742;5;Termék 2 ID;Termék név 2;Article;db szám;
Rendelésenként így néz ki strukturálisan. Azzal nincs is gond hogy a [Lines] utáni részt hogyan illesszem be egy Munkafüzetre. Ebből fontos infó csak a termék ID termék név és darabszám. De a program mindig export.txt-be rakja függetlenül, hogy az első rendelés vagy az ötödikról van-e szó.De ha felülírom az első export.txt-t az ötödikkel akkor csak az ötidik export.txt adatait veszi fel. Nem lehetne-e valahogy összefűzögetni az export.txt-t vagy megmondani az Excelnek, hogy pl az Export mappán belül lévőket mind vegye figyelembe. Mert akkor a mappán belül csinálnék export1.txt export2.txt... De az már kicsit fárasztó, hogy az export.txt-be folyton másolgassam a többi elvitt árú [Lines] utáni részét. Szóval szeretném valahogy egy kicsit autmatizálni ha nem kell hozzá VB.
A feltételes formázásnál az első egyenlőségjelet úgy értelmezd, mintha az lenne odaírva, hogy HA.
A darab2 függvény megszámolja, hogy hány cellában van valamilyen adat (a típusától – szöveg, dátum, szám, logikai érték – függetlenül) a paraméterében megjelölt tartományban.
Habár valahogy most nem igazán akarom megérteni de dolgozom rajta, hogy 100%-os legyen a feldolgozottság! De már az egy jó jel, hogy meg lehet valósítani :D
Egy kis segítséget szeretnék kérni. Egy programot használok amely adatokat küld egy excel munkalapra másodpercenként (office 2003) Erre a munkalapra bebiggyesztettem A1re egy visszaszámlló makrót amely akkor szeretném hogy elinduljon automatikusan ha az A2 mező "START" szövegre változik! Megoldható valahogy? Előre is köszi.
Visszaszámló makró:
Sub Countup() Dim CountDown As Date CountDown = Now + TimeValue("00:00:01") Application.OnTime CountDown, "Realcount" End Sub Sub Realcount() Dim count As Range Set count = [A1] count.Value = count.Value - TimeSerial(0, 0, 1) If count <= 0 Then MsgBox "Countdown complete." Exit Sub End If Call Countup End Sub
Egy kicsit elvont ötletben kellene a segítségetek!
Az egyik cellában van, hogy hány db terméket gyártottunk le. Ezek palettán vannak. Egy palettán 30db termék van. Meg lehet-e valósítani az Excelben, hogy egy kijelölt terület mondjuk A1:I3ban egy-egy cella egy palettát jelölne és ha megtöltöttünk egy palettát ami akkor egy cella beszineződik. 31dbnál elkezdődik a következő cella szinezése...
Szerintem pozitív választ kaptál, nincs mitől félned. Jelöld ki az x munkafüzetnek azt a tartományát, aminek a formátumát másolni szeretnéd y-ba, és tedd a vágólapra (Ctrl + c). Ezután az y munkafüzetre átmész, de nem beilleszted, hanem az irányított beillesztést kéred és a formátumot másolod. Az oszlopszélességet kivéve minden átmegy. Ha az oszlopszélesség is kell, akkor azt külön kell kérned.
Féltem ettől a választól. Nekem azért lenne rá szükségem, mert két (más struktúrájú) munkafüzetbe kellene felvinnem (részben) ugyanazokat az infókat, amiket színnel jelölök. Tehát a feladat tulajdonképpen az lenne, h ha x munkafüzetben a b2 piros, akkor legyen már magától piros az y munkafüzet c3 cellája is.
tudtok segíteni, hogy lehet egyik munkafüzetből formátumot behivatkozni egy másik munkafüzetbe? Konkrétan pl. x munkafüzet b2 mezőjének kitöltése (mondjuk piros) egyezzen meg az y munkafüzet c3 mezőjének kitöltésével (legyen az is piros).
Már kérdeztem munkafüzet védelemmel kapcsolatban de nem igazán értem. Van egy 6 Munkafüzetből álló Excel 2010-es táblázatom. Ebből 4 Munkafüzeten csak a számolásokat végzi el. 2 Munkafüzetre van tematikusan gyűjtve(csak sima hivatkozással a Munkafüzet1-Munkafüzet4 között valamelyikre) azok az adatok amikre szükség van.
Nah most el akarják kérni ezt az excel töllem. És lehet-e olyat csinálni, hogy jelszóval levdem a Munkafüzet1-től Munkafüzet4-ig, hogy csak az nyissa meg egyáltalán aki tudja a jelszót. A többinek rálátása se legyen.
Ha ilyet meg lehet csinálni akkor szőkenősen le tudnátok írni lépésről lépésre?
A 2003-nál a Sheets(x) a füzetben lévő sorrend szerint változik. Egy újonnan megnyitott füzetben a Munkalap1 a sheets(1). Ha a harmadik lapot az első elé másolod, akkor a sheets(1) a Munkalap3-ra vonatkozik. Az x értéket a lapnak a füzetben elfoglalt helyének megfelelően kell megadni.
Abban az esetben, ha várható a lapok egymáshoz viszonyított helyzetének a módosítása, érdemesebb a nevükkel hivatkozni rájuk.
Nézd meg makrórögzítéssel, hogy ezeknek a paramétereknek a beállítása miben tér el egymástól a régebbi, és az újabb verzióban. Valószínű, hogy az eltérés miatt lesz más a nyomtatás külleme.
Utóbb néztem, hogy az xls és xlsx mentési útvonala megegyezik, nincs szükség az utvonal_1 változóra.
Köszi, latom mit valtoztattal. Kozben nekem is sikerult mukodesre birni, szerencsére mukodik ugy ahogy. MOst ujabb ertetlenseggel allok szemben. A Muvelet az egy makro, ami csak formaz, de valamiert a nyomtatasi kepet nem erti, nem fut hibara, csak egyszeruen nem teszi landscapere es nem lesz 1 oldal szeles. Megneztem a kodot, ott all benne feketen feheren, hogy ugy legyen, de nem.
Ha a muvelet makrot egymagaban hasznalom, ugy minden rendben van. mi lehet a gond? A tobbi valtoztatas megmarad, tehat azt hiszem, nem a mentes hianya a problema.
Makrószakértőktől kérdezném, hogy mi abban a logika, illetve hogy miért jó, hogy ha egy Munkafüzetben van 3 munkalap, akkor a worksheets(1) a Munka3-ra utal. És ha megnyitok egy negyediket, akkor ezentúl a Munka4 lesz a worksheets(1). Ami miatt természetesen átszámozódik a többi munkalap is. Valamiért biztos így célszerűbb, mintha a megnyitási sorrendet követné az indexelés, és stabil maradna a munkalaphoz tartozó index, de mi az?
ChDir utvonal filenev = Dir(utvonal & "*.xls", vbNormal) Do If filenev <> "." And filenev <> ".." Then Workbooks.Open Filename:=filenev Set WB = ActiveWorkbook
'Műveletek
filenev = Left(filenev, Len(filenev) - 4) '.xls levágása WB.SaveAs Filename:=utvonal_1 & filenev & ".xlsx", FileFormat:= _ xlOpenXMLWorkbook, CreateBackup:=False WB.Close End If filenev = Dir() Loop Until filenev = ""
Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub
A hibauzenet az, hogy nehany tipusu karakter nem lehet a filenevben. gondolom a "Dir(path & " .xlsx", vbNormal)" nem tetszik neki, mintha azt gondolna, hogy ez a filenev maga
biztosan aprosag, de nem jovok ra mi a hiba talan tudtok segiteni.
Köszönöm a válaszokat mind a kettő, jól müködik. A tied is pimre! Köszönöm a segítséget mostmár tudom, hogy így kell megoldani legközelebb. Azt hittem az elején, hogy valamit elnyomtam és azért nem tudok részleges sort beilleszteni, de mostmár tudom nem így van! Köszönöm szépen mindenkinek még egyszer!! :D
Ez most éppen borsó kárrendezése lenne! Akkor végül is úgy, hogy ez a korrektúre szét ne essen úgy nem lehet berakni a plusz sort. Vagy egy üres sor bánja ami két táblázat között van! Szerintem azt fogom csinálni, hogy egymás alá rakom a táblázatokat kivágással vagy ilyesmivel, megcsinálom amit akarok teljes sor beszúrással és ha készen van visszarendezem a táblázatokat a ostani állapotba. Gondolom így a képletek azért nem úszank el és alkalmazkodnak az ide oda pakoláshoz. :D
ezt mondom. ezt máshogy nem lehet, csak ha beszúrod (pl ahogy jozsef irta) és utána pedig visszacsinálod ugyanezt törléssel - csak a megfelelő helyen - hogy visszaálljon a rend
Ettől függeltenül ha ragaszkodsz ehhez az elrendezéshez,abármit csinálsz, az alsó zöld tábla szét fog esni. Az alsó narancssárgán még lehet úgy segíteni, hogy B12:K12 tartományt jelölöd ki.
Gondolom beszúrás eltolás lefelé és akkor alatta a sort kitörlöm. Na most alatta is van egy táblázat és mellette is.
Oda kellene egy plusz sor ahol ki van jelölve. Hüvelyosztályozás tábla 12. sor! Azért ez az elrendezés mert ipadra szeretném és így könnyebben átlátható sztem és nem kell görgetni állandóan.
Olyan problémám van, hogy egy munkalapon több táblázatom van és szeretnék beszúrni vagy törölni sosrt de nem az egészet hanem mondjuk azt amit kijelölök és úgy, hogy nem csúszik el az egész jobbra vagy akármerre. Az egyik táblába szeretnék beszúrni sort de csaka táblázat szélleségébe mert a mellette lévőt nem akarom módosítani és az eltolás se jó mert az alatta lévő különböző szélességű táblázatok eldeformáslódnak. Légyszíves ha tudjátok, hogy lehetne megoldani írjátok le! Ugyan ez van törlésnél is!
Sziasztok, ezt a saveas kerdest kozben sikerult elintezni, de most valamiert mas gondja van. Kapok egy hibauzenetet, hogy nem talalja a file-t, pedig ott van ahol eddig, es meg is mondja, melyiket nem tudja megnyitni, azaz megis oda talal, es tudja is mit kellene megnyitni, de valamiert hibara fut. Ezzel talalkozott mar valaki esetleg?
SZia köszi szepen, nagyon jol mukodik is. Csak egy dolgot szeretnek valtoztatni rajta, hogy a WB.save helyett Saveas legyen, de mindig maradjon az eredeti filenev, csak az MHT formatumot cserelje ki xls-re. Ebben tudnatok meg segiteni esetleg?
Köszönöm, de a válaszod egyből felvetett egy új problémát, mégpedig a dupla klikket hogy lehet letiltani . Biztosan rosszul gondolom végig az egész dolgot, mert mindig lesz valami amin bukik az egész elképzelés. Arra viszont kíváncsi lennék (mivel nagyjából tudod az elképzelésemet), hogy te hogyan oldanád meg a dolgot.
Azért a dupla klikk tiltása kellene. Köszi a segítséget.
Hát látom hogy nagyon ragaszkodsz az ESC-hez pedig hidd el hogy ebben a táblázatban a felhasználónak nincs szüksége rá. A normál képernyő módra csak nekem van szükségem ha a VB-ben valamit megakarok változtatni (ezért kellene jelszóval visszalépni), és egyébként ha kilép ebből a fájlból minden vissza van állítva normál üzemre. Ha tudod hogy hogyan kell ki/be kapcsolni, légyszí írd meg.
ChDir utvonal filenev = Dir(utvonal & "*.xls", vbNormal) Do If filenev <> "." And filenev <> ".." Then Workbooks.Open Filename:=filenev Set WB = ActiveWorkbook
'Műveletek
WB.Save WB.Close End If filenev = Dir() Loop Until filenev = ""
Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub
Köszi! A celle formátuma "Általános" kategórián van, amely, a leírás szerint, nem tartalmaz semmilyen különleges számformátumot. Ha a "szám" kategóriát választom, akkor is marad az eredeti "hiba". Valahol mélyebben van beállítási lehetőség?
Sziasztok! Segítséget kérek excel beállításban. Ha egy cellába számot írok, akkor a tizedesvessző két hellyel balra kerül. Magyarul, ha 12-őt akarok írni akkor 0,12 lesz belőle, ezért 12-őt és utána még két nullát kell begépelnem, ha az eredeti 12-t szeretném a cellában látni. Ez új üresen megnyitott táblázatoknál is így van.
talaltam a neten egy par olyan macrot, amivel egy adott folderben levo osszes filet meg lehet nyitni egyesevel, vegrehajt egy elore meghatarozott feladatsort (lefuttat egy masik macrot) majd elmenti, bezarja, es kezdi elolrol. Sajnos nalam egyik sem mukodik, valamiert Unsupported Objectet kapok a Application.Filesearch sorra.
A path persze a sajatom, az kicsereltem, de addig sem fut le a makro. Esetleg tudjatzok hol lehet a hiba? 2007es Excelt hasznalok.
Ez az egyik, de alapvetoen mindegyik ugyanitt akad el.
Kösz elore is a valaszokat.
Sub openfilesInALocation() Dim i As Integer, wb As Workbook With Application.FileSearch .NewSearch .LookIn = "C:Documents and SettingschrisfMy Documentsvbatest" .SearchSubFolders = False .Filename = "*.xls" .Execute For i = 1 To .FoundFiles.Count 'Open each workbook Set wb = Workbooks.Open(Filename:=.FoundFiles(i)) 'Perform the operation on the open workbook
wb.Worksheets("sheet1").Range("A1").Select
'Save and close the workbook wb.Save wb.Close 'On to the next workbook Next i End With End Sub
Az ESC-t azért akarom kikapcsolni, hogy a felhasználó ne tudjon kilépni a teljes képernyős módból, és ezért lenne jó még ide egy olyan rész, ami egy jelszóval viszont lehetőséget adna a kilépésre. Sajna ebben is a te segítségedre van szükségem. Ezt a két rutint a ThisWorkbook mappába tegyem?
Nem tudom a helyes formátumot, meg az ESC billentyű figyelését. Ugyanez a helyzet a Kilépés gombra való kattintáskor. Ha erre tudnál egy mintát írni, meg hogy ezt hova kell pontosan berakni (ThisWorkbook mappába?), azt megköszönném.
A teljes méretre váltást megtudom oldani, a problémát az jelenti, hogy egy fájl betöltése után hogyan lehet egy makrót automatikusan elindítani. Ebben az automatikusan induló makróban lenne a teljes képernyőre váltás (Application.DisplayFullScreen = True), és az ESC billentyű tiltása (ezt nem tudom). Ezek a dolgok azért kellenek mert egy teljesen automatizált táblázatról van szó, amiben minden funkció gombokhoz van rendelve - hibaüzenetekkel, és ezért tartom feleslegesnek a szerkesztőlécek megjelenítését (ami nagyon zavaró ez esetben). A csúcs megoldás még az lenne, ha kilépésnél megint elindulna automatikusan egy makró, ami mindezt visszaállítaná, mivel ha teljes képernyős üzemmel lép ki, akkor a következő excel indítás is teljes képernyős lesz, ami szerintem szintén zavaró főleg olyan embereknek, akik csak felhasználók és nem nagyon értenek hozzá.
Felhasználó felületről elérhető a teljes képernyőre átkapcsolás, tehát makrórögzítő bekapcs... (de külön-külön is lehet kapcsolgatni a felületeket)
Hogy a visszaállítást miért akarod megakadályozni azt te tudod, de van egy olyan érzésem hogy igazából a munkalapot szeretnéd ezzel védeni - de arra meg ott van a van a munkalapvédelem funkció...
Az megoldható, hogy egy Excel fájl betöltése után automatikusan teljes képernyőre váltson át (tűnjenek el a szerkesztő lécek), az ESC billentyűt kikapcsolni, és a visszaállítást egy billentyű kódhoz, vagy jelszóhoz rendelni. A fájlban vannak makrók, úgyhogy ezt is egy makróval kéne megoldani ami automatikusan elindulna. Köszönöm a segítséget.
Körlevélkészítés megy, ha 1 sora van mindenkinek, de azt nem tudom megcsinálni, ha 1 partnernek több sorából is kell adat.
Azaz Gipsz Jakabnak kellenének az adatai, és ha már Taknyos Piroska jön az exelben, akkor az ővé kerüljön a következő lapra. Plusz kamat és tartozás összesen és mindösszesen is kellene, ahogy a képen van. Nem tom jobban leírni:D
Az excel úgy néz ki, hogy soronként az adatok 1 partner azonosítóhoz (A oszlop) tartoznak, de változó, hogy egy partnernak mennyi sora van - függően attól, hogy mennyi számlával vannak elmaradva.
Amire szükség lenne a Wordben:
- egy oldalon egy partner adatai
- Név és cím
- felsorolva tételesen amennyi sora van: a számla adatok, számlaszám, összeg, kamat, stb, ráadásul még kamat és tartozás összesen is kellene.
1. megoldható-e, hogy a táblázatban a legalsó sor a diagramon is legalsó legyen? (Legfelső lesz)
2. megoldható-e valahogy kényelmesen, hogy ha beszúrok egy új oszlopot, akkor a diagramon is megjelenjenek az adatai? Hiába írom át az adatatrtomány, kategóriacímkék hivatkozásait relatívra, mindig visszaírja abszolútra, és az oszlop beszúrásakor két tartományra bomlik, ami a beszúrt oszlopt nem tartalmazza. Nem kell Excelben legyen a megoldás, bármilyen számolótábla jó. Excel2007-et és OpenOffice 3.2-t próbáltam, azok ilyenek.
Na kiokumláltam, ha már senki senki sem reagált az 18360-ra. Tehát a stringnek összeszerkesztett hivatkozást az alábbi makró írja át valódi hivatkozássá:
Van egy táblázatom, amelyben többek között partnerek vannak felsorolva, és azokhoz tartozó - minden partnernél más - elmúlt (partner felvétel) dátum is szerepel. (pl.: 2012-06-01) egy kötelezettség miatt.
Hogy lehet képlettel meghatározni, hogy mindig a következő havi kötelezettség dátuma (ami a példa szerint ez: 2012-08-01, a dátum napjához igazodik minden) mennyi nap múlva lesz? Tehát az legyen az eredmény a példámat követve, hogy a 2012-08-01 az 4 nap múlva lesz!
Sub Muveletek() Dim lap%, lapnev$, WS As Worksheet
For lap% = 1 To Worksheets.Count Set WS = Sheets(lap%) lapnev$ = Sheets(lap%).Name Select Case lapnev$ Case "első", "ötödik" WS.Range("B1") = WS.Range("A1") * 2 Case "második", "negyedik" WS.Range("B1") = WS.Range("A1") / 2 Case Else WS.Range("B1") = WS.Range("A1") * 1500 End Select Next End Sub
Arról volt szó, hogy 1200 rekordban van adat. Persze lehet az 1200 különböző, nem összefüggő tartományokban, de ezt valószínűleg közölte volna a kérdező.
Hogyan lehet dolgozni a munkalapok nevével? Van valakinek olyam mintakódja, ami végigmegy a füleken, és a nevüket feldolgozva dönti el, milyen műveleteket végez?
Boldog ember vagy! A kettest, mint látható lejjebb, kipróbáltam itthon az Excel 2000-esen, és működik. Az ismétlődő értékek viszont, gyanítom, csak 2007-től vannak.
Nem tudom, miért nem akarsz cellába képletet írni, mikor az olyan jó érzés, és ráadásul egy csomószor sokkal célravezetőbb a makrónál, de ilyen esetben szerintem igen hasznos is, ha makrórögzítővel követed, és máris van egy nyers Basic-kódod, amiből ki lehet indulni.
ha egy reportot akarunk futtatni akkor harom kulonozo rendszerbol kell osszeszedni az adatokat hozza, persze mind kulon formatum tele hibas regiokodokkal, etc...
nem tudom milyen tipusu az adatbazis, de ennek nincs is jelentosege, mivel az 50 sorokra felosztott fileokkal meg mas dolgozik, adatokat visz be es utana van feltoltve, tehat excel formatum kell. a lenyeg az, h ezzel havonta van szivas..
Nem ertek sajnos vbhez de van egy problemam ami megoldasra var...
van egy excel file amiben van mondjuk 1200 sor. ezt a filet kellene szetbontani kulon fileokra ugy hogy minden egyes bontott fileban 50 sor lehet maximum..
tehat
sor1-sor50 - file 1
sor51-sor100 - file2
sor101-150 - file3
kicsit gaz 1200 sort 50essevel masolgatni..
az lenne jo ha a vb-ben meg lehetne adni a fileok nevet is
Sh-ctrl enter, és kívül lesz a kapcsos zárójel. Megleptél, mert ez skalár értéket ad, és a tömbképletekkel én még csak tömbtípusú eredménynél találkoztam, de most tanultam valamit. Ez tetszik!
1. Sorbarendezed az oszlopot - majd összehasonlitod mindegyik cellát a következővel és megjelölöd hogy azonosak-e vagy sem, majd majd vissza rendezed az oszlopot.
Az indirekt függvény valóban jó, de ha bezárod a forrásfájlokat, a hivatkozásaid #HIV re változnak, ami nem túl szerencsés. Ezért ajánlok egy némileg körülményesebb, de még mindig egyszerűbb módszert, mint a hivatkozások egyenkénti beírása. Megszerkeszted a hivatkozások stringrészleteit, majd összefűzöd őket, így kapsz valami ilyesmi formulákat, hogy ‘=’C:Documents[file1.xlsx]Munka1’!D22. stb. Majd most jön a babrásabb rész: Az összefűzött stringeket értékké alakítod (CTRL+C majd special értékbeillesztéssel), majd egyenként levágod róluk az idézőjel prefixet az F2-Home-Del-Enter billentyüzéssel. És kész.
A prefix levágások elvben egyszerűen makrósíthatók, de nekem nem sikerült, mert a hivatkozás képletté alakításakor az excel alapból nem a folyamatot, hanem a makrókészítéskor kapott képletet tárolja el, és azt írja be mindenhova. De vannak itt magroguruk, akik valszeg tudják hogyan kell a képletté alakítást dinamikusan definiálni. Én is kiváncsi lennék rá.
Szövegeket tudsz konkatenálni az & jellel vagy az összefűz() függvénnyel. A kész szövegből talán az indirekt()? csinál hivatkozást, de nem tudom, másik munkafüzetre is jó-e.
Van egy oszlop amiben referenciaszámok találhatók (1,2,3,4,.... stb). Az oszlopban található referencia számokhoz tartozik egy adat, amely a referencia számokkal ellátott xlsx file-ban találhatók. Szóval a 26-os számhoz a 26.xlsx-ben lévő D22-es cellában lévő adat tartozik. Mindenegyik file struktúrája azonos, szóval mindegyik file-ban a D22-es cellában van a kívánt adat. A kérdésem az lenne, hogy hogyan lehetne erre a legegyszerűbben hivatkozni? Nem szeretném egyenként bepötyögni mindegyik cellába, hogy =[26.xlsx]Sheet1!$D$22. A 26 helyére nem lehetne beírni valahogy a cellahivatkozást? Pl. =["A2".xlsx]Sheet1!$D$22, ahol az A2 a cella értéke lenne.
Nézd meg a súgóban a csoportba foglalást, vagy tagolást. Ezzel ugyan nem lesznek a napjaid egy legördülőben, de prímán alkalmazható a napi tételek kibontására, bezárására. Csinos külsőt is adhatsz neki a fő- és alsorok formázásával.
Tovább gondolva a problémádat, egyre határozottabban úgy érzem, hogy a megoldására az FKERES sokkal praktikusabb, mint HIPERHIVATKOZÁS. Akkor a NEVEK adásával sem kell bajlódnod, elég ha minden rekordot egyedi azonosítóval látsz el az 1.sz táblázatodban. És amikor beszúrsz egy új sort, az is kap egy azonosítót. Sőt, a későn a kapott rekordot sem kell beszúrni, nyugodtan írhatod a táblázat folytatásába. Aztán bármikor ha szükségesnek látod,sorba rendezheted mondjuk dátum szerint.
Ha jól értem a problémádat, akkor megoldás lehet, hogy nem cellára hivatkozol, hanem NÉV-re. Ehhez a hivatkozandó cellákat elnevezed, ami elég gyorsan megy a NÉV létrehozása (2003) ill. a NÉV Kijelölésből új (2007) paranccsal. A Név kezdetként lehet akár a cella hivatkozása is, elé bigyesztve 3-4 betüt, az utólag beszurtaknál egy kicsit variálsz rajta.
Esetleg érdemes lehet még az 1-2 táblázatot kiegészíteni egy-egy FKERES függvénnyel, amellyel az adott összefűzött formátumra a 3. táblázatban keresel rá. Ha helyes eredményt ad, ok, ha viszont hibát jelez, akkor hibásan írtad be, így rögtön ki tudod javítani, és így elkerülöd, hogy a 3. táblázat hibás adatokat tartalmazzon.
Én 3 táblázattal oldanám meg a cipőkészlet problémát. Az első a készlettáblázat, ami folyamatosan bővül ahogy töltöd fel a készletet. A második az eladási táblázat ami szintén folyamatosan bővül a rendelések szerint. E két táblázat minimum 5 oszlopból állna: cipő fazonja, színe, mérete, és ezek összefűzve (tehát pl: edzőcipő, barna, és 42 vmint összefűzve edzőcípőbarna42), az 5.-be meg az adott feltöltés/rendelés darabszáma. E 2 táblázatot folyamatosan bővíted.
A harmadik táblázat lesz az ami téged érdekel, a pillanatnyi készlet. Ez tartalmazza az összes cipőkombinációt szép sorban, fazon, szin, méret, ezek összefűzve, és a pillanatnyi darabszámuk. Az első 4 oszlopot értelemszerűen te adod meg, az 5-ikbe pedig beírod az alábbi szumha kivonást, amihez tételezzük fel, hogy a táblázat oszlopai az 1-2-3 munkalapokon az ABCDE oszlopokban vannak, a D-ben az összefűzött formátum és az E-ben a darabszám. Ekkor a szumha kivonás képlete:
A képletben a Dx-ből az x az adott cellasor sorszáma. Az első szumha függvény a beérkező cipőket összegzi kombinációnként, a második meg a kimenőket, a különbségük meg értelemszerűen a pillanatnyi állapotot.
A forgalomtól függően időnként célszerű lehet a felesleges rekordok törlése. Ekkor az 3. táblázatot megteszed 1. táblázatnak is (a darabszámokat fixálva) a 2. táblázatból meg törlöd az adatokat.
Mindegyik táblázatra érdemes a helyben szűrést is rászerkeszteni, mert akkor csak beírod a kritériumcellába ill. cellákba hogy mire vagy kíváncsi, és már mutatja is. pl. a darabszáméba, hogy <3, akkor kilistázza az összes cipőféleséget amelyikből kevesebb van mint 3.
egy weblapról szeretnék táblázatot importálni, viszont nem találom a "table id"-t. milyen makróval tudnám megtalálni, pontosabban importálni a kérdéses táblázatot?
a következő makrot találtam, viszont syntax errort kapok az
indításkor....
Sub GetTableRow()
Dim ieApp As InternetExplorer Dim ieDoc AsObject Dim ieTbl AsObject Dim i AsLong, j AsLong
‘Create new IE instance Set ieApp = New InternetExplorer
‘Go to url ieApp.Visible = True ieApp.Navigate sURL
‘Wait for page to load Do DoEvents LoopUntil ieApp.ReadyState = READYSTATE_COMPLETE
Set ieDoc = ieApp.Document
‘Loop through all the elements in the document via the ‘all’ property For i = 0 To ieDoc.all.Length – 1 ‘Only look at tables If TypeName(ieDoc.all(i)) = “HTMLTable”Then Set ieTbl = ieDoc.all(i) ‘I want to check the 3rd row (.Rows(2)) and will get an error if there ‘are less than three rows. If ieTbl.Rows.Length > 2 Then ‘Here’s the text in the first cell of the third row that tells me ‘I have the right table If ieTbl.Rows(2).Cells(0).innertext = “15-yr Fixed”Then ‘Loop through the cells and write to the sheet For j = 0 To ieTbl.Rows(2).Cells.Length – 1 Sheet1.Cells(1, j + 1).Value = ieTbl.Rows(2).Cells(j).innertext Next j EndIf EndIf EndIf Next i
‘Alternative method – when you figure out that i = 132 in the above loop ‘you can refer to that element directly. But beware, web sites change and ‘they don’t have the decency to even call you.
‘ Set ieTbl = ieDoc.all(132) ‘ For j = 0 To ieTbl.Rows(2).Cells.Length – 1 ‘ Sheet1.Cells(1, j + 1).Value = ieTbl.Rows(2).Cells(j).innertext ‘ Next j ‘ ieApp.Quit Set ieApp = Nothing
Erre így én is gondoltam, csak én külön munkafülön szeretném vezetni, hogy melyik vevő, mikor, melyik cipőt, milyen színben és méretben vette. És ehhez kellene valami függvény, hogy ha beírom hogy pl. 1-es cipőt, fehér színben, 37-es méretben, 1 db-ot vesz, akkor a másik munkafülön lévő készlet táblázatból ezt a típust és méretet automatikusan levonja.
Accessen is gondolkodtam, de ahhoz még ennyire se értek :)
Bár mondjuk azon is érdemes elgondolkodni, hogy 280 féle tételt hogyan tudsz áttekinteni a képernyőn. Lehet, hogy inkább Accessben fognék hozzá, ahol célzott lekérdezéseket és jelentéseket lehet csinálni. Végül is a végeredmény kifér egy képernyőre, 14*20-as elrendezésben, csak a szállítmányok meg a megrendelések kezelésehez kell sokat rángatni a gördítősávot.
Persze kihagytad a beérkező szállítmányokat, különben hamar üres lenne a boltod. Valahol vezetned kell a beérkező cipőket is.
A képlet az, hogy mindegyik fajtából van
a) egy nyitókészlet (fajtánként egy cella)
b) beérkező szállítmány (mondjuk fajtánként egy oszlop valamelyik fülön, ami nem feltétlen folytonos, ha a sorok a dátumok, és egy nap csak kék cipő érkezett, zöld meg nem)
Egy kis segítséget szeretnék kérni mint mondhatni amatőr exceles.
Egy készlet nyilvántartást szeretnék készíteni, ahol az egyik munkafülön vezetném az aktuális készletet a termékekről (20 féle cipő, mindegyik cipő kétféle színben, színenként 7 méretben). A második munkafülön pedig vezetném a beérkező megrendeléseket.
Azt szeretném, ha a megrendelés kitöltésével az első munkafül automatikusan frissülne és levonná az eladott mennyiséget a készletből.
Biztos nagyon egyszerű a megoldás, de én nem értek hozzá :(
Konkrétan egy hétre kell pénzügyi elemzést készítenem. Az adott héten belül napokra is bontanom kell. A hét adatait tartalmazó oszlop fejlécében legördülő listaként szeretném elhelyezni a napokat, és azokra kattintva elérhetővé tenni a naponkéni bontás adatait,amit vagy agy külön munkalapon, vagy szomszédos oszlopként helyeznék el, ha lehetséges. A legördülő lista elhelyezéséig vagyok képben, utánna már sajnos nem tudok megoldást.
Azért köszi! Akkor valószínű megoldom hivakozással, egy külön munkalapon. Lenne még egy kérdésem: legördülő lista adataihoz lehet hivatkozást csatolni?
Segítséget szeretnék kérni. A problémám a következő: adott egy adat tábla amiből egy másik munkalapon készítek egy kimutatást. Egy harmadik munkalapon az elkészült kimutatás adataival kell dolgozzak. Ezt én kimutatás adat függvénnyel oldottam meg. A gondom az, hogy a 2. munkalapon, ahol a kimutatás szerepel, elérhetőek a "háttér" adatok dupla kattintással. Ugyanez a 3. munkalapon már nem működik. Nem lehet megoldani valahogy, hogy a kimutatásból vett adatokra kattintava a 3. munkalapon is lássam az alaptáblám (1.munkalap) adatait?
na megnéztem, de nem küldöm vissza mert a védett munkalap miatt nem engedi kiszedni a személyes információkat. Makró nem volt ebben amit küldtél. De nem is tennék bele, mert nem fog funkcionálni, ha ezt más-más biztonsági beállításokkal bíró gépen nyitják meg. (Ha jól értem, ezt bárki bárhol kitöltheti)
Nem tudtam tényleg adatérvényesítéssel megoldani, h ha üres, akkor ne tudjon bele írni. (Ez csak az én bénaságom, biztosan meg lehet valahogy)
2. feltételes formázással el tudod "tüntetni" az igen/nem válasz alatti cellákat. Ez jól is néz ki és kielégíti azt az igényt is h ne tudjon oda írni (mert nem lesz hová)
Ha erre valaki másnak is van ötlete, jelentkezzen a frajti kukac frajt pont hu címen, mert Delila eltűnt, nekem meg meg kéne oldanom ezt a gondot. Köszi.
Tudnátok mondani ötletet, hogy dinamikus könyvjelzőt hogyan lehetne excelben csinálni? Mert egy munkafüzet ahova felrögzítem az adatokat kézzel érkezés szerint. Egy másikra pedig csak az értéket, hogy 1000db. Az 1000db-ra csinálok egy hiperhivatkozást. De van, hogy egy dokumentumot később kapok meg de mondjuk két héttel ezelőtti dátumozással. Így ahova az egységet írom be be kell szúrjak egy sort de innentől kezdve nem működik a hiperhivatkozás ami az alatta lévő cellákban van. Szóval valami olyan megoldás kellene aminek nem függvénye a sor/oszlop beszúrás. Mint pl a sima összedásnál ha beszúrok egy sort a 10-sor elé akkor automatikusan a képletben 11 lesz mindenhol ami arra hivatkozik
Na, annyira jtuottunk, hogy átírtam a túl sok igent, így:
Private Sub Worksheet_Change(ByVal Target As Range) ActiveSheet.Protect UserInterfaceOnly:=True
If Target.Address = "$C$62" And Target.Value = "igen" Then Range("B64").Locked = False ElseIf Target.Address = "$C$62" And Target.Value <> "nem" Then Range("B64").Locked = True End If
If Target.Address = "$C$68" And Target.Value = "igen" Then Range("B70").Locked = False ElseIf Target.Address = "$C$68" And Target.Value <> "nem" Then Range("B70").Locked = True End If
If Target.Address = "$C$74" And Target.Value = "igen" Then Range("B76").Locked = False ElseIf Target.Address = "$C$74" And Target.Value <> "nem" Then Range("B76").Locked = True End If End Sub
Ezzel most jó a makró, csak az egész sheet-et lockolja, márpedig nekem csak azt a három cellát kéne, hogy lockolja.
Áh bocs... Hamarább járt a kezem mint az agyhelyem... Habár semilyen adatérvényesítést nem csináltam... Csak nagyon felbosszantott, hogy pont arra az egy cellára nem tudok írni amibe nagyon kellene.
Hol tudom korlátozni a beírt értéket? Mert egy cellába akarok írni valamit és azt az üzenetet dobja, hogy "a beírt érték érvénytelen. Egy felhasználó korlátozta a cellába írható értéket"
Nem értek a makrókhoz, de ahogy nézem ezt, amit át kell másolni, valami nem stimmel. Csak az igen szerepel, és minden Locked. Vagy én nem értek vmit jól?
Az Office.comon többek közt ez a szöveg olvasható a Keresés-Csere leírásánál:
Megjegyzés: Az Értékek és a Megjegyzések elem csak a Csere lapon adható meg.
Na most nálam nem így van. A Csere lapon csak képlet adható meg, de nem tudni miért, mert eszében sincs specifikálni a cseréket, cseréli az értékeket is meg a képletekben szereplő karaktereket is. A Keresés lapon viszont kereshető a szöveg az értékben, a képletben és a megjegyzésben is. A 2003-ban is, meg a 2007-ben is.
Nálatok hogy van? Tudtok-e olyan beállítást javasolni, amivel a cseréket is tudom specifikálni? Nevezetesen, hogy csak az értékeket cserélje, és ne barmolja össze a hivatkozásokat
Erre tudnátok adni valami olvasmányt?! Mi a különbség a Korrektúra/lapvédelem-füzetvádelem és a File/Információ/füzetvédelem között. Csak le akarom védeni azt a részt ahol a számításokat végzem, mert előfordulhat hogy csoportmunka lesz belőlle és nem akarom, hogy belenyúljon a képletekbe mert azt visszafejteni, hogy hol barmolták szét...
Az igen/nem cellán (C62) van adatérvényesítés, listából (Sheet2-ről) választja ki e kettő megoldását. Nekem a további B64-es (és a másik kettő ugyanezen analógián szereplő) cella írhatóságát, illetve nem írhatóságát kéne megoldanom. Minden esetben, kivéve az igen, a cella írhatatlan legyen. :)
Ha egy jó megoldás kell, akkor az Solver-rel könnyen meg lehet oldani (esetleg még olyat is, amikor a jó megoldások közül valamilyen kritérium alapján pl. legkevesebb darabból álló részhalmaz stb. kell választani)
Solveres megoldás:
1. Beírod az N db számot mondjuk az A oszlopba (A1:A"n")
2. A B oszlopba mellette csupa 0-val feltöltöd (B1:B"n")
3. C1-be beírod a következő képletet =SZORZATÖSSZEG(A1:A"n";B1:B"n") (most nullát kell kapnod)
4 D1-be beírod a "K" Számot
5. behozod a Solvert
Célcella: üresen marad
Módosuló cella: B1:B"n"
Korlátozó feltételek:
B1:B"n" bináris érték
$C$1=$D$1
A Beállítás gombra Lineáris modell feltételezése bekattintva
Megoldás gomb
Ha további feltételeket még a Korlátozó feltételekben adhatsz meg.
Ha az összes kell, akkor VBA programozással több fajta módszerrel megoldható, én speciel backtrack algoritmussal kezdenék hozzá.
Azon gondolkoztam, hogy lehetne megoldani a problémát:
Van egy "n" darabból álló számsorozat. "k" szám az az összeg, amit "n" számsor egyes elemeinek összegeként kapunk meg. Olyan megoldás kéne, ami megvizsgálja az "n" számsorozat elemeinek összegét, és kiemeli azokat a kombinációkat, melyek összege pont "k".
Köszi a leírást. Viszont, ez valahogy nem működik, hibát ír ki, ill. kiválasztottam, hogy nem, és onnantól a cella tartalmát nem tudtam törölni, átÍrni. Pedig módosítható kéne legyen. :S (mármint a C62-t)
Private Sub Worksheet_Change(ByVal Target As Range) ActiveSheet.Protect UserInterfaceOnly:=True
If Target.Address = "$C$62" And Target.Value = "IGEN" Then Range("B64").Locked = False ElseIf Target.Address = "$C$62" And Target.Value <> "IGEN" Then Range("B64").Locked = True End If
If Target.Address = "$C$68" And Target.Value = "IGEN" Then Range("B70").Locked = False ElseIf Target.Address = "$C$68" And Target.Value <> "IGEN" Then Range("B70").Locked = True End If
If Target.Address = "$C$74" And Target.Value = "IGEN" Then Range("B76").Locked = False ElseIf Target.Address = "$C$74" And Target.Value <> "IGEN" Then Range("B76").Locked = True End If End Sub
Tehát a lapodhoz rendeld úgy, hogy a lapfülön jobb klikkre előjön egy gyorsmenü, abból a Kódlap megjelenítését választod. Ezzel bejutottál a VB szerkesztőbe, a jobb oldali üres lapra másold be.
Ezzel csak annyi a baj, ha véletlen üres marad az "igen" négyzet (ugye erre be lett állítva egy másik érvényesítés, hogy vagy igen v. nem), ha nem választ ki semmit, akkor enged írni ugyanúgy, csak a nem esetén figyelmeztet ugye.
Ez klassz volna, bár nem sokat értek belőle, makrókkal nem sok dolgom volt. Viszont ami biztos, nem oszlopokról van szó.
Hanem egy munkalap 3 db cellájáról (C62 C68, C74), ha ezekbe igent választ a kedves vevő, akkor kéne, hogy C62 igenje esetén B64, C68 esetén B70 és C74 esetén B76 írhatóvá váljék, amúgy semilyen esetben ne legyen ez a három cella írható. Gondolom létezik erre is megoldás.
A lenti makró az A oszlopba történő bevitelt figyeli, és a bevitt szöveg alapján zárolja, illetve feloldja a B oszlop azonos sorában lévő cella védelmét. A lapot le kell védened, előtte pedig azoknál a celláknál, ahova szabadon írhat a felhasználó, meg kell szüntetned a zárolást.
Private Sub Worksheet_Change(ByVal Target As Range) ActiveSheet.Protect UserInterfaceOnly:=True
If Target.Column = 1 Then If Target = "IGEN" Then Range("B" & Target.Row).Locked = False Else Range("B" & Target.Row).Locked = True End If End If End Sub
Hogyha van egy olyan cellám, amiben igen v. nem közül választhat. Be tudom-e állítani (tuti be), hogy abban az esetben, ha igent választ, akkor egy másik cellában csak és kizárólag akkor legyen írható az a cella, ha előbbiben az IGEN szó szerepel.
Megmondom őszintén még így kávé közben nem igazán fogtam fel a kérdésed! De szerintem ezt egy sima legördülő listával is meg tudod oldani. Ha elkezdi beütni a választ, hogy "Csok" és nyom egy tabulátort akkor kiegészíti "Csokitortára" automatice. Ezzel tudod korlátozni is, hogy mást nem írhat be mint a megengedett. Szóval "fűnyírót" ír be akkor hibát dob.
Egy amatőr kérdésem lesz, szóval tuti sima és egyszerű a válasz, de nem tudom, mi is a legjobb megoldás rá. :)
Adott egy kérdés-felelet választós excel tábla, amiben néhol a kérdésre fix 6-10 féle válasz adható csak. Gondolkodtam, hogy miként lehetne ezt könnyen megcsinálni. Mivel a kérdésekre a válaszokhoz van segítség, tehát néhány cella, amiben a megadható válaszok vannak, így az a kérdés, hogy a legjobb megcsinálni, számokhoz társítani, és akkor azt beállítani, hogy csak ezeket az értékeket veheti fel a cella (1,2,3,4,5,6), és akkor ha ezen számokat beírja az illető, akkor hozzátársítja az adott választ. Ill. ez hülyesége?
vagy csináljam simára, és mindenki beírja, amit akar. Esetleg valami jobb ötlet?
Illetve ugyanezen táblában lesz olyan kérdés is, amire igen vagy nem a válasz. És van egy olyan kitétel, hogy amennyiben igen, akkor még egy kérdés van. Erre van valami külön ötlet?
Ha válaszoltok, mérlegeljetek, hogy a legnagyobb tudásom excelben a hol van, a vkeres és hasonló függvények. :)))
Ezzel a függvénnyel kapcsolatban van nekem is kérdésem:
Két adatbázisom van,
Az egyikben egymás utáni napok vannak felsorolva ilyen formátumban
2012-06-17
2012-06-18
2012-06-19
2012-06-20
2012-06-21
2012-06-22
2012-06-23
2012-06-24
2012-06-25
2012-06-26
2012-06-27
2012-06-28
A másikban a formátumok azonosak az első adatbázishoz, de itt vannak hiányzó napok
2012-06-1712
2012-06-192
2012-06-209
2012-06-221
2012-06-2310
2012-06-2623
2012-06-276
Az FKERES függvénnyel szeretném a második adatbázis értékeit hozzárendelni az első adatbázis azonos napjaihoz.
Ezzel nincs is gondom, a problémám az, hogy ahol nem talál egyezést, ott a "Hiba:508" hibaüzenetet kapom és azt szeretném elérni, hogy ahol nincs egyezés, oda ne írjon semmit!
A függvényem így néz ki =HA(HIBÁS(FKERES($A4;V5:W47;2);" ";(FKERES($A4;V5:W47;2))
Továbbra is hibaüzenetet ír, kérem és várom a segítségeteket!
a felhasználói függvény pedig (másold be egy modullapra alt+f11-re feljövő környezetben)
Function ExtractElement(str, n, sepChar)
' 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
A cellákat azt tudom zárolni a korrektúrában. De melyikre gondolsz, hogy tegyek rá jelszót külön-külön? Ami mellete van Füzetvédelem vagy Fájl/Információ/Engedélyek?
A munkafüzet védelmével kapcsolatban vannak homályaim.
Azt értem, hogy a cellát, méretezést stb le tudom védeni. De olyat is lehet, hogy mondjuk egy excel 10 munkafüzetből áll amiből 8 a számításokhoz kell és kettőn van kimutatás. Ehhez a kettőhöz bárki hozzáférhessen de a többi 8hoz csak nekem legyen jogosultságom vagy aki esetleg tudja a jelszót/bizonyos hitelesítő file megvan neki?
A Name ha nincs a definiciójában a dollárjel, akkor relatívhivatkozásként működik.
Szóval az A1 az aktív cella, amikor létrehozol egy TextString nevű nevet, ami a B1-re mutat (dollárjel nélkül).
Ekkor az excel a TextString név alkalmazásakor, mindíg a TextString-re hivatkozó cellától jobbra lévő cellát fogja jelenteni (mert a B1 a beírt "cél cella" jobbra 1 cella távolságra van a beíráskor aktív A1 cellától).
Vagyis ha a C5 cellába az írod, hogy =LEN(TextString) akkor a D5 cellában lévő karakterek számát fogja mutatni.
Rendkívül hasznos kis fícsör, de ha az ember nem tudja, hogy így is működhet akkor könnyedén agyvérzés-közeli állapotba kerülhet az általa vélt hibás működéstől :-)
Őszintén szólva, nem értem problémádat. A név függetlenül, hogy ott van-e $ jel definícióban vagy nem, abszolút hivatkozásként "működik", ugyanis a másolt képletben ugyanaz a név fog szerepelni, ergo ugyanarra a cellára hivatkozik. Pl van a B2 cellád, elnevezed mondjuk "Kamat" névvel , és írsz egy ilyet képletet, hogy =Kamat/12. Ezt akárhová másolod, mindig =Kamat/12 marad.
(Egy probléma lehet azonban, ha különböző munkalapokon ugyanazt a nevet használod)
Azt meg lehet-e oldani (2003-as), hogy egy táblán a cella kitöltése, majd az Enter lenyomása után meghatározott cellára ugorjon a kijelölés. Tehát, hogy a meghatározott sorrendben kitöltendő cellák egymás után jöjjenek. Részben egymás alatt, részben egymás mellette vannak.
Az XP a NEVEKre alapból relatívként hivatkozott, amit viszonylag könnyen lehetett módosítani. A 2007-es alapból abszolutként hivatkozik rájuk, amit csak elég körülményesen tudok megváltoztatni a Névkezelőben egyenként, ami kifejezetten idegesítő, ha sok NÉV hivatkozását kell megváltoztani. Nincs erre valami egyszerűbb módszer? De már az is előrelépés volna, ha a cellában lehetne a hivatkozás átírását megoldani.
Sub login() Dim ieApp As Object Dim objBox As Object Dim objBox1 As Object
Set ieApp = CreateObject("InternetExplorer.Application") ieApp.Visible = True ieApp.navigate ("https://website/logon.jsp") Do While ieApp.busy DoEvents Loop On Error Resume Next Do While objBox Is Nothing Set objBox = ieApp.document.getelementbyid("user_ID") DoEvents Loop objBox.Value = Range("A" & CStr(ActiveCell.Row)).Value Set objBox1 = ieApp.document.getelementbyid("password") objBox1.Value = Range("B" & CStr(ActiveCell.Row)).Value ieApp.navigate ("javascript:validate()")
segítséget szeretnék kérni a következőkkel kapcsolatosan:
egy excel táblába szertenék külső adatforrásból adatokat beolvasni. a weblap - forrás - felhasználó nevet és jelszót is kér: olyan megoldást keresek, amivel nem kell minden egyes alkalommal végigzongorázni a "külső adatforrásból beolvasás - weblapról - belépés a megadott jelszóval - majd pedig az importálandó adatok (tábla) kijelölése", csupán az adatok frissitét kellene aktiválnom.
Azt hogyan lehetne megoldani, hogy van egy oszlopom amiben értékek vannak és ez a termeléstől függően változik naponta. De havonta le kell adnom a könyvelésnek. De pl ma már nem tudom leadni a július 1. állapotot. Ezért szeretném valahogy azt rögzíteni egy oszlopba statikusan, mert van, hogy csak 2 hét múlva kérik a júli. 1.ét.
Van egy tábla, amiben az első 3 sor el van rejtve. Ezt láthatóvá szeretném tenni, de nem megy. Hiába jelölöm ki a 4. sort, és húzom felfelé az egeret (a nem látható első 3 sor irányába), a kijelölés megtörténik, de a felfedésre kattintva nem jelenik meg az első 3 sor.
Már van kerekítve is! Megnéztem csak az adott munkafüzetet számolja a látható alapján! Tehát ha újat nyitok akkor alap beállítűson van és a háttérbe számol nem a megjelenítettel! Köszönöm mindenkinek a tanácsokat és a segítséget! Neked is ZYLO !! Ha még sem lesz jó akkor írok! :D
Nem néztem tüzetesen végig a programodat, de valószínűleg az a probléma, hogy a hibakezelés nem törli magát a hibát, így egy második hiba előfordulása már ténylegesen hibát okoz. Nekem is volt hasonló problémám. A hiba törlése nekem megoldotta a problémát. Az összes hibakezelési részbe a programfolytatás elé írd be: If Err <> 0 Then Err.Clear
Tele van illetlenségekkel, mert sosem tanultam programozni. Úgy írok makrót, hogy nagyjából felveszem, amit meg kell csinálni és azt csiszolgatom a feladathoz.
Közben kiderült, csak akkor hal bele a második txt-be, ha az elsőt hibával zárja be (vagyis nem talál megfelelő sztringet.) Tehát tényleg itt van a kutya elásva.
Nem erre gondoltam, de ha később sem akarsz pontosan számolni, akkor ez is jó megoldásnak látszik. A KEREKÍTÉS úgyszintén, bár azt is be kell írni minden kritikus képletbe.
Szerintem, ezt ne állítsd át, mert máskor fogsz rossz eredményeket kapni.
Helyette javaslom a KEREKÍTÉS (régi nevén KEREK) függvény használatát, melynek második paramétere, hogy hány tizedesjegyre kerekítsen (sőt ha negatív számot adsz itt meg, -1->10, -2 ->100, -3->1000 stb. -re fog kerekíteni)
Tegyük fel, a c3-as cellában van az érték, ami több tizedesjegyű, de csak két tizedesjegy kell. Írd be a d3-ba, hogy INT(C3*100)/100, és a továbbiakban számolj ezzel.
Közben megtaláltam a megoldást az hiszem! Az excel a tárolt értékekkel számolt és nem a megjelenítettel! De ha van valakinek még valamilyen ötlete akkor szívesen várom!
Egy biztosítónál dolgozok és van egy excel táblázat ami megkönnyítené a munkámat, de végeredménybe mindig mást hoz ki kis eltéréssel mint amit én számológéppel számolok. 2 tizedesig van kerekítve, de olvastam valahol, hogy más amit mutat és más amivel számol. Szeretném, hogy úgy működjön nekem ez a táblázat, mint ha számológéppel apránként kiszámolnám a dolgot! Tehát megbízható legyen. Egy % számítást kell levezetnem és kifizetésre javasolni adott összeget, ha most más %-al számol mint amit én ott látok akkor elég nagy összegekkel tévedhetek és nem akarom excellel is és sima számolással is kiszámolni. Tehát azt szeretném a táblázat rublikáiba látni amivel ő ténylegesen számol. Vgay úgy mintha én számolnám számológéppel.
Légyszíves segítsetek ha tudtok fontos lenne nekem! Elküldeném a táblázatot is hogy egyszerűbben meg lehessen oldani.
A Microsoft Skydrive-ja pont ezt teszi lehetővé könnyedén. Mindenki megkapja a file-ra mutató linket, és csinálhatja. További előny, hogy nem kell webfelületen szerkesztgetni a file-t, simán meg lehet nyitni Excelben (2007-ben és 2010-ben is.).
A Skydrive ingyenes és 25GB szabad tárterületet ad.
Mármint érthetőbben: az A jelű közös táblázatból frissülne az egyéni táblázatok kajalistája, a B jelű közös táblázat pedig összegyűjtené az azonos kóddal jelölt összegeket az egyéniekből.
Van egy céges hálózat, ahol több dolgozó azonos szerkezetű táblázatokat tart karban napi rendszerességgel. Ezeket a dolgozók keresztneve különbözteti meg a filenévben, egyébként a közös rész a névben a hétfői dátum. (Hetente újat kezdenek.)
Ha jól tudom, Excelben nem szerkeszthetnek többen egyszerre egy táblázatot, vagy igen?
Ha mégsem, akkor mi a legjobb stratégia a keletkezett adatok összegyűjtésére egy munkafüzetbe? Egy gyűjtőtáblázat makróval, amelyik sorra megnyitogatja mindegyiket? Vagy egy külső program (pl. Python), amelyik képes Excel-táblázatokat kezelni?
Bónuszként jó lenne a pár nappal ezelőtti feladatomból a B oszlopot (ahol a kaják voltak felsorolva) automatikusan frissíteni valahogy egy központi listából, amit a vezető tart karban.
A feladat természetesen a minél kvesebb emberi beavatkozás lenne.
Egyelőre nincs mező annak a jelzésére, hogy az adott dolgozó elkészült-e a napi karbantartással, de gondolkozom egy ilyenen is, hogy egyértelműbb legyen.