< návrat zpět

MS Excel


Téma: Výtah PSČ z buňky rss

Zaslal/a 17.10.2012 20:11

Prosím o radu, potřebuji oddělit PSČ do nových buňek, vzhledem k tomu, že se nachází v buňce pokaždé na jiném místě, nevím jak na to. Moc díky. V příloze jsou příklady, jak to může vypadat.

Příloha: zip9933_psc.zip (6kB, staženo 29x)
Zaslat odpověď >

Strana:  1 2   další »
#009937
avatar
No, ono to asi ani v této situaci nepůjde .-).
V tom souboru je nějaká změť textu, která je pokaždé jiná a nevidím tam žádné kritérium, jak z toho to PSČ vytáhnout. Pokud by třeba před každým PSČ bylo napsaný "PSČ", tak to by byla jiná věc, ale takhle to nepůjde.

Jinak tam máš třeba PSČ ve tvaru "12345" a "123 45", a už jenom tohle to dosti komplikuje. Muselo by se to nějak sjednotit...
P.citovat
#009939
avatar
ok, ta varianta 123 45, tam je vyjmečně, takže to by šlo jen pro 12345, bude to tak ok?citovat
#009948
avatar
Možná přez regulární výraz ale netuším jestli to VBA podporuje 7citovat
#009952
avatar
Leda tak kazdy ten retezec prohnat smyckou, ktera bude zkoumat, jestli 5 znaku po sobe je cislo (VBA funkce IsNumeric a MID). Pokud nekdo dopustil takovou databazi, tak sorry, niceho jineho se neda chytit
treba tahkhe:
Option Explicit

Sub VyjmiPSC()
Dim i As Integer

For i = 1 To 4
Cells(i, "B") = ExtrahujPSC(Cells(i, "A").Value)
Next i

End Sub

Function ExtrahujPSC(strText As String) As String
Dim j As Integer, iLen As Integer
Dim strX As String, strY As String

'odstran pocatecne a koncove mezery
strText = Trim(strText)

'delka vyrazu
iLen = Len(strText)

'odstran mezery
On Error Resume Next
For j = 1 To iLen
If Mid(strText, j, 1) = " " Then
strText = Left(strText, j - 1) & Right(strText, Len(strText) - j)
End If
Next j
On Error GoTo 0

'jeste jednou sejmi delku vyrazu
iLen = Len(strText)

For j = 1 To iLen - 4
strX = Mid(strText, j, 5)
If IsNumeric(strX) Then
'podminka pro vylouceni desetinnych vyrazu:
If CStr(CLng(strX * 1)) = strX Then
ExtrahujPSC = Left(strX, 3) & " " & Right(strX, 2)
Exit Function
End If
End If
Next j

End Function
citovat
#009953
avatar
Public Function psc(text As String) As String
Dim a As String
psc=""
text = Replace(text, " ", "", , , 1)
For i = 1 To Len(text)
a = Mid(text, i, 5)
If IsNumeric(a) Then
If a Like "#####" Then
psc = a
Exit Function
End If
End If
Next i
End Function
citovat
#009954
avatar
Super, ještě prosím zda by to psč bylo vyjmuté,tzn aby bylo pouze v samostatné buňce,půjde to?citovat
#009955
avatar
Zdeny - vzdyt to vytahne psc do samostatnych bunek ve sloupci B.
Pouzij cely kod tak jak to tam mam a spusti Sub VyjmiPSC(kurzor nekam do Sub a zmackni F5). Klidne si volej marianovu funkci, je ucinnejsi

Marian:
Replace + Like "#####" = paradacitovat
#009960
avatar
Milan: trochu si ma nakopol aj ty s tým IsNumeric.

Ale dokonalé to nie je. Ak by tam bolo napríklad pred PSČ telefonne číslo, tak vyberie telefónne číslo. Ale to už testovať asi neviem.citovat
#009961
avatar
asi dělám něco špatně, viz příloha
Příloha: zip9961_psc1.zip (15kB, staženo 28x)
citovat
#009963
avatar
ani toto nejde? Aký máš excel? 2010?
Příloha: zip9963_psc.zip (13kB, staženo 28x)
citovat

Strana:  1 2   další »

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje