Koda vba, za poštne številke

Pomoč pri delu z MS Excelom
Odgovori
Lynx2x
Prispevkov: 4
Pridružen: Če Feb 09, 2012 11:02 am

Koda vba, za poštne številke

Odgovor Napisal/-a Lynx2x »

Pozdravljeni!

Imam sledeč problem. V eni celici imam ulico, v drugi pa poštno številko in s pomočjo funkcije vlookup v tretji celici dobim poštno številko. Vse lepo in prav in to mi tudi uspe, vendar pa to ni edina baza podatkov, kjer moram na podlagi poštnih številk dobiti ime pošte, zato bi rad v VBAju naredil kodo, ki bi to naredila in bi potem s pomočjo gumba s preprostim klikom to opravil.
Ker pa v vba-ju nisem preveč vešč, se obračam na Vašo pomoč, če je seveda to mogoče.

Najlepša hvala že vnaprej!

LP, Tilen
admin
Site Admin
Prispevkov: 3712
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: Koda vba, za poštne številke

Odgovor Napisal/-a admin »

Na podlagi VBA-ja nebi absolutno nič profitirali... Kako pa bi VBA funkciji dopovedali kje se nahaja baza podatkov, kje v tej bazi so poštne številke, kje so pošte.... VLOOKUP je popolnoma pravilna rešitev!
lp,
Matjaž Prtenjak
Administrator
Lynx2x
Prispevkov: 4
Pridružen: Če Feb 09, 2012 11:02 am

Re: Koda vba, za poštne številke

Odgovor Napisal/-a Lynx2x »

Najprej hvala za tako hiter odgovor.
Upam da vprašanje ni bilo preveč neumno, samo sem mislil, če bi se dalo nekako narediti, da bi z preko gumba dobil imena pošt na podlagi poštnih številk. Če je VLOOKUP popolnoma pravilen, potem bom tako nadaljeval.

Imam pa še eno vprašanje. V bazi imam tudi stolpec z telefonskimi številkami, ki pa so pomešane - tako mobilne kot stacionarne in pa tudi nekatere nepravilno zapisane. Sedaj bi rad ločil mobilne in stacionarne vsako v svoj stolpec. Našel sem že na spletu register telefonskih številk za vse operaterje, vendar kako sedaj narediti, da program pregleduje prvi dve številki za gsm (31,41,40,...) in pa za stacionare (1,2,3).
Upam da je vprašanje razumljivo in da ne kompliciram preveč ter hvala za Vaš odgovor že vnaprej.

LP, Tilen
admin
Site Admin
Prispevkov: 3712
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: Koda vba, za poštne številke

Odgovor Napisal/-a admin »

Pozdravljeni,

Tole pa ni tako preprosta naloga, saj so lahko številke v zelooooo različnih formatih. Npr:
35434567
035434567
+38635434567

in je to vse ista številka... A glede na vaše vprašanje je stvar nekako takšna:
  1. Najprej polju odrežete odvečne presledke

    Koda: Izberi vse

    =TRIM(A1)
    
  2. Nato iz polja vzamete prvo številko ali pa prvi dve številki

    Koda: Izberi vse

    =LEFT(TRIM(A1);1)
    ali
    =LEFT(TRIM(A1);2)
    
  3. in glede na rezultat ukrepate...
lp,
Matjaž Prtenjak
Administrator
Lynx2x
Prispevkov: 4
Pridružen: Če Feb 09, 2012 11:02 am

Re: Koda vba, za poštne številke

Odgovor Napisal/-a Lynx2x »

Pozdravljeni!

Najprej hvala za odgovor.

Zavedam se da so številke lahko v zelo različno zapisane in stvar sem uredil nekako sledeče.
Najprej sem odstranil vse znake, kot so: -,/," ",...., z replacom, nato pa sem naredil sledečo kodo, ki razvrsti številke v stolpece: GSM, Stacionarni telefon, Nepravilni zapis. V stolpcu GSM so vse številke ki imajo prvi dve številki 31,41,51,30,40,70 in so dolge osem znakov, v stolpcu Stacionarni telefon so vse ostale številke dolge osem znakov, v stolpcu Nepravilni zapis pa vse številke, ki ne dosegajo nobenega izmed pogojev. Spodaj je tudi koda in zanima me kako se Vam zdi in/ali bi po Vaše moral kaj spremeniti?

Private Sub CommandButton1_Click()

