Keresés

Részletes keresés

Vax Creative Commons License 2014.02.02 0 0 23984

Volt már hasonló kérdés, igaz, régen. Érdemes megnézni az akkori válaszokat is, talán segít.

http://forum.index.hu/Article/showArticle?na_start=9084&na_step=50&t=9009340&na_order=

 

Előzmény: Neumann Alex (23969)
Fferi50 Creative Commons License 2014.02.02 0 0 23983

Még valami!

 

Az a hiba nem probléma egyébként, megszűnik, ha az A oszlopban egy cellát kiválasztasz.

Mivel a cell("address") egyéb paraméterek híján a legutoljára változtatott cella címét adja vissza, természetes, hogy amikor a képletet beírod, hibát jelez, mivel saját értékét keresi és az persze nincs az adott tartományban.

De ha az A oszlopban dolgozol, ott már csak olyan értéket tudsz választani, ami megtalálható a hivatkozott tartományban.

 

Ezért is mondtam többek között, hogy felejtsd el.

 

Sokkal egyszerűbb és jobb a Choose használata a Match -al.

 

Üdv.

Előzmény: akhvel (23981)
Fferi50 Creative Commons License 2014.02.02 0 0 23982

Szia!

 

Ezt felejtsd el, túlkomplikáltam!!!

 

Használd a neveket és a 23979-ben javasoltakat lsz.

 

Hidd el, nevekkel sokkal egyszerűbb.

 

B13 validation source =Choose(MATCH(A13,Kategóriák,0),Kategória_1,Kategória_2)

 

Milyen excel verziót használsz? (2003,2007,2010), azt látom, hogy angolt.

 

Üdv.

Előzmény: akhvel (23981)
akhvel Creative Commons License 2014.02.02 0 0 23981

Hali Fferi50!

 

A te megoldásodnál itt elakadtam:

 

N1 cella =VLOOKUP(INDIRECT(CELL("address"));G1:H2;2;0) itt lookup_value hibát kapok.

 

Mit rontottam el?

 

Alex

Előzmény: Fferi50 (23977)
Fferi50 Creative Commons License 2014.02.02 0 0 23980

Szia!

 

Az offset kérdéseded nem egészen értem.

 

Mit szeretnél pontosan?

 

Üdv.

Előzmény: akhvel (23978)
Fferi50 Creative Commons License 2014.02.02 0 0 23979

Szia!

 

a data validation source "=$A$1:$A$2" az excel kedvenc vesszőparipája. Az idézőjeleket töröld ki és úgy jó lesz.

 

A 23977-s hozzászólásomat felejtsd el, nagyon túlkomplikáltam.

Sokkal egyszerűbben is meg lehet oldani:

Ha maradunk Delila példájánál, akkor

az A1 cella: Első kategória

az A2 cella: Második kategória

 

a B1 cella: Kategória_1

A B2 cella: Kategória_2

 

A B13 data validation source pedig legyen ez:

 

=Choose(MATCH(A13,Kategóriák,0),Kategória_1,Kategória_2)

 

Kategóriák névhez tartozik az A1:A2 cella. A Kategória_1, Kategória_2 cellák pedig Delila hozzászólása szerint.

 

Nevek hozzárendelése tartományhoz:

Sajnos csak magyarul tudom mondani, mert magyar az Excelem:

Képletek - név megadása - megjelenik a párbeszéd panel, ahol ki tudod jelölni a tartományt, illetve megadhatod a nevet. Remélem, valamennyire hasonlítanak az angol nevekre a fordítások.

 

 

Üdv.

Előzmény: akhvel (23978)
akhvel Creative Commons License 2014.02.02 0 0 23978

Köszi a gyors reagokat!

 

A helyzet az, hogy egyik megoldással sem tudtam megcsinálni.

 

Egyrészről, mert még sosem csináltam makrót, annak még utána kell olvasnom és nem volt rá időm.

Másrészről, mert Delila10 megoldását noha végigcsináltam, de nem tudtam hozzárendelni a tartományokat. Tehát képtelen voltam megcsinálni a B13 legördülő cellát.

 

A13 cellában a data validation source "=$A$1:$A$2"

B13 cellában a data validation source "=INDIRECT(A13)" ? Mert erre nekem hibát ad ki.

 

Illetve az OFFSET függvénnyel is vannak bajaim, de annak majd utána olvasok, hogy hogyan is kéne használni. Mert elég egyszerűnek tűnik a leírás alapján, mégsem sikerült alkalmaznom.

 

