Keresés

Részletes keresés

Delila10 Creative Commons License 2012.08.23 0 0 18701

Készítesz egy UserFormot, ami Leltár névre hallgat.

 

 Az első beviteli mező neve (nálam) Bárkód, a másodiké Db, a szövegdobozé Megnev, végül a gombé Felvitel.

 

A Bárkódhoz jön a makró:

 

Private Sub Bárkód_AfterUpdate()

    Application.EnableEvents = False

    Set WS = Sheets("Munka1")

    If Bárkód = "" Then GoTo Vége

    On Error GoTo Hiba

    sor = Application.WorksheetFunction.Match(Bárkód, WS.Columns(4), 0)

    Megnev = WS.Cells(sor, 1)

    GoTo Vége

 

Hiba:

    MsgBox "Nem létező bárkód"

    Bárkód = "": Bárkód.SetFocus

 

Vége:

    Application.EnableEvents = TrueEnd

Sub

 

 

A Felvitel gombhoz:

 

Private Sub Felvitel_Click()

    Set WS = Sheets("Munka1")

    On Error Resume Next

    sor = Application.WorksheetFunction.Match(Bárkód, WS.Columns(4), 0)

    WS.Cells(sor, 2) = WS.Cells(sor, 2) + Db * 1

    Bárkód = "": Db = "": Bárkód.SetFocus

End Sub

 

 A munkalap D oszlopa szöveg formátumú legyen.

 

Modulba, amit a Start gombhoz rendelsz:

 

Sub Start()

    Leltár.Show False

End Sub

 

Ezt a gombot az Űrlapvezérlők eszköztárából is kiteheted a munkalapra.

Előzmény: ZolKa (18684)
Delila10 Creative Commons License 2012.08.23 0 0 18700

Ez bizony igaz. Át kell írni a makrót, hogy csak minden harmadik sorból vegye az adatokat. 

A For sor végére Step 3 biggyesztése megoldja a lazább munka lehetőségét.  :D

Előzmény: Sánta Kutya (SK) (18699)
Sánta Kutya (SK) Creative Commons License 2012.08.22 0 0 18699

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.

Előzmény: Delila10 (18698)
Delila10 Creative Commons License 2012.08.22 0 0 18698

Ú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

Előzmény: kraniczp (18692)
Törölt nick Creative Commons License 2012.08.22 0 0 18697

 

tetszik:
csendes tengerek nem nevelnek jó hajóst


Előzmény: SQLkerdes (18696)
SQLkerdes Creative Commons License 2012.08.22 0 0 18696

Erre mondják, hogy csendes tengerek nem nevelnek jó hajóst :-)

 

A lényeg, hogy végül meg lett oldva.

Előzmény: pchris91 (18695)
pchris91 Creative Commons License 2012.08.22 0 0 18695

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!

Előzmény: SQLkerdes (18683)
SQLkerdes Creative Commons License 2012.08.22 0 0 18694

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.

Előzmény: ZolKa (18693)
ZolKa Creative Commons License 2012.08.22 0 0 18693

Ahogy nézem itt is gombnyomásra olvassa be:

http://www.youtube.com/watch?v=NzK84kMkHOQ

 

A vonalkód olvasó nem úgy működik mint egy billentyűzet, beírja a beolvasott számokat és nyom egy enter -t?

 

Előzmény: SQLkerdes (18689)
kraniczp Creative Commons License 2012.08.22 0 0 18692

 

kraniczp Creative Commons License 2012.08.22 0 0 18691

Sziasztok!

 

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

Ezt hogy lehetne megoldani?

Segítségeteket előre is köszönöm.

 

Péter

SQLkerdes Creative Commons License 2012.08.22 0 0 18690

Pld:

 

Előzmény: ZolKa (18688)
SQLkerdes Creative Commons License 2012.08.22 0 0 18689

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 :-)

Előzmény: ZolKa (18688)
ZolKa Creative Commons License 2012.08.22 0 0 18688

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.

Előzmény: SQLkerdes (18687)
SQLkerdes Creative Commons License 2012.08.22 0 0 18687

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.

Előzmény: ZolKa (18686)
ZolKa Creative Commons License 2012.08.22 0 0 18686

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.

Előzmény: SQLkerdes (18685)
SQLkerdes Creative Commons License 2012.08.22 0 0 18685

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

Előzmény: ZolKa (18684)
ZolKa Creative Commons License 2012.08.22 0 0 18684

Sziasztok!

Újabb kérdésem lenne:

 

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ő?

SQLkerdes Creative Commons License 2012.08.22 0 0 18683

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:

 

=INDEX(adatbazis!$C$1:$C$13,SUM((A2=adatbazis!$A$2:$A$13)*(B2=adatbazis!$B$2:$B$13)*ROW(adatbazis!$A$2:$A$13)))

