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.
Ha ehető méretű a táblázat, akkor egy másik munkalapon (igen, megint :) ) csinálsz egy olyan függvényt, hogy mondjuk a C15-be ez kerül: =HA(VAGY(ÉS(munka1!C14="";munka1!C15<>"");segéd1!C14="1");1;0), ekkor pontosan az első előfordulásnál lesz egy 1-esed a segédmunkalapon. Ennek a sorszámát már le tudod kérni akár egy FKERES-sel más függvénnyel is, hogy az értéket megkaphasd.
xl2007-ben (angol változat) a következő függvény adja meg a B oszlop utolsó cella értékét:
=INDEX(B:B,MAX((ROW(B:B)*(B:B<>""))))
Magyar verzióban talán: =INDEX(B:B,MAX((SOR(B:B)*(B:B<>""))))
FONTOS: a fenti függvényt úgy kell bevinni, hogy NEM sima enter-t ütsz, hanem CTRL+SHIFT+ENTER-t. Ha jól csináltad akkor {} zárójelek közé kerül a függvény.
A legelső nem üres cella értékét úgy kapod meg ha a fenti függvényben a MAX-ot kicseréled MIN-re.
Próbálok még kitalálni valamit ami xl2003 alatt is működne (mert a fenti B:B hivatkozást az xl2003 nem eszi meg).
A B oszlop cellái adatokkal vannak feltöltve, de nem B1-től B100-ig, hanem pl B12-től B25-ig. Ugyanígy a C, D, stb oszlopok, de változóak az első és utolsó feltöltött cellák.
Függvénnyel szeretném megkerestetni az első kitöltött cellát, illetve annak a tartalmát pl a B oszlopban. Utána az utolsó kitöltött celláét.
A MIN, MAX, illetve a KICSI és NAGY függvények azért nem jók, mert nem sorba rendezettek az egymás alatti adatok. Nekem mindig az első "nem üres" és az utolsó "nem üres" cella értékére lenne szükségem.
Akkor csináld meg a tükörképét egy másik munkalapra, ahol csak =A1 és hasonló képletek vannak. :-)
Vagy véges sok adat esetén HOL.VAN-nal kikeresed a betűt, hozzáadsz hármat és megkapod a sor számát. Egymásbaágyazott HA függvényekkel ki tudod kerestetni, de ez macerásan bővíthető.
valaki tudna nekem segíteni, hogy hogyan tudom fkeres függvénnyel visszaadni egy adott cella alatt 4 sorral lévő cella értékét? magyarul hogy tudnám visszaadni ebben a táblában a különböző változók értékeit?
Egy másik checkbox-al a színét így tudod ki- és bekapcsolni:
Private Sub CheckBox2_Change() If CheckBox2.Value = True Then ActiveSheet.Shapes("Negyzet").Fill.Solid ActiveSheet.Shapes("Negyzet").Fill.ForeColor.SchemeColor = 10 ElseIf CheckBox2.Value = False Then ActiveSheet.Shapes("Negyzet").Fill.Visible = msoFalse End If End Sub
Egy modulból hozzáadtam a munkalaphoz egy alakzatot:
Sub Alakzat() With ActiveSheet.Shapes.AddShape(msoShapeFlowchartProcess, 201.75, 159#, 72#, 48#) .Name = "Negyzet" End With End Sub
A lényeg, hogy nevet adtam neki: "Negyzet"
Ezután a visual basic eszköztárról kiraktam egy checkbox-ot, és annak a programja:
Private Sub CheckBox1_Change() If CheckBox1.Value = True Then ActiveSheet.Shapes("Negyzet").Visible = True ElseIf CheckBox1.Value = False Then ActiveSheet.Shapes("Negyzet").Visible = False End If End Sub
Ha ki van pipálva, akkor látszik az alakzat, aha nincs akkor nem!
Ezt a kérdést a Városi és elővárosi közlekedés (VEÉK) fórumban tessék feszegetni, ott vannak releváns személyek is. :)
"hanem az érkezés időpontját?"
Indulást szoktak feltüntetni :), és egyre több helyen az a gyakorlat (igen, a BKV-n belül), hogy az adott megállóból való indulást szerepeltetik. Mivel minden táblát le kell gyártani (meglepő módon), akkora nagy pluszköltséget nem okoz a dolog, de még nincs így mindenhol, valóban. Talán majd egyszer....
(Azt hiszem, ha változik a menetrend, és újra kell nyomni a táblákat, akkor van ilyenre lehetőség, külön nem fognak menetrendet gyártani, ha az időadatok nem változnak, éppen a költséghatékonyság jegyében, de pontosabb infókat nem tudok.)
HA már felmerült a téma, olyan menetrendet nem lehet excelezni, hogy ne az egymást követő állomások időben mért különbségét lehessen látni, hanem az érkezés időpontját?
Engem pl. tök idegesít, hogy egy BKV busz esetén ki kell számolnom, hogy akkor mikor fog adott helyre érkezni a busz! Igaz, akkor minden megállóba más papírt kéne kitenni, de nem hiszem, hogy ez akkora gond lenne ma már!
Nem bántottál meg, megszoktam már, hogy ez egy férfias világ... (Itt nyúlván nem erről van szó, de nem ráz meg, ha oltanak, ez a lényeg.) :)
Az én megoldásom elméletét bemásoltam, kérlek mondd meg, mondjátok meg, mit csinálnál, csinálnátok másképpen, egyszerűbben (én gondolkoztam a makrókban is, de akkor még teljesen az alapoktól kellett volna tanulni, nulla előképzettséggel, könnyebb volt képletekkel, most már más a helyzet).
Hát, a legperverzebb ötletem (amivel anno én csináltam), hogy külön cellában kezelem az órát, a percet és a másodpercet (S-Bahn menetrend volt, ott kellett a másodperc is, de módszertanilag semmi extra). És tudta kezelni az éjfélt is. A kavar az volt, hogy ha a vonat valahol áthalad, akkor csak indulási időadat van, érkezési nincs (ha a tartózkodás üres, akkor halad át). Ez azért gond, mert hol az érkezési, hol az indulási adatot kapom meg az előző indulás + menetidőből, attól függően, hogy a tartózkodási idő cellája üres-e. Az működött, de gonosz módon nem is adom ingyen. :-)
A legeslegperverzebb pedig az, hogy az órát csak akkor írja ki, ha változik az előzőhöz képest, de az első és az utolsó előfordulásnál mindig szerepelteti. Ez egy másik munkalapra került, másképpen megformázva (kicsit a MÁV szolgálati menetrendje alapján). Itt már volt valami gond: azt hiszem, az éjfélt nem mindig tudta kezelni.
Az itt már elhangzott megoldás kellően sok csacsogással megfűszerezve és a saját szavaimmal előadva, tizenegyedikei keltezéssel (részlet):
Na, ezt meg lehet csinálni. :)
Csinálj egy menetidős oszlopot, és oda kell beírni, hogy hány perc legyen az út. De arra vigyázz, hogy ne számnak legyen formázva, hanem időnek, és akkor jó lesz. :)
(Az indulási időket úgyis időnek kell megformázni, és az Excel ugye úgy dolgozik, hogy asszem 1904. január 4-től számolja a napokat. Tehát ha 35131-et írsz be, az egy konkrét napot határoz meg. Ha időt akarsz megadni, azt pedig törtként: tehát a 35131,5 az eme konkrét napnak a dele, azaz 1996. március 7. 12.00 lesz az. :-) Az Excel így kezeli a napokat, időpontokat, függetlenül a megjelenítéstől, azaz hogy te csak dátumot, csak időpontot, illetve ezek valamilyen formátumú kombinációját, töredékét akarod kiíratni.)
Tehát: minden időnek legyen formázva, és akkor a szerkesztőlécen be tudod állítani a menetidőt, és ezt kell görgetni.
Ha többfajta menetidővel kell dolgozni (pl. más-más sebességcsoportokra), akkor vegyél fel több menetidő-oszlopot, és mondjuk egy HA függvénnyel a vonatszám alapján eldöntöd, hogy melyik idővel kell számolnod (pl. HA(vonatszám>37000;kisebb_menetido+elozo_indulas;nagyobb_menetido+elozo_indulas).
Csak arra bátorkodtam célozni, hogy számomra nem nyilvánvaló, mit is mondtál neki. Ha látom, talán magam is meg tudom mondani, mi nem jó benne (már ha tényleg hibás elgondolás), és akkor tudok itt villogni vele.
Az is eszembe jutott, hogy esetleg két nicken írsz, és néha kevered őket. Vagy ilyesmi.
Amúgy a topik "szétoffolása" nem végzetes hiba, megtörtént már párszor, és mindenki túlélte ;-)
Sőt, szerintem jót tesz a közösségi szellemnek, ha néha van egy kis csevej kevésbé szakmai dolgokról.