Elvileg ezt kéne írnom az A1 cellába: =OFFSET(D1;0;1;13;1) itt a zárójelben lévő rész azt jelenti, hogy =OFFSET(D1 cellától;0 sorral lejjebb;1 oszloppal jobbra;13 sor magasságban;1 sor szélességben), és erre D1 reference errort kapok. De nem értem hogy hogyan javíthatnám ki.

 

Delila10, egészen pontosan te milyen képleteket írtál és hova?

 

Előre is köszi!

 

Alex

 

Előzmény: Delila10 (23974)
Fferi50 Creative Commons License 2014.02.02 0 0 23977

Szia!

 

Továbbgondoltam egy kicsit a problémát és a következőre jutottam:

 

Ha a kategóriák elnevezését "szokványos módon" szeretnénk látni, akkor csinálni kell egy táblázatot, ahol meg lehet keresni a kategóriához tartozó nevet, majd onnan már lehet az érvényesítésre hivatkozni. Már csak az volt a gondom, hogy honnan tudjam meg, melyik cellában vagyunk éppen. Erre jó a cella ("cím") függvény.

 

A B oszlop celláinak az érvényesítése: =indirekt($N$1)

 

N1 cella képlete =FKERES(INDIREKT(CELLA("cím"));G1:H2;2;0)

 

G1:G2 tartalmazza az A oszlop celláinak érvényesítését - ezt el is nevezhetjük Kategóriáknak

H1:H2 tartalmazza az alcsoportok NEVÉT, azaz ahogyan el van nevezve a tartomány.

 

Az N1 cella értéke akkor változik, ha a munkalapon egy cella értékét megváltoztatjuk (ha az automatikus kalkuláció van érvényben, ha nincs, akkor nyomni kell egy F9-et).

 

Tehát, ha az A oszlopba valahol kiválasztunk egy kategória értéket, akkor az annak megfelelő alcsoport értékek közül lehet választani.

 

Hátránya: Ezzel a megoldással a B oszlop minden cellájában változik az érvényesítési tartomány (ahol ilyen meg van adva).

 

 

Előzmény: Delila10 (23974)
Fferi50 Creative Commons License 2014.02.02 0 0 23976

Szia!

 

Ez nagyon szimpatikus, de

  • a név megkötések nem feltétlenül felhasználóbarát eredményt adnak (szóköz helyett aláhúzás, stb.)
  • az érvényesítést a b oszlopban külön meg kell oldani, persze lehet a képletet lehúzni de akkor is (és ott marad a másolt - esetleg már nem is helyes - érték a cellában).

A makróban nincs a kategóriákra megkötés és az érvényesítés is megoldódik, sőt az adott kategória első értéke is kiírható azonnal a cellába.

 

Üdv.

Előzmény: Delila10 (23974)
Sánta Kutya (SK) Creative Commons License 2014.02.02 0 0 23975

Hurrá! Pont egy ilyen megoldáson kezdtem törni a fejem, mert kihívásnak tűnt a feladat, de szerintem nem jöttem volna rá.

Előzmény: Delila10 (23974)
Delila10 Creative Commons License 2014.02.02 0 0 23974

Nem szükséges makróval elintézni, egyszerűen megoldható anélkül is.

 

A különböző tartományoknak nevet adsz.
Az A1:A2 nálam a "Kategória" névre hallgat.
Fontos, hogy az allisták azt a nevet kapják, amelyikhez főlista-beli kategóriába tartoznak. Az E1:E13 tartomány neve Kategória_1, az F1:F11-é Kategória_2. A tartományok méretét az OFSZET függvény segítségével rugalmasan változtathatod.

A Kategória egyes elemeinek a nevében nem lehet szóköz, és nem szerepelhet önállóan számjegy.

Az első érvényesítés az A13 cellában van, a lista forrása: =Kategória
A B13-as érvényesítésnél a forrás: =INDIREKT(A13)

 

Előzmény: tbando (23970)
Fferi50 Creative Commons License 2014.02.02 0 0 23973

Szia!

 

Nem kell másolgatni az alcsoportokat egy másik helyre. Mi van akkor, ha az alcsoportok nem azonos számú elemből áll?

Pl.

sör k1:k5

bor l1:l8

pálinka: m1:m3

 

Ha csak simán átmásolod, akkor két eset lehet: vagy üres sorok maradnak a legördülőben, vagy nem látszik minden sor.

 

