Keresés

Részletes keresés

Delila10 Creative Commons License 2012.03.31 0 0 17621

Tudsz az érvényesítéssel más lapra hivatkozni, de csak úgy, hogy előbb nevet adsz a tartománynak, és ezzel a névvel hivatkozol rá. Nehéz megjegyezni a neveket, de van hozzá egy segítség. Mikor az érvényesítésnél beírtad az = jelet, F3 billentyűre megjelennek az addig megadott nevek, amikből választhatsz.

 

Ha jól értem, az  Árlista lapon akarod kizongorázni az egyes tételeket az A4:D4 cellákban, és ezeket egymás után megjeleníteni az Árajánlat lap 17. sorától kezdődően. 

Előzmény: Alkesz_ (17620)
Alkesz_ Creative Commons License 2012.03.31 0 0 17620

Mint púpos gyerek a prés alatt szépen lassan....

 

Feltettem a doksit...

 

Azt próbálom megcsinálni, hogy az "Árajánlat" fülön szépen lehessen dolgozni, ott vinném be az adatokat, és ott jelenne meg az ár. Csak a függvény átírása nem sikerül, mert nem tetszett neki az én kis naiv elgondolásom, hogy majd "Árlista!..." módon hivatkozgatok a másik lapra, hogy onnan vegye az adatokat....

 

Meg nem tudtam, hogy a makrót egymás alá másolom 25-ször, (25 termékbeviteli sor van), és a 

"If Target.Address = "$B$4" Then"

sorban átírom a "$B$4" -t a 25 megfigyelt cella nevére, vagy hogy is pontosan?

 

