Keresés

Részletes keresés

Fferi50 Creative Commons License 2014.01.09 0 0 23741

Szia!

 

Én is úgy gondolom.:)

Nálam vegyesen fordul elő - mármint cells és range - mivel elég sokszor oszlopszámot kapok vissza és akkor már kényelmesebb a cells(sor,oszlopszám), mint az oszlopot még betűvé is alakítani. A betűs verzió akkor játszik általában, ha cella címből tudok kiindulni.

Ezért mostanában rátértem arra, hogy cella tartalom/érték helyett inkább magával a cellával (tartománnyal) dolgozom, amiből több mindent ki lehet nyerni, ha szükséges és talán egy kicsit jobban el lehet kerülni a futási hiba keletkezését.

 

Üdv.

Előzmény: pimre (23740)
pimre Creative Commons License 2014.01.09 0 0 23740

Szerintem is egyenértékű. Pusztán szokás kérdése. Nem?

Előzmény: Fferi50 (23738)
pimre Creative Commons License 2014.01.09 0 0 23739

Én viszont nagyobb programban szívesebben paraméterezek. Tehát a "W" az nálam a program elején deklarált beszélő public oszlopnév. Ha például filmcímekkel dolgoznék, és az első 3 oszlop tartalma a sorszám, a rendező és a cím lenne, akkor ssz="A", rendezo="B" és filmcim="C", és onnan kezdve a névvel hivatkozom rájuk. És ha évek múlva hozzá kell nyúlni a programhoz, akkor véletlenül sem tudom eltéveszteni az oszlopnevet. De néha kitüntetett sorok számát is paraméterezem. Ha például többsoros a fejléc, és a 6. az első tényleges adatsor, akkor annak is neve van: elsoadatsor, így nem probléma, hogy a ciklusokat melyik sortól kezdjem szervezni. Sőt, ha egyszer be kellene szúrni a fejlécbe még egy sort, akkor sem kell végigbogarásznom a programot, hogy fordul elő a 6-os szám, mint első sor, amit így 7-re kell javítani.

Így aztán néha a program fejlécében több tucat public változó van deklarálva, és egy - az elején meghívott - függvényben pedig ezek deklarációinak felsorolása (lehetnének konstansok is, de bizonyos okokból az Excelben jobban szeretem a public-ot)

 

Viszont mostantól át fogok térni én is a cells(sor, oszlopnév) formára, mert az megspórolja a jelenleg használt oszlopszámmá alakító függvényem meghívását.

Előzmény: Delila10 (23737)
Fferi50 Creative Commons License 2014.01.09 0 0 23738

Szia!

 

Szerintem a range("W" & sor) sem rosszabb.

 

Üdv.

Előzmény: Delila10 (23737)
Delila10 Creative Commons License 2014.01.09 0 0 23737

Egy ideje szívesebben használom a cells(sor, "W") formátumot – ha fixen, nem változóval hivatkozom az oszlopra –, mintha a W helyett 23-at írnék. Könnyebb visszakeresni, miről is van szó.

Előzmény: pimre (23726)
Delila10 Creative Commons License 2014.01.09 0 0 23736

Sub mm()
    Dim datdatum As String
    datdatum = Year(Date) + 1 & "_" & Right("0" & Month(Date), 2) _
           & "_" & Right("0" & Day(Date), 2)
    ActiveWorkbook.SaveAs Filename:="Valami_" & datdatum 
End Sub

Előzmény: exszajmon (23730)
pimre Creative Commons License 2014.01.09 0 0 23735

Szoktam használni a Range-t, de valahogy megszoktam a cells() szintakszisát, bár ha belegondolok, lehet, hogy semmi különösebb okom nincs rá.

Előzmény: Fferi50 (23733)
pimre Creative Commons License 2014.01.09 0 0 23734