Ezért másképp kell megoldani:

 

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target = "sör" Then range("B1").validation.modify formula1:="=k1:k5"

If Target = "bor" Then range("B1").validation.modify formula1:="=l1:l10"
If Target = "pálinka" Then range("B1").validation.modify formula1:="=m1:m3"
Application.EnableEvents = True
End Sub

 

Természetesen a "B1" az egy példa cella és fontos, hogy már legyen Datavalidation a cellában. Ha nincs akkor a következő az eljárás (a validation.modify helyett)

range("B1").validation.add   Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:="=k1:k5",Operator:=xlBetween

 

Így akár egy oszlopban is lehethek az alcsoportok, csak egymás után következzenek a tételek és ne keveredjenek.

 

Üdv.

 

 

Előzmény: tbando (23970)
Sánta Kutya (SK) Creative Commons License 2014.02.02 0 0 23972

Át is állítottam, mégpedig miután itt a topikban segítséget kaptam. De amiről beszélek az az  algebra, te magad írtad, hogy az nem működik jól ebben a formátumban sem. Természetesen egy konkrét feladatban mindig meg lehet oldani az általad leírt függvényekkel valahogy, erre mondtam, hogy barkácsolás. A tiszta megoldás az, ami a belinkelt SQL manuálban van.

Előzmény: tbando (23971)
tbando Creative Commons License 2014.02.02 0 0 23971

Ha átállítottad volna formátumot [ó]:00:00-ra, akkor bármilyen hosszú futóverseny időeredményét   gond nélkül jegyezhetted volna fel óra-perc-mp-ben.  Persze én is csak most vagyok ilyen okos, miután a Neomatik példa kapcsán rájöttem, hogy mi fenére is való ez a formátum :))).

Előzmény: Sánta Kutya (SK) (23956)
tbando Creative Commons License 2014.02.02 0 0 23970

Ezt úgy tudod megoldani,  hogy egy  munkalap-change makró az aktuális alcsoportot másolja be az alcsoport listába. Itt pl. 

 

Lista:

főcsoport: e1:e3

alcsoport:g1:g3

 

Féleségek:

   sör: k1:k3

   bor: l1:l3

   pálinka: m1:m3

 

és a makró: amit nem másolhatsz be akárhova, csak annak a munkalapnak a moduljába, amelyiken van a lista

 

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target = "sör" Then Range("k1:k3").Copy Range("g1")
If Target = "bor" Then Range("l1:l3").Copy Range("g1")
If Target = "palinka" Then Range("m1:m3").Copy Range("g1")
Application.EnableEvents = True
End Sub

 

 

 

Előzmény: Neumann Alex (23969)
Neumann Alex Creative Commons License 2014.02.02 0 0 23969

Sziasztok,

 

az alábbiakban kérném a tanácsotokat:

 

Van egy excel táblám az alábbi oszlopokkal:

 

Áru főcsoport, Áru alcsoport

 

Data Validation-el elértem, hogy legördülő listákból lehessen választani a cellákban, viszont azt nem tudom, hogy hogyan tudnám megcsinálni, hogy miután az Áru főcsoport oszlopban szűkítettem, utána az Áru alcsoportban már ne dobja fel az összes lehetőséget, csak az adott főcsoporthoz tartozót. 

 

Pl.

Áru főcsoportok: sör, bor, pálinka

Áru alcsoportok: világos, barna, búza, fehér, rosé, vörös, szilva, alma, barack

És hogyan tudnám megadni neki, hogy ezeket így csoportosítsa:

Sör: világos, barna, búza

Bor: fehér, rozé, vörös

Pálinka: szilva, alma, barack

 

Remélem érthetően magyaráztam, előre is köszi a segítséget!

 

Alex

pimre Creative Commons License 2014.02.01 0 0 23968

Köszönöm. Kipróbáltam, mindkettővel működik. Ezek közül csak a DoEvents-et ismertem, de valamiért azt hittem, hogy ez nem erre az esetre jó.

 

A Screenupdating-ről meg csak első pillanatban gondoltam, hogy ez lehet a ludas.

 

Előzmény: Törölt nick (23966)
Sánta Kutya (SK) Creative Commons License 2014.02.01 0 0 23967

Ha egyből elmondod mind a két kérést, az kb. annyi munka lett volna, mint az egyik egyedül.

Előzmény: csiriprelek (23962)
Törölt nick Creative Commons License 2014.02.01 0 0 23966

