Oldal: 1 / 1

[Megoldva] Cellában az utolsó vessző utáni rész

Elküldve: 2013. szeptember 18., szerda 2:48
Szerző: sutyika
Sziasztok!

Ki kellene nyernem egy adott oszlop celláiból az utolsó vessző utáni részt.
Az is segítene, ha meg tudnám kerestetni az utolsó vesszőt egy cellában. Onnan már a "jobb" és a "hossz" függvény már megoldja.

Előre is köszönöm.

András

Re: cellában az utolsó vessző utáni rész

Elküldve: 2013. szeptember 18., szerda 12:33
Szerző: Zizi64
Basic makrófüggvénnyel (...írnod kell egyet...) a legcélszerűbb ezt megvalósítani. Paraméterként átadod a cella tartalmát a függvénynek, és ciklikusan végigpásztázod a stringet az utolsó vesszőig, és aztán veszed az adott pozíciótól a végéig terjedő részt, amit a függvény kimenetén visszaadsz a hívó cellának...

Ha fix (mindig ugyanolyan) számú vessző fordulhat csak elő a szövegekben, akkor cellafüggvényekkel is operálhatsz.
Például, ha lehet tudni előre, hogy pontosan 3 db vessző van (valahol) az A1 cellában található stringben, akkor használhatod a:

Kód: Egész kijelölése

=RIGHT(A1;LEN(A1)-FIND(",";A1;FIND(",";A1;FIND(",";A1;1)+1)+1))
képletet.

Egyéb ötlet nem jut az eszembe.

Re: cellában az utolsó vessző utáni rész

Elküldve: 2013. szeptember 18., szerda 17:34
Szerző: Zizi64
Itt egy működő példa a makrófüggvényre.

Paraméterek:
Keresendo : a karakter, aminek az utolsó előfordulását keressük
Szoveg : a szöveg, amiben a Karakter utolsó előfordulását keressük.

A függvény visszatérési értéke a keresett karakter utolsó előfordulása utáni szövegrész. Ha egyetlen egyszer sem fordul elő a karakter a szövegben, akkor a visszatérési érték "", azaz üres string.


Kód: Egész kijelölése

Function Jobbrol(Keresendo, Szoveg as string) as string
Dim Hossz as integer
Dim i as integer
	
	Hossz = len(Szoveg)

	for i = Hossz to 1 Step -1
		If Mid(Szoveg,i,1) = Keresendo then
			Jobbrol = Right(Szoveg, Hossz - i)
			Exit function
		End if	
	next i
Jobbrol = ""

End function


Használata (a fönti példából kiindulva, amikor is a szöveg az A1 cellában van):

Kód: Egész kijelölése

=JOBBROL(",";A1)
Módosíthatod kódot úgy is, hogy nem egy karaktert figyel, hanem az egy karakternél hosszabb keresendő szövegrészt figyeli a hosszú szövegben.
A fenti példakód nem vizsgája, csak feltételezi, hogy EGYETLEN karaktert adsz át keresésre.

Re: [Megoldva] Cellában az utolsó vessző utáni rész

Elküldve: 2013. szeptember 19., csütörtök 14:47
Szerző: Zizi64
Látom, megjelölted a témát, hogy "MEGOLDVA", de esetleg szóban is visszajelezhettél volna, hogy melyik megoldás volt a számodra a megfelelő (a makró, vagy a cellafüggvényes...)