Kezdőoldal » Számítástechnika » Programozás » Excelben hogyan lehet két...

Excelben hogyan lehet két feltétel teljesülése esetén egyik oszlopról egy másikra ugrani, és ottmaradni, az értékeket a továbbiakban onnan lekérdezni, majd vagy vissza, vagy tovább ugrani?

Figyelt kérdés

Három oszlop között kell "ugrálni".

Eddig kipróbáltam offset, choose, match, min, column, és egyéb függvényeket, többszörösen egymásba ágyazva, de nem tudtam megoldani.

Hogy egyértelmű legyen a kérdés, csináltam e szkrínsatot, itt van:

[link]


Pirossal jelöltem az ugrások nyomvonalát.

Az egyik feltétel a D oszlopban van, jelen esetben 4.

A másik feltétel a másik két oszlop közül az egyik minimumértéke. A képen most nulla mindegyik esetben.

E-F-G oszlopokba kézzel beírtam a "megoldást", a H oszlopban az összefűz függvénnyel kiírattam a végeredményt.


Hogy még érthetőbb legyen itt van az xls file:

[link]



2017. júl. 16. 20:48
1 2
 1/15 anonim ***** válasza:
45%

Nem lehet sehogysem ugrálni.

Neked valami vba kód kéne, de nem igazán tudom értelmezni mi a cél.

2017. júl. 16. 21:34
Hasznos számodra ez a válasz?
 2/15 A kérdező kommentje:

Elég egyértelmű szerintem a cél.

Ha megnézed a képet, ott van a H oszlopban.

2017. júl. 16. 22:02
 3/15 anonim ***** válasza:

Nagyon nem.

Megy valami piros vonal jobbra balra kitudja milyen logika alapján, a H oszlopba meg gyűjtesz színeket 3 másik oszlopból.

Ez eddig katyvasz.

2017. júl. 16. 22:06
Hasznos számodra ez a válasz?
 4/15 anonim ***** válasza:

"Az egyik feltétel a D oszlopban van, jelen esetben 4." - ez világos.

"A másik feltétel a másik két oszlop közül az egyik minimumértéke." - melyik másik két oszlop az A, B és C közül?

"A képen most nulla mindegyik esetben." - a 9., 25. és 31. sorban egyetlen 0 sincs, tehát ezekben az esetekben a minimumérték sem lehet 0.


Kifejtenéd kicsit részletesebben az ugrás logikáját?

2017. júl. 16. 22:29
Hasznos számodra ez a válasz?
 5/15 A kérdező kommentje:

A-B-C oszlopok között kell ugrálni.

A "mindegyik eset" a piros vonal menti értékekre vonatkozik.

Van olyan sor is, amikor nincs nulla minimumérték, de akkor az annyi, amennyi. Nem ez a lényeg.

Egyébként minden sorban egy minimumérték van, úgy értem, nincs olyan sor, hogy pl: 1-1-3 vagy 2-4-2, mert akkor valóban értelmetlen lenne a feladat.


A színek az A-B-C oszlopok első sorában vannak feltüntetve.

A D-ben van az első feltétel, az adott oszlopban ha elérjük a 4-est, akkor kell ugrani a minimumértéket tartalmazó másik oszlop azonos sorára.


AZ E-F-G oszlopok az én ötletem, ezekben próbáltam függvényekkel megoldani, hogy azt kapjam végül, ami a H oszlopban van.

De nem sikerült.

Ezért begépeltem, minek kellene lennie E-F-G -ben.

Ha E-F-G tartalmát összefűzöm, akkor kapom meg a H-t


De lehet, hogy VBA kell a megoldáshoz.

Nem tudom.

Azért kérdeztem.

2017. júl. 16. 23:57
 6/15 anonim ***** válasza:

Aha! Szóval az a lényeg, hogy kezdetben az A oszlopot hasonlítod a D-hez (természetesen mindig a D-hez hasonlítunk), és ha az A oszlop aktuális sorának értéke megegyezik a vele azonos sorban levő, D oszlopbeli cellaértékkel, akkor kell ugrani, méghozzá a másik két oszlop közül a minimális értéket tartalmazóra. Ha pedig nincs egyezés a D-vel, akkor csak egy sorral lefelé kell haladni a táblában.

A színek kiválasztása az E, F, G oszlopokból, és a H oszlop "legyártása" egyértelmű. :)

2017. júl. 17. 00:11
Hasznos számodra ez a válasz?
 7/15 anonim ***** válasza:
Azt lehagytam, de nyilvánvaló, hogy az A, B, C oszlopok közti ugrás után természetesen az aktuális oszlop celláját hasonlítjuk a vele egy sorban levő, D oszlopbeli cellához (tehát nem mindig az A-hoz hasonlítunk).
2017. júl. 17. 00:13
Hasznos számodra ez a válasz?
 8/15 anonim ***** válasza:

Ha nem kellene figyelembe venni, hogy korábban mi volt az aktuális oszlop koordinátája (ahol az ábrán a piros vonal van), akkor könnyebb lenne, de így sem kivitelezhetetlen... :)