És szerintem nem is célszerű pusztán a dátum számjegyeit használni fájlnév gyanánt. pontosabban nem szerencsés azzal kezdeni. Célszerű legalább egy szövegkaraktert elétenni. Konkrét exceles példát ugyan nem tudok hozni, hogy zavarokat okozhat-e de valahogy régesrégi gyakorlat, hogy megnevezéseket általában nem kezdünk számjeggyel. Úgy tudom, hogy biológiában az állat- és növényneveknél ez kötelező előírás, személyneveknél, de más tulajdonneveknél sem szokás. A királyoknál is római szám, azaz betű volt a kezdet :-) Szóval kerülendőnek gondolom itt is.

Előzmény: Fferi50 (23732)
Fferi50 Creative Commons License 2014.01.09 0 0 23733

Szia!

 

Hát nem feltétlenül bőbeszédű a Help. De a cells-nek ezt a tulajdonságát valami miatt én kezdettől fogva tudtam és használtam, azt már ne kérdezd meg,hogy honnan, mert ha megkövezel akkor sem tudom megmondani. Nehéz is volt megszokni, hogy a Range-ben a betűszám (oszlop-sor), viszont a cells-ben a szám,betű (sor,oszlop) a sorrend. Sokszor összekevertem, néha még ma is. De ha betűd már van, akkor miért nem használod inkább a Range-et, sokkal egyszerűbb a Range("Betű" & sorszáma), mint átalakítgatni a betűt számmá.:))

 

Üdv.

 

Előzmény: pimre (23726)
Fferi50 Creative Commons License 2014.01.09 0 0 23732

Szia!

 

Másik kérdésedre:

Szerintem a fájlnévhez nem használhatod fel egy az egyben a dátumformátumot, mivel abban olyan karakterek vannak, amelyeket nem lehet ott használni. Azokat át kell alakítani, pl. a replace függvénnyel a pontok helyére tehetsz aláhúzást, stb.(Illetve ez nyilván dátumformátum függő, vagy használhatod a számalakját is a dátumnak, hiszen a dátumot is számként kezeli az Excel).

A mentéshez nézd meg a SaveAs metódust.

 

Üdv.

 

Előzmény: exszajmon (23730)
Fferi50 Creative Commons License 2014.01.09 0 0 23731

Szia!

 

Nézd meg a DateAdd függvényt lsz.

 

Üdv.

Előzmény: exszajmon (23730)
exszajmon Creative Commons License 2014.01.09 0 0 23730

Sziasztok!

 

Tudnátok segíteni, két kérdésem lenne.

Az első:

 

Hogyan lehet egy dátum változóhoz hozzáadni pontosan egy évet pl: 2013.01.01 helyett 2014.01.01 legyen. Ezt egy datdátum változóban tárolom ezt szeretném valahogyan növelni egy évvel.

 

A második kérdésem ehhez kapcsolódik:

 

Meg lehet valahogy oldani, hogy ez az új dátum legyen a makró által elmentett új fájl neve is egyeben?

 

Előre is köszi

 

 

 

 

onezoli Creative Commons License 2014.01.09 0 0 23729

És a probléma megoldva..bizonyára a szövegszámok angol formátuma ami gondot okozott...maga a pontok cseréje vesszőre nem oldotta meg automatikussan , de utána Delila javaslata vagy Érték képlet már pozítiv eredménnyel zárult. 

Köszönöm a segítséget!!

Előzmény: Fferi50 (23702)
Fferi50 Creative Commons License 2014.01.09 0 0 23728

Szia!

 

A makro nyelve független a területi beállításoktól, internacionalista. Azt írtad, hogy az utolsó sort már meg tudod találni, erre írtam, hogy annak a sorszámához egyet hozzáadva megkapod a következő cellát a sorban.

 

A cellakereső makró ügyében PImre 23712-es hozzászólására gondoltam, utólag írtam is, hogy bocs mindkettőjük felé.

 

A makro:

Sub utolsocella()

Range("A" & Rows.Count).End(xlUp).Offset(1,0).Select

