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.
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.