I.,

Kezdetben az A, B, C oszlopok közül az A, vagyis a háromból az első oszlop az aktuális. Ezt az értéket eltároljuk mondjuk pl. a J1-es cellában, vagyis oda 1 kerül.

A J oszlopban ezután J2-től J32-ig ki lehet számoltatni az aktuális oszlop indexét (vagy sorszámát, csak hát oszlopot sorszámozni kicsit megtévesztő lehet). Az A oszlop indexe legyen 1, a B oszlopé 2, a C-é pedig 3; majd az így kapott, számmal kifejezett indexet fel lehet használni az A1:A3 tartományból a színek szöveges kinyerésére (piros, zöld vagy kék).



II.,

Az oszlopindex számításának egy lehetséges szabálya: ha a D oszlop egyezik az A oszloppal és korábban az A oszlop volt az aktuális, akkor most az aktuális oszlopindex legyen a B és C oszlopok közül a kisebb értéket tartalmazónak az oszlopindexe. Egyébként ha a D oszlop a B oszloppal egyezik, és korábban a B oszlop volt az aktuális, akkor most az oszlopindex legyen az A és C oszlopok közül a kisebb értéket tartalmazónak az oszlopindexe. Egyébként ha a D oszlop a C oszloppal egyezik, és korábban a C oszlop volt az aktuális, akkor most az aktuális oszlopindex legyen a A és B oszlopok közül a kisebb értéket tartalmazónak az oszlopindexe. Egyéb teendő nincs.


(Magyarán: ha a D oszlop egyezik az A, B és C közül valamelyikkel, és ez az oszlop egyben aktuális oszlop is, akkor az új aktuális oszlop a másik két, nem aktuális oszlop közül a minimumérték oszlopa lesz.)


1. megjegyzés: a feltételben a "ha a D oszlop egyezik az A oszloppal" alatt azt értem, hogy a D oszlop aktuális sorának értéke megegyezik az ugyanabban a sorban, de az A oszlopban található értékkel. Tehát nyilván nem teljes oszlopokat hasonlítok össze, hanem csak két oszlopnak az ugyanabban a sorban levő celláit. Ez a képlet függőleges másolásakor ad némi könnyebbséget.


2. megjegyzés: "és korábban az A oszlop volt az aktuális" - ezt nyilván nem betűvel, hanem számmal adom az Excel tudtára, kezdetben ez lesz az az érték, amit a J1-be konstansként beírtam, utána pedig mindig az egy sorral feljebb kiszámolt oszlopindex (oszlopsorszám, vagyis 1, 2 vagy 3).


3. megjegyzés: "akkor most az aktuális oszlopindex legyen a B és C oszlopok közül a kisebb értéket tartalmazónak az oszlopindexe" - nyilván ezt is számként tárolom, nem betűvel.


Az oszlopok indexének számként való tárolása azért szükséges, mert a megoldásban INDEX és HOL.VAN függvények szerepelnek, amik számokat tudnak indexként feldolgozni, betűket nem.


A fenti megjegyzések a J oszlopban alkalmazandó szabályrendszer teljes egészére érvényesek.



III.,

A J2:J32 tartományban található, a II. pontbeli módon kinyert oszlopindexből (1, 2 vagy 3) egy egyszerű INDEX függvénnyel meg lehet határozni pl. a K oszlopba a számoknak megfelelő színeket.


Ilyen módon az E, F, G, H oszlopok a táblázatból elhagyhatók, mindössze egy segédoszlop kell, amiben az aktuális oszlop indexét (sorszámát) tároljuk, így a probléma megoldható VBA nélkül, kizárólag HA, ÉS, MIN, INDEX és HOL.VAN függvényekkel és némi agyalással. :)


Természetesen ha a D1-be 4 helyett mást írok, úgy is működik.

2017. júl. 17. 02:34
Hasznos számodra ez a válasz?
 9/15 anonim ***** válasza:

Az I. pontban a hibás rész ("majd az így kapott, számmal kifejezett indexet fel lehet használni az A1:A3 tartományból a színek szöveges kinyerésére (piros, zöld vagy kék)") helyesen:


majd az így kapott, számmal kifejezett indexet fel lehet használni az A1:C1 tartományból a színek szöveges kinyerésére (piros, zöld vagy kék).


Tehát a színek nyilván nem az A oszlopban vannak az A1:A3 tartományban, hanem az első sorban, az A1:C1 tartományban.


Késő van már, na... vagy inkább még korán? :)

2017. júl. 17. 02:42
Hasznos számodra ez a válasz?
 10/15 A kérdező kommentje:

Köszönöm a munkádat, már dolgozom az ügyön.

Külön nagyra értékelem, hogy éjszaka is foglalkoztál vele.

Nem ígérem, hogy nem fogok elakadni, de igyekszem a módszered szerint rendbe tenni a cellákat. :)

2017. júl. 17. 15:45
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!