Ardonaiel
04.08.09,18:37
Ahojte,

Mám reťazec s ktorého potrebujem vytiahnuť len určitú časť, ktorá ale nemá pevnú dĺžku. Tá časť je číslo 99000005, viď nižšie. Toto číslo môže byť 4 miestne, 6 miestne atď. Skúšam funkcie InStr(), Mid(), Len() a pod., no nedarí sa mi to vymyslieť. :confused:

Reťazec: (AA/8000102473/0/5110, EAN 99000005)

vopred ďakujem za pomoc.
Chobot
05.08.09,06:31
Ahojte,

Mám reťazec s ktorého potrebujem vytiahnuť len určitú časť, ktorá ale nemá pevnú dĺžku. Tá časť je číslo 99000005, viď nižšie. Toto číslo môže byť 4 miestne, 6 miestne atď. Skúšam funkcie InStr(), Mid(), Len() a pod., no nedarí sa mi to vymyslieť. :confused:

Reťazec: (AA/8000102473/0/5110, EAN 99000005)

vopred ďakujem za pomoc.

Takže to koncové číslo nemá pevnú dĺžku. A tie predchádzajúce znaky majú pevný počet znakov? A pred tým číslom je vždy slovo EAN? Je medzi "EAN" a číslom medzera?

Treba nájsť v reťazci nejakú fixnú časť a od nej potom skúsiť vydedukovať to číslo. Excel nie je "inteligentný" aby sám rozpoznal číslo, keď nie je štandardizované v každej bunke.
robin78
05.08.09,06:44
Mozes uviest viacej prikladov? V tom retazci sa to cislo vzdy nachadza za slovom EAN, resp. je vzdy ako posledne a od zvysku je oddelene medzerou?
Ardonaiel
05.08.09,07:54
Áno, koncové číslo nemá pevnú dĺžku, predchádzajúce znaky nemusia mať pevný počet znakov ale sú vždy oddelené lomítkom, slovo EAN je vždy v reťazci pred číslom a je oddelené od čísla medzerou, na začiatku a na konci je vždy zátvorka.
Chobot
05.08.09,09:18
Áno, koncové číslo nemá pevnú dĺžku, predchádzajúce znaky nemusia mať pevný počet znakov ale sú vždy oddelené lomítkom, slovo EAN je vždy v reťazci pred číslom a je oddelené od čísla medzerou, na začiatku a na konci je vždy zátvorka.

TAk potom musíme hľadať riešenie, ako povedať Excelu, že za slovom EAN je to, čo potrebujeme vybrať. Niečo poskúšam, ak nájdem nejaký spôsob, dám vedieť. Makro by to určite zvládlo, ale v makrách nie som "doma".
robin78
05.08.09,09:23
Áno, koncové číslo nemá pevnú dĺžku, predchádzajúce znaky nemusia mať pevný počet znakov ale sú vždy oddelené lomítkom, slovo EAN je vždy v reťazci pred číslom a je oddelené od čísla medzerou, na začiatku a na konci je vždy zátvorka.

ukazka ako by to mohlo fungovat:


Dim retazec As String
Dim znak As String
Dim dlzka As Integer
Dim vysledok As String

retazec = "(AA/8000102473/0/5110, EAN 99000005)" ' retazec na spracovanie
dlzka = Len(retazec) ' zistenie dlzky

' cyklus v ktorom prechadzame retazec od konca az pokial nenajdeme prvu medzeru
For i = dlzka - 1 To 1 Step -1
znak = Mid(retazec, i, 1) ' testovany znak

If znak = " " Then
vysledok = Mid(retazec, i + 1, dlzka - i) ' extrahovanie cisla do premennej vysledok
Exit For
End If
Next i
robin78
05.08.09,09:32
v pripade az by si to chcel riesit vzorcom, tak tu je vzorec za predpokladu ze text je ulozeny v bunke A1:

=MID(A1;SEARCH("EAN";A1)+4;LEN(A1)-SEARCH("EAN";A1)-4)
Ardonaiel
05.08.09,09:34
ď, aj mňa by zaujímal príklad bez makra =o) ...a nedá mi to pokoj.
robin78
05.08.09,09:50
ď, aj mňa by zaujímal príklad bez makra =o) ...a nedá mi to pokoj.

ved je uvedeny vyssie ;)
Ardonaiel
05.08.09,10:23
jaska, nestihol som reagovať =o) ...ďakujem, PERFEKTNÉ, klobúk dolu.