Egyébként az Application.Screenupdating-nek ehhez nem sok köze van szerintem.

A Me.Repaint helyett a DoEvents is jó.

 

Előzmény: pimre (23964)
Törölt nick Creative Commons License 2014.02.01 0 0 23965

Me.Repaint

Előzmény: pimre (23964)
pimre Creative Commons License 2014.02.01 0 0 23964

Van egy képernyőkezelési problémám. Egy UserFormon vagyok, és itt fut egy függvényem. A futás egy pillanatában szeretnék egy üzenetet küldeni a felhasználónak, hogy most hosszabb idejű adatszerkesztés folyik, és kis türelmet kérek. Erre egy címkét használok, ami az adott pillanatig nem látható (.visible=False), és itt az értékét True-ra váltom. 

 

Csakhogy ez a címke a programrész futása közben nem jelenik meg. Az Application.Screenupdating értéke true, tehát nem ezen múlik. Ha a programrészletbe egy break-et teszek, akkor megjelenik.

 

Ebből arra következtetek, hogy mivel a Userform futása alatt nincs mit frissülnie a képernyőnek, ezért nem érvényesül a címke megjelenítő beállítás. 

 

Kérdésem, hogy egyrészt jól gondolom-e a hiba okát, másfelől ha igen, akkor létezik-e parancs, amivel a futás közben frissíteni tudom a képernyőt?  

Delila10 Creative Commons License 2014.02.01 0 0 23963

=HA(ÉS(DARABTELI(B:B;A1);DARABTELI(A$1:A1;A1)<2);A1;"")

Előzmény: csiriprelek (23962)
csiriprelek Creative Commons License 2014.02.01 0 0 23962

Köszönöm

és akkor még egyet kérnék

ha egy oszlopban egy adat többször is szerepel, akkor egy adat csak egyszer jelenjen meg

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

=HA(DARABTELI(B:B;A1);"";A1)

Előzmény: csiriprelek (23960)
csiriprelek Creative Commons License 2014.02.01 0 0 23960

Sziasztok!

Egy képletet szeretnék a következőre:

van két oszlop(A,B) adatokkal

a harmadik(C) oszlop azokat azokat az adatokat jelenítse meg amelyek csak az A oszlopban vannak

köszönöm

Törölt nick Creative Commons License 2014.02.01 0 0 23959

Szisz!

:)

Előzmény: NeomatiK (23958)
NeomatiK Creative Commons License 2014.02.01 0 0 23958

Szisztok!

 

NAP() fv.-nyel meg tudtam csinálni. Most már jó :)

 

=NAP(D1)*24*60+(ÓRA(D1))*60+PERC(D1)+(MPERC(D1)/60)

Sánta Kutya (SK) Creative Commons License 2014.02.01 0 0 23957

Ez az előbb írta tükrében logikus viselkedés, mert a nap() argumentuma nem időtartam, hanem dátum, és a 32 valóban 1900. febr. 1.

Tehát nem az a baj, hogy a nap nem százas, mert az, hanem hogy az időtartamkezelési képessége az Excelnek nem alakult ki a törzsfejlődés során. Ennélfogva az időtartamkezelés helyből barkácsolást jelent, csak ez nagyon kicsi számoknál nem mindig tűnik fel.

Előzmény: tbando (23954)
Sánta Kutya (SK) Creative Commons License 2014.02.01 0 0 23956

A másik megoldás külön szummázni az órákat, perceket, mp-ket.

Az Excel alapvetően időpontokkal számol, nem intervallumokkal. Ezt az emerek próbálják időtartamok kezelésére használni, és ez működik is, amíg át nem lépjük az egynapos határt.

(Én például futóversenyek eredményeivel dolgozom, és akkor szembesültem a problémával, amikor egy nagyon hosszú verseny időeredményei egy napnál hosszabbak lettek.)

Épp most néztem, hogy az SQL-ben ezt sokkal korrektebbül megoldották, van külön dátum meg intervallum, és ezeket kényelmesen, normálisan lehet összeadni meg kivonni. http://www.postgresql.org/docs/8.1/static/functions-datetime.html

Na ilyet az Excel nem tud.

Előzmény: tbando (23950)
tbando Creative Commons License 2014.02.01 0 0 23955

Ráadásul nem akármelyik február 1-t, hanem 1900. febr. 1-t :)))). 

Előzmény: tbando (23954)

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