És még felmerült egy kis probléma azzal is, hogy az "Árajánlat" lapon, a méretnél , az érvényesítés nem enged másik lapra hivatkozni.. :-((

 

Esetleg valamilyen ötlet?

 

"http://www.nyirbutor.hu/images/temp/arlistapublic_2.xlsm"

 

Előzmény: Delila10 (17619)
Delila10 Creative Commons License 2012.03.31 0 0 17619

Örülök, hogy sikerült.

Előzmény: Alkesz_ (17618)
Alkesz_ Creative Commons License 2012.03.31 0 0 17618

Így már jó!

 

Igen figyelmetlen voltam, meg egy kicsit áttekinthetőbben is megoldhattam volna. Főleg a Te érdekedben...

 

Hétvégén nekiugok, ha lesz időm....

 

Köszönöm a segítséget, jövő héten szerintem még jelentkezem.....

Előzmény: Delila10 (17617)
Delila10 Creative Commons License 2012.03.30 0 0 17617

Nem egyszerre vagyunk a monitor előtt. :(

 

Úgy gondolom, hogy a zöld hátterű területről kell venni az árakat, megcsináltam azzal.

Az volt az egyik fő hiba, hogy a C4 cella érvényesítését nem írtad át. Most is a példa szerinti S1 és S2 cellából vette az adatot (az üres stringeket), holott már az F1 és F2-ből kellett volna.

 

A másik, amit már írtam, hogy nem a kellő címet írtad a makróba a beírás ellenőrzéséhez.

 

Feltöltöttem a fájlt.

http://data.hu/get/4920121/arlistapublic_1.xlsm

Előzmény: Alkesz_ (17614)
Delila10 Creative Commons License 2012.03.30 0 0 17616

Megtaláltam a táblázatot az Árlista lapon. Mivel kell számolni? Azöld hátterű G:L tartománnyal, vagy az N:S-sel?

Előzmény: Delila10 (17615)
Delila10 Creative Commons License 2012.03.30 0 0 17615

Azért nem találja, mert az Árlista lap D (4.) oszlopában keres. Mellesleg én sem találom, pedig én mindenhol keresem. A Tipusnevek!A144:A162 tartományban látok ugyan egy halom méretet, de nem tudom – és a makró honnan tudhatná – melyik méret mihez tartozik?

 

A makróban a Target.Address = "$C$4"-nél a figyelt cella címét átírtam "$B$4"-re, mert ennek a beírásakor kellene ehhez a Fő_alcsop-hoz megkeresni a kezdő- és záró sort.

 

Az az elrendezés, amit előbb adtál, jobb, világosabb, áttekinthetőbb.

 

Előzmény: Alkesz_ (17614)
Alkesz_ Creative Commons License 2012.03.30 0 0 17614

Addig jutottam, hogy a hiba ebben a sorban keresendő:

 

kezd = Application.WorksheetFunction.Match(keres$, Columns(4), 0),

 

Feltettem a doksit.

 

Az első mint oldalt csak azért tettem oda, hogy jobban lásson mi lenne majd a vége a dolognak, de azt csak a régiből kimásoltam, így nem működik, csak a látszat miatt.

Az árlista oldalon van a lényeg.

A tipusnevek oldalon vannak a legördülő listához a csoportok.

 

A méretek nem jól működik, mert nem sikerül meghatározni az oszlopban a kezdő sor, és a végső sor helyét...

 

Eddig jutottam...

 

"www.nyirbutor.hu/images/temp/arlistapublic.xlsm"

Előzmény: Alkesz_ (17613)
Alkesz_ Creative Commons License 2012.03.30 0 0 17613

Hiába is keresem a hibát, valahogy nem akarnak működni a cellába kiírások:

 

Range("S1") = kezd

 

Kell a S1 cellának valamilyen különleges formátumot adni?

Előzmény: Alkesz_ (17612)
Alkesz_ Creative Commons License 2012.03.30 0 0 17612

Rájöttem, hogy a Columns(3) az a harmadik oszlop....

 

 

 

Előzmény: Alkesz_ (17611)
Alkesz_ Creative Commons License 2012.03.30 0 0 17611

"kezd = Application.WorksheetFunction.Match(keres$, Columns(3), 0)
        Range("S1") = kezd"

 

A kezd nevű változóba bekerül a HOL.VAN függvénynek megfelelő VB-s MATCH függvény eredménye, a keres$ első találati helye a C oszlopban:

és ezt az értéket azonnal beíratjuk az S1 cellába.

 

Azt levettem, hogy a "Columns(3)" lehet a C oszlop harmadik sorától, vagy valami ilyesmi, de hogyan módosítsam ezt a paramétert az E oszlop 59 sorától-ra  ?  :-)

 

Előzmény: Delila10 (17610)
Delila10 Creative Commons License 2012.03.29 0 0 17610

Beírhatsz egy új sor, mondjuk a Dim ... alá. Legyen ez Range("O1") = "" .  Amikor az alcsoportot kiválasztottad, üressé teszi az O1 cellát, és akkor látszik, hogy ki kell választani a méretet, nem maradhat benne az előzőleg bevitt adat.

 

Említettem, hogy ez egy kiforratlan példány. :(

Előzmény: Alkesz_ (17608)
Delila10 Creative Commons License 2012.03.29 0 0 17609

Egy makró érvényes, a másik csak egy kis maszat, törölhető.

 

A küldött füzet lapfülén jobb klikk, Kód megjelenítése. Beléptél a VB szerkesztőbe. Bal oldalon látod, hogy a füzet Munka1 lapja van kiválasztva, jobb oldalon ott van a

Private Sub Worksheet_Change(ByVal Target As Range)

kezdetű makró. Az egészet jelöld ki, másold, bal oldalon a saját füzeted lapját (ahol a kiválasztásokat akarod elvégezni) jelöld ki, és jobbra másold be a kódot.

 

Az ilyen jellegű makrók akkor indulnak automatikusan, mikor a lapra beviszel egy adatot. Az

If Target.Address = "$N$1" Then sor azt adja meg, hogy akkor végezze el a következő, End If utasításig tartó műveleteket, ha ez a bevitel az N1 cellába történt.

 

Nézd meg itt a fórumon pippancs 17586-os hozzászólását, ami megmutatja, hogyan kell a sor- és oszlopcímekből névvel megjelölt tartományt létrehozni.

 

Előzmény: Alkesz_ (17608)
Alkesz_ Creative Commons License 2012.03.29 0 0 17608

Hamar elakadtam..  :-((

Azt megtaláltam hogy hogy a fejlesztőezközök/makrók/szerkesztés menü alatt tudom a saját celláimra átírni a makrót, de hogyan tudom az ott található két makrót (ha egyátalán mind a kettő makró?), átteni az én munkafüzetembe?

 

Alkesz.xlsm - Munka1 (Code)

Alkesz.xlsm - Module1 (Code)

 

Előzmény: Delila10 (17605)
Törölt nick Creative Commons License 2012.03.29 0 0 17607

grat., és szívesen

Előzmény: Zsongilingi (17601)
Alkesz_ Creative Commons License 2012.03.29 0 0 17606

Én sem ragaszkodom a bonyolúlt, és plusz munkához.. Ez a gyakorlatban úgy néz ki hogy egy másik munkafüzetlapon van egy megrendelő nyomtatvány, és azon látszik minden. Színek, elemek, munkalapok, fogók, stb... (Ezen fog majd működni a választós rész) És ezt szoktam kinyomtatni a vevőnek. Már én sem tudom mindig, hogy melyik elemnek van szériaméretben ajtaja, és azért jó ha a saját hülyeségem ellen is véd :-) A másik gyakori eset, amikor az árajánlatba ölt munka után a vevő tizedjére is a "Mia lenne ha az inkább fiókos lenne?" "Mi lenne ha ez kisebb lenne 10 cm-el, az meg nagyobb?" és bizony itt kezd elpattani a cérna, de milyen jó lesz ha klikkelek egyet és már látjuk is az eredményt, aztán nyomtat, vagy ment másként .pdf és már küldöm is.

 

Nekifekszek a makros változat feldolgozásának, és biztos hogy jelentkezek hol is akadtam el ... :-))

 

Köszi az eddigieket..

Előzmény: Törölt nick (17604)
Delila10 Creative Commons License 2012.03.29 0 0 17605

Szükség van az első segédoszlopra.

 

Mikor az N1-be beírod az alcsop-ot, indul a makró.

Egy keres$ nevű változóba összefűzi a Fő- és alcsoport kiválasztott értékeit:

keres$ = Range("M1") & "_" & Range("N1")

 

A kezd nevű változóba bekerül a HOL.VAN függvénynek megfelelő VB-s MATCH függvény eredménye, a keres$ első találati helye a C oszlopban:

kezd = Application.WorksheetFunction.Match(keres$, Columns(3), 0), és ezt az értéket azonnal beíratjuk az S1 cellába:

Range("S1") = kezd

 

Ettől a sortól egy ciklus indul a C oszlop celláin lefelé:

For sor = kezd To usor (az alsó sort az usor = Range("A" & Rows.Count).End(xlUp).Row + 1 határozza meg).

 

Mikor az aktuális sor 3. cellája már nem azonos a keres$ értékével:

If Cells(sor, 3) <> keres$ Then, akkor az S2 cellába bekerül a fölötte lévő (még azonos) sor száma:

Range("S2") = sor - 1, és kilépünk a ciklusból:

Exit For

 

Az O1 cella érvényesítése erre a két, sorszámokat tartalmazó cellára hivatkozik az INDIREKT függvénnyel, így sikerült elérni, hogy mindig a kiválasztott Fő_al-nak megfelelő méreteket adja.

 

Ez a lényege a makrónak, a többi helyfoglalás a változóknak, és az eseménykezelés tiltása, -engedélyezése (bármit is jelentesen). Az utóbbit majd valaki szabatosan leírja.

 

Nem kell félni a makróktól, nem harapnak.

 

Az A oszlopban feltételes formázással láthatatlanná (háttér színével megegyezővé) teheted a sokszor szereplő egyforma adatokat, de kellenek a segédoszlopokhoz.

A segédoszlopokat elrejtheted, sőt, az egész táblázatot is, mikor már minden rovatát kitöltötted.

 

Előzmény: Alkesz_ (17600)
Törölt nick Creative Commons License 2012.03.29 0 0 17604

Na igen, ha webshopba szánod, pl. letölthető árkalkulátornak, akkor ez a szépséghiba nem megengedhető.

Ha viszont személyesen akarod használni, és azzal a céllal, hogy gyorsan kikeresd egy termék árát, akkor úgyis tudod, hogy mi a termék és milyen paraméterei vannak. Az meg nem a táblázatból fog kiderülni számodra, hogy egy adott bútor választható-e 350 mm-es ajtóval, vagy sem. Szóval akkor egyszerűen nem választasz olyan paramétereket, amelyek hibát eredményeznek.

Nyilván, meg lehetne csinálni bolondbiztosra is, csak kérdés, hogy kell-e, megéri-e. Én biztos nem erőlködnék. De lehet, hogy a bútorasztalosok nem olyan lusták, mint a programozók :)

 

Előzmény: Alkesz_ (17603)
Alkesz_ Creative Commons License 2012.03.29 0 0 17603

Nem rossz, csak a szépséghibája ott lehet, hogy minden méret választható az elemekhez, az is ami nincs, ugyan nem ír árat ha nem stimmel a méret...

De még elemezgetem hogyan is lehetne ezt koorigálni...

 

Azért köszi, mert minden megoldás érdekel :-)))