End Sub

 

Ezt írd be egy modul lapra, vagy a munkalap kódlapjára.

 

Üdv.

Előzmény: DominicWolf (23727)
DominicWolf Creative Commons License 2014.01.09 0 0 23727

Nem baj, hogy céges és angol az Excel?

Előzmény: Fferi50 (23710)
pimre Creative Commons License 2014.01.09 0 0 23726

Igen, csak éppen azt nem gondoltam, hogy a keresés megőrzi az utolsó makróban végrehajtott keresés paramétereit a következő kézi keresésnél.

 

Egyébként egyre több ilyen elemi felfedezésem van. Például jó egy órája fedeztem fel a cells() függvény egyik újdonságát. Hosszú ideje használom a cells(sor, oszlop) formátumot, és mostanáig meg voltam győződve róla, hogy mindkét paraméternek numerikusnak kell lennie. Ezért ahol string formában áll rendelkezésemre az oszlop értéke, ott mindig átszámítottam azt sorszámra. De néhány hete egy helyen eltévesztettem. Akkor észre sem vettem, most döbentem meg, hogy mitől működik jól. Hát nem elfogadja mindkét változatot? És sajnos a cells() leírását nem találom a VBA helpben.

Előzmény: Fferi50 (23720)
DominicWolf Creative Commons License 2014.01.09 0 0 23725

Köszi a segítséget, de ha nem gond leírnád szó szerint, ami a macroba kerül mondjuk az A oszlora.

 

Köszi

Előzmény: Törölt nick (23707)
pimre Creative Commons License 2014.01.09 0 0 23724

Nem szokásom a sértődés, de itt különösen rám nézve lenne (alaptalanul) hízelgő:-)

Előzmény: Fferi50 (23719)
tbando Creative Commons License 2014.01.09 0 0 23723

Kösz.  Így első olvasásra nem igen értem, de majd foglalkozom vele. Ha elakadok, jelentkezem. 

Előzmény: Fferi50 (23715)
Sánta Kutya (SK) Creative Commons License 2014.01.09 0 0 23722

Aha, így már értem.

Előzmény: tbando (23721)
tbando Creative Commons License 2014.01.09 0 0 23721

Természetesen a munkafüzetben 9-t adok hozzá. Itt csak jelezni akartam, hogy a kezdőcellától függ hogy mennyi legyen az a 9. 

Előzmény: Sánta Kutya (SK) (23714)
Fferi50 Creative Commons License 2014.01.09 0 0 23720

Szia!

 

Én is ezt mondtam, csak nem olyan direkt módon. (A keresés megőrzi az utolsó beállításokat.)

 

Üdv.

 

 

Előzmény: pimre (23711)
Fferi50 Creative Commons License 2014.01.09 0 0 23719

PImre! Jimmy!

 

Ezer bocsánat, hogy összekevertelek benneteket!  Meg nem sértődjön egyikőtök se!

 

Üdv. 

Előzmény: Fferi50 (23718)
Fferi50 Creative Commons License 2014.01.09 0 0 23718

Szia!

 

Ennél egy kicsit bonyolultabb a helyzet. Másik topikban - de lehet, hogy itt is - volt már errő szó és majdnem késhegyre menő vita alakult ki, hogyan találjuk meg az oszlop/sor utolsó celláját, amibe már írhatunk.

 

Ha folytonos a cellák kitöltése, akkor az End(xldown), illetve End(xltoright) +1 sor/oszlop (offset) megfelelő.

De ha vannak üres cellák közben, akkor ez már nem jó, hacsak nem a "lukakba" akarunk írni.

 

Ezért sokkal jobb és minden helyzetben használható a Jimmy által leírt mód. ahol a legutolsó sorból, oszlopból indulunk ki és visszafelé nézzük az első tele cellát az End(xlUp), illetve az End(xltoleft) móddal, majd erre jön a +1 sor v. oszlop.

 