Előzmény: pchris91 (18680)
pchris91 Creative Commons License 2012.08.21 0 0 18682

Na már megint hibáztam: a negyedik blokk nem 3-al kezdődik, hanem 4-el. Bocs már talán késő van.

Előzmény: pchris91 (18681)
pchris91 Creative Commons License 2012.08.21 0 0 18681

A 18677 és a 18680 példa alapján tudom talán az egészet jobban megvilágítani, de még nem vagyok magamban biztos, hogy elég szabatosan magyarázom-e.

 

Ha az alábbi mátrixban keresek az Index-Hol.van függvény halmazzal, akkor az 1a; 1b; 1c; 1d; 2a; 3a; 4a esetekben ad jó eredményt, egyébként 0-át.

Előzmény: SQLkerdes (18679)
pchris91 Creative Commons License 2012.08.21 0 0 18680

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. 

1.Adatbázis munkalap:

feltétel1 feltétel2 ...Adat

 

1 .............a.......... 1000

1 .............b.......... 1001

1 .............c.......... 1002

1 .............d.......... 1003

 

2............. a.......... 1004

2............. b.......... 1005

2............. c.......... 1006

2............. d.......... 1007

 

3............. a.......... 1008

3............. b.......... 1009

3............. b.......... 1010

3............. d.......... 1011

 

3............. a.......... 1012

3............. b.......... 1013

3............. b.......... 1014

3............. d.......... 1015

 

(így tovább)

 

A kereső munkalapon:

 

feltétel1 feltétel2 ...képlet

1.............c......>>>>>1002

2.............b......>>>>>1005

3.............d......>>>>>1011

4.............a......>>>>>1012

5

6

.

n

Előzmény: SQLkerdes (18673)
SQLkerdes Creative Commons License 2012.08.21 0 0 18679

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.

 

Szóval akkor most hogy?

Előzmény: pchris91 (18649)
pchris91 Creative Commons License 2012.08.21 0 0 18678

Bocs, most olvastam az alábbi válaszodat. Köszi,kipróbálom.

Előzmény: SQLkerdes (18676)
pchris91 Creative Commons License 2012.08.21 0 0 18677

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?

Előzmény: SQLkerdes (18670)
SQLkerdes Creative Commons License 2012.08.21 0 0 18676

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.

Előzmény: pchris91 (18675)
pchris91 Creative Commons License 2012.08.21 0 0 18675

A képletet a honlapról másoltam, de nem jön így rendesen át. Helyesen:

=HA(ÉS(NEM(HIBÁS(HOL.VAN($B$2;$A:$A;0)));NEM(HIBÁS(HOL.VAN($C$2;$B:$B;0))));HA(HOL.VAN($B$2;$A:$A;0)=HOL.VAN($C$2;$B:$B;0);INDEX($A:$C;

HOL.VAN($B$2;$A:$A;0);3);HA(INDEX($A:$C;HOL.VAN($B$2;$A:$A;0);2)=$C$2;INDEX($A:$C;HOL.VAN($B$2;$A:$A;0);3);HA(INDEX($A:$C;

HOL.VAN($C$2;$B:$B;0);1)=$B$2;INDEX($A:$C;HOL.VAN($C$2;$B:$B;0);3);0)));0)

 

A végén a "Nincs találat" helyett 0-át írtam.

Előzmény: Sánta Kutya (SK) (18656)
SQLkerdes Creative Commons License 2012.08.21 0 0 18674

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.

Előzmény: Törölt nick (18664)
SQLkerdes Creative Commons License 2012.08.21 0 0 18673

Alapfeltételezések:

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

 

=INDEX($C$2:$C$13,LARGE(($A$2:$A$13=$E$1)*($B$2:$B$13=$F$1)*ROW($A$2:$A$13)-ROW($A$2)+1,ROW(A1)))

 

- a képletet kéretik Ctrl+Shift+Enter-rel lezárni, NEM pedig sima ENTER-rel.  Ha jól csináltad a képlet {} kapcsos zárójelek közé kerül.  Ha érdekel, hogy mi ez olvass utána az excel tömbfüggvényeknek (http://office.microsoft.com/hu-hu/excel-help/utmutatasok-es-peldak-tombkepletek-hasznalatahoz-HA010228458.aspx).

 

Az egészet beágyazhatod egy IFERROR-ba és akkor nem ad hibát az x+1-ik sorban ha csak x találat van.

Előzmény: SQLkerdes (18670)
Sánta Kutya (SK) Creative Commons License 2012.08.21 0 0 18672

Igen, bevallom töredelmesen, egy külső partnertől kaptuk az adatokat valamilyen feldolgozásból, úgyhogy well blöffed lion. :-)

Előzmény: SQLkerdes (18671)

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!