Előzmény: Törölt nick (17602)
Törölt nick Creative Commons License 2012.03.29 0 0 17602

Ehhez mit szóltok?

http://data.hu/get/4914275/Alkesz.xlsx

 

Semmi makró, csak beépített függvények. A K17:M17 mezőkben kell beállítani a méreteket, K28-ban pedig az árkategóriát. A végeredmény L28-ba kerül.

Előzmény: Alkesz_ (17600)
Zsongilingi Creative Commons License 2012.03.29 0 0 17601

Köszönöm! Sikerült!

Előzmény: Törölt nick (17596)
Alkesz_ Creative Commons License 2012.03.29 0 0 17600

Igen látom az én gondolatmenetem csak akkor működne, ha az E oszlop adatait csoportosítanám egy legördülő menűhöz, az "O1"-be, de elég nehéz lenne mindent elnevezni úgy hogy ne legyenek átfedések a csoportok között... Kialakul lassan a megoldás csak a makróhoz abszolút nem értek, és mindenféleképpen olyan megoldást akarok amit 100%-ban átlátok működésileg.De muszály fejlődni...

 

Nézzük a kérdéseket:

Ha jól sejtem az X oszlop az törölhető nincs jelentősége?

A "segédoszlop2" az a keresésbe segít, de a "segédoszlop1" jelentőségét nem látom.