Dim rng, cell As Range, selectedRng As String, i As Long, beseda As String
selectedRng = InputBox("Enter your range")
Set rng = Range(selectedRng)
i = 2
For Each cell In rng
beseda = cell.Value
If Left(beseda, 2) = 31 And Len(beseda) = 8 Then
Cells(i, 2) = beseda
ElseIf Left(beseda, 2) = 41 And Len(beseda) = 8 Then
Cells(i, 2) = beseda
ElseIf Left(beseda, 2) = 51 And Len(beseda) = 8 Then
Cells(i, 2) = beseda
ElseIf Left(beseda, 2) = 30 And Len(beseda) = 8 Then
Cells(i, 2) = beseda
ElseIf Left(beseda, 2) = 40 And Len(beseda) = 8 Then
Cells(i, 2) = beseda
ElseIf Left(beseda, 2) = 70 And Len(beseda) = 8 Then
Cells(i, 2) = beseda
ElseIf Len(beseda) = 8 Then
Cells(i, 3) = beseda
Else
Cells(i, 4) = beseda
End If
i = i + 1
Next cell

End Sub


Hvala in lep dan ter vikend!

Tilen
admin
Site Admin
Prispevkov: 3712
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: Koda vba, za poštne številke

Odgovor Napisal/-a admin »

:) Dobro, pa vam bom malce preuredil kodo, da se bodo tudi drugi lahko kaj naučili (takole je precej krajše in lažje razumljivo ;) ):

Koda: Izberi vse

Private Sub CommandButton1_Click()
  Dim rng, cell As Range, selectedRng As String
  Dim i As Long, beseda As String
  Dim koda As String
  
  selectedRng = InputBox("Enter your range")
  Set rng = Range(selectedRng)
  
  i = 2
  For Each cell In rng
    beseda = cell.Value
    koda = Left(beseda, 2)
    If (koda = "31" Or koda = "41" Or koda = "51" Or koda = "30" Or koda = "40" Or koda = "70") And Len(beseda) = 8 Then
      Cells(i, 2) = beseda
    ElseIf Len(beseda) = 8 Then
      Cells(i, 3) = beseda
    Else
      Cells(i, 4) = beseda
    End If
    
    i = i + 1
  Next cell
End Sub
lp,
Matjaž Prtenjak
Administrator
Lynx2x
Prispevkov: 4
Pridružen: Če Feb 09, 2012 11:02 am

Re: Koda vba, za poštne številke

Odgovor Napisal/-a Lynx2x »

Super!!

Tole res izgleda precej lažje razumljivo in bolj preprosto. Kot sem že omenil sem na vsem tem področju bolj v začetniški fazi in vsaka Vaša dosedanja pomoč ali navodilo mi je vsekakor zelo prav prišlo, tako da sem sedaj te podatke nekako uredil, sedaj pa so mi ostala še imena ter priimki, ki jih morem urediti.

Dobil sem namreč tabelo, kjer so bila imena in priimki zapisani skupaj, zato sem najprej ločil besede(imena, priimke), vsako v svoj stolpec ter odstranil presledke in podobne nepravilne znake.
Problem se pojavi, ker ime ni bilo vedno zapisano na začetku ampak včasih na koncu (Jože Mihelič / Mihelič Jože), tako da imam sicer dva stolpca, ampak podatki so pomešani.
Obrnil sem se na statistični urad Slovenije, kjer mi je prijazna gospa poslala bazo ženskih in moških imen, nato pa poskusil s funkcijo VLOOKUP razvrstiti moška in ženska imena. Problem je v tem, ker ne vem ali VLOOKUP lahko pregleduje zapise iz dveh različnih stolpcev (A: moška imena, B: ženska imena) in nato primerja z zapisom v mojem stolpcu. Meni ni uspelo in ne vem ali je to sploh mogoče, ali obstaja za to katera druga funkicja ali je problem v sintaksi.

Upam da je vprašanje razumljivo in ne preneumno in seveda hvala za odgovor že vnaprej.

LP, Tilen
admin
Site Admin
Prispevkov: 3712
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: Koda vba, za poštne številke

Odgovor Napisal/-a admin »

Ne, VLOOKUP vedno preverja en stolpec! V vašem primeru morate torej pač imeti dva lookupa... v enem stolpcu preverjate ali je določeno ime moško (lookup na tabelo moških imen) v drugem stolpcu pa preverjate ali je ime žensko lookup na tabelo ženskih imen)...
lp,
Matjaž Prtenjak
Administrator
Odgovori