Így nem kell semmilyen függvénnyel bűvészkedni.

 

Üdv.

 

Előzmény: Sánta Kutya (SK) (23716)
Fferi50 Creative Commons License 2014.01.09 0 0 23717

Szia!

 

Szerintem azért, mert A10-től indult az oszlopban a keresés, ha nem adja hozzá, akkor beleír a nem üres cellákba.

De gondolom, ez csak egy példa volt, mert onnan indult a nem üres cellák sorozata.

 

Viszont sokkal egyszerűbb "alulról" közelíteni a meghatározáshoz, ahogy Jimmy írta.

 

Üdv.

Előzmény: Sánta Kutya (SK) (23714)
Sánta Kutya (SK) Creative Commons License 2014.01.09 0 0 23716

Akkor ez egy sima darab2-vel is helyettesíthető.

Előzmény: Fferi50 (23715)
Fferi50 Creative Commons License 2014.01.09 0 0 23715

Szia!

 

Nem olyan bonyolult és kísérteties, mint amilyennek látszik.

A keresési feltételt úgy kell beírni, hogy "<>" & "szöveg".

Ha tehát a szöveged ="" azaz üres sztring, hogy fogod látni ezt a kifejezést: "<>" & ""? Kitaláltad: "<>". Tehát ez a két kifejezés az excelnél ugyanazt az eredményt adja, azaz nem üres feltételként értelmezi. De ugyanezt jelenti a "*" feltétel is, mivel a * a bármely karaktert helyettesítő "jóker".

Ennek ellentettje, a "=" pedig mit jelent?  "Természetesen" azt, hogy üres(!) cellákat keresel. 

 

Viszont amit te írtál be:"<>""" az a nem egyenlő két db idézőjel feltételt jelenti, olyan pedig ugye nem sok cella van/volt az oszlopban.

 

(Kísérletezéshez javaslom a függvény beírása után a szerkesztőlécen az fx-re kattintva előjövő párbeszéd ablakot, amibe beírhatod a különböző paramétereket és azonnal látod az eredményt.)

 

Üdv.

Előzmény: tbando (23713)
Sánta Kutya (SK) Creative Commons License 2014.01.09 0 0 23714

Nem értem. A sor(a10) konstans 10. Tehát hozzáadtál a darabtelihez 9-et. Miért ilyen bonyolultan?

Előzmény: tbando (23713)
tbando Creative Commons License 2014.01.09 0 0 23713

Nem egészen a te kérdésedre a válasz (arra Fferi tökéletes választ adott), de azért mégiscsak a  kérdéssel kapcsolatos. Én, ha egy táblázat utolsó sorát akarom meghatározni makró nélkül, az alábbi függvényt szoktam használni (ha a táblázat az A oszloppal kezdődik, ha a választott kezdőcellától a táblázat végéig nincs üres cella az oszlopban, utána viszont csak üres cella van):

 

=darabteli(a10:a10000;"<>")+sor(a10)-1

 

A problémám e képlettel csak annyi, hogy nem értem a "<>" feltételt. Eredetileg nem ezt akartam beírni, de véletlenül így sikerült. És müködik.  Amit meg akartam volna, azaz az  "<>""",  meg nem a táblázat utolsó sorát adja :))).

 

Megmagyarázná valaki az első feltételt? Mármint azt, hogy az excel szerint mivel nem egyenlő a nem egyenlő?

 

Előzmény: DominicWolf (23709)
pimre Creative Commons License 2014.01.09 0 0 23712

Én így szoktam megkeresni egy oszlop utolsó adatát: utolsósor = Range("A" & Rows.Count).End(xlUp).Row

A következő sor értelemszerűen 1-el nagyobb: Range("A" & Rows.Count).End(xlUp).Row+1

 

Az "A" helyén természetesen a keresett oszlop betűjelének kell állnia.

Előzmény: DominicWolf (23709)

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