És nem értem a makro mi alapján tudja megadni egy választott termék kezdő (S1), és záró sorát(S2).

 

Kezdetnek ennyi kérdés, de biztos lesz még mire át tudom ültetni a teljes termékpaletára a dolgokat.

 

Előzmény: Delila10 (17599)
Delila10 Creative Commons License 2012.03.28 0 0 17599

Most jut eszembe! A makrót nem kell indítani, azért hiszed, hogy anélkül is működik.

Ez egy eseményvezérelt makró. Árgus szemekkel figyeli, mikor változik meg az N1 cella értéke, és akkor sebtében beírja a két értéket az S1 és S2 cellába. Az O1 érvényesítése csak erre vár, és a kellő helyről veszi a listája értékeit.

Előzmény: Alkesz_ (17597)
Delila10 Creative Commons License 2012.03.28 0 0 17598

A makró ahhoz kell, hogy a kiválasztott fő- és alcsoporthoz tartozó kezdő-, és zárósort kikeresse. Ennek alapján adja az ezekhez tartozó méreteket az O1 érvényesítése. Nélküle a méret érvényesítés meghalna, vagy mindenhez mutatná az összes létező méretet.

 

Látom, Jimmy nyert az ofszet-es, hol.van-os függvényével, pedig a =HA(HIBÁS(HOL.VAN(S3;D:D;0));"";INDIREKT(P1) INDIREKT(S3)) képletben hibakezelés is van. Amíg nem választod ki a méretet, hibára futhat (az ofszet-es is), ha az újonnan kiválasztott csoportban nincs olyan méret, mint ami az előző választásból benn maradt az O1 cellában.

 

Érdemes az ofszet-es képletbe is betenni ezt a hibakezelést.

Előzmény: Alkesz_ (17597)
Alkesz_ Creative Commons License 2012.03.28 0 0 17597

Nos nagyon nagy vagy! Bár egy kicsit módosítottam a dolgon, de a két segédcella nagyon sokat segített a helyes meglátáshoz, mert bár én is errefelé keresgéltem a megoldást, de Te (Ti) kellettél (kelletetek) a sikerhez. Én ezt írtam be egy cellába és makró nélkül is megoldódik a probléma:

=OFSZET(E1:K37;(HOL.VAN(S3;D2:D37;0));(HOL.VAN(P1;F1:K1;0));1;1)

No meg persze ott van a szép megoldás az összefűzésre, eszembe nem jutott volna....

 

Nagyon szépen köszi még egyszer!

Előzmény: Delila10 (17595)
Törölt nick Creative Commons License 2012.03.28 0 0 17596

alt+f11

insert new module -> ide bemásolod azt a kódot

 

utána a felhasználói függvények között megtalálod és úgy tudod használni mintha egy akármilyen más excel függvényt használnál.

Előzmény: Zsongilingi (17594)
Delila10 Creative Commons License 2012.03.28 0 0 17595

A Q1 cellába ezt is írhatod: =HA(HIBÁS(HOL.VAN(S3;D:D;0));"";INDIREKT(P1) INDIREKT(S3))

Előzmény: Alkesz_ (17590)
Zsongilingi Creative Commons License 2012.03.28 0 0 17594

Köszönöm a segítséget, de én ennél sajnos butább vagyok. Azt hogy adom meg, hogy a nevezett cella értékéből legyen betű?

Előzmény: Törölt nick (17592)
Delila10 Creative Commons License 2012.03.28 0 0 17593

http://data.hu/get/4910909/Alkesz.xlsm címre kitettem egy kiforratlan megoldást, csak hogy ne hidd, hogy feledésbe ment a kérdésed.

 

Az M1:P1 tartományba viheted be az igényeidet, az ár a Q1-ben jelenik meg.

A B oszlopban az eredeti szóközöket alsó kötjelre kell cserélned, mert a névadás nem fogadja el a szóközt.

 

Vettem fel két segédoszlopot, valamint Alsó és Felső elnevezéssel a T, ill. V oszlopba kigyűjtöttem az egyedi értékeket a B oszlopból.

 

Elég hosszú a mese hozzá, ha szükséges, levélben leírom, vagy megbeszéljük Skype-on, mivel egyéni a feladat.

Előzmény: Alkesz_ (17590)
Törölt nick Creative Commons License 2012.03.28 0 0 17592
Előzmény: Zsongilingi (17591)

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