Avatar billede brasso Forsker
22. oktober 2012 - 17:24 Der er 18 kommentarer og
1 løsning

Skille adreestreng af i gade+husnummer og postnr. +postdidtrikt

Hej
Jeg har et udtræk hvor en stribe adresser står i en kolonne, disse adresser vil jeg gerne have delt, så gade+husnummer står i en kolonne, og post nr+postdistrikt står i en anden kolonne.

Eksempel:
celle A1= Johannes Hansens Vej 23 6100 Haderslev.
resultat:

A2=Johannes Hansens Vej 23 og A3=6100 Haderslev

Jeg havde tænkt at man skulle finde 1st. mellemrum fra højre, men funktionen FIND kigger fra venstre mod højre, så den kan ikke rigtig bruges, eller?

Løsningen skal helst være uden brug af VBA- kode.
Avatar billede finb Ekspert
22. oktober 2012 - 19:03 #1
I dit eksempel er der 5 mellemrum.
Der er en funktion (=find?), hvor du kan angive
forekomstens nr.
I dit eksempel skal du skille ved 4. mellemrum.
Det er dog ikke tilfældet ved
1234 Ny Andeby
med 2 by-ord,
men de fleste danske postnr har kun
1 by-ord.
Avatar billede larsini Seniormester
22. oktober 2012 - 20:17 #2
hvorfor ikke bare lave "tekst til kolonne" som er en funktion i excel?
Avatar billede brasso Forsker
23. oktober 2012 - 07:47 #3
Hej finb
Problemet er lige netop at det ikke er alle strenge der er lige mange mellemrum i.
En adressestreng kan se sådan ud:
Johannes Hansens Vej 23 6100 Haderslev
En anden kunne være:
Solvej 18 8700 Horsens

Det eneste der gælder for alle, er at det er ved andet mellemrum fra højre strengen skal deles.
Avatar billede magic-mouse Novice
23. oktober 2012 - 08:38 #4
Gør som Finb siger ... regn baglænges, skild på de 2 sidste ord.
Avatar billede magic-mouse Novice
23. oktober 2012 - 08:42 #5
Ok det går ikke med de 2 sidste ord. Da København C eks. vil skabe problem.

2 mulige løsninger:
1. søg på et nummer 4 cifre bagfra. der er du sikker.
2. http://www.postdanmark.dk/da/Privat/Kundeservice/postnummerkort/Sider/home.aspx her har du en liste over postnummer og by. Du kan lave et batch script som går igennem med en "contains"

som eks.
if(adress.contains(i))
{
a1 = adress.replace(i, ""); a2 = i;
}

men alt efter hvor stor din adresse liste er kan version 2 tage lidt tid.
Avatar billede finb Ekspert
23. oktober 2012 - 08:46 #6
Det er en skam, du ikke vil have vba,
opgaven er født til vba
finb
Avatar billede Slettet bruger
23. oktober 2012 - 10:10 #7
I #3 skriver du:

Det eneste der gælder for alle, er at det er ved andet mellemrum fra højre strengen skal deles.

Hvad så hvis postdistrikt er for eksempel:

Nørre Snede
Randers NV
Nykøbing Sj
osv.
Avatar billede Slettet bruger
23. oktober 2012 - 11:00 #8
Med
Johannes Hansens Vej 23 6100 Haderslev
Solvej 18 8700 Nørre Snede
i A1:A2 så prøv følgende matriksformler i henholdsvis B1 og C1:

B1: =MIDT(A1;1;SAMMENLIGN(SAND;(HELTAL(MIDT(A1;RÆKKE(INDIREKTE("1:"&LÆNGDE(A1)));4)/1000))>0;0)-2)

C1: =MIDT(A1;SAMMENLIGN(SAND;(HELTAL(MIDT(A1;RÆKKE(INDIREKTE("1:"&LÆNGDE(A1)));4)/1000))>0;0);LÆNGDE(A1))

Kopier til B2:C2.

Jeg har ikke testet grundigt, men det virker i hvert fald på de to eksempler.
Avatar billede brasso Forsker
23. oktober 2012 - 11:59 #9
#7
Rigtig der er jo også postdistrikter hvor navnet er delt i 2.
Jeg har tænkt lidt på om man kan bruge find eller lignede til at søge på 4 tal (post Nr.) F.eks. FIND(####).
finb. hvis en VBA kan klare det, så må du da gerne komme med et bud.
Avatar billede Slettet bruger
23. oktober 2012 - 12:09 #10
Prøvede du ikke formlerne i #8?
Avatar billede finb Ekspert
23. oktober 2012 - 15:07 #11
VBA, gerne, men test lige dkhanknu først !
mvh
finb
Avatar billede brasso Forsker
30. oktober 2012 - 13:14 #12
Har ikke lige fået tid til at teste #8. Vender tilbage, når jeg har forsøgt. Har iøvrigt sat IT-Afdelingen igang med at ændre udtrækket, så adresse og postdistrikt kommer ud i hver sin kolonne.
Avatar billede brasso Forsker
05. november 2012 - 13:01 #13
Nu har jeg prøvet formlerne i #8, men får en "Værdi" fejl.
Evaluer formel giver dette resultat på celle B1:
MIDT("Johannes Hansens vej 23 6100 Haderslev";1;SAMMENLIGN(SAND;(HELTAL("Joha"/1000))>0;0)-2,
hvor Joha er fremhævet med skråskrift.

Celle C1 giver denne fejl:
MIDT("Johannes Hansens vej 23 6100 Haderslev";SAMMENLIGN(SAND;(HELTAL("Joha"/1000)>0;0);LÆNGDE(A1))
hvor Joha er fremhævet med skråskrift.
Avatar billede Slettet bruger
06. november 2012 - 12:53 #14
Avatar billede Slettet bruger
12. november 2012 - 10:34 #15
Nå, du har måske ikke lige haft tid til at teste #14?

Nej folk har jo travlt - for nogles vedkommende især når det gælder om at reagere til folk der har prøvet at hjælpe med noget som spørgeren selv har bedt om hjælp til!


Hans
Avatar billede brasso Forsker
16. november 2012 - 10:18 #16
Hej dkhanknu
Jeg kan ikke hente din fil. Får beskeden "URL- Blocket", men det er nok fordi jeg sidder på arbejde lige nu. Prøver lige i aften, når jeg er på min egen maskine.
Avatar billede brasso Forsker
19. november 2012 - 22:41 #17
Hej dkhanknu
Nu fik jeg endelig tid til at downloade filen. Det virker perfekt.

Jeg lægger lige formlerne ind her under, så andre evt. kan bruge løsningen. Lægger du lige et svar så jeg kan lukke tråden?

celle A1= Johannes Hansens Vej 23 6100 Haderslev
Formel i celle B1= {=MIDT(A1;1;SAMMENLIGN(SAND;(HELTAL(MIDT(A1;RÆKKE(INDIREKTE("1:"&LÆNGDE(A1)));4)/1000))>0;0)-2)}
Formel i celle C1= {=MIDT(A1;SAMMENLIGN(SAND;(HELTAL(MIDT(A1;RÆKKE(INDIREKTE("1:"&LÆNGDE(A1)));4)/1000))>0;0);LÆNGDE(A1))}

dkhanknu kan du forklare mig, hvorfor formelen ikke virker efter at jeg har klikket i formellinjen? Lige så snart jeg har klikket i formellinjen, og trykker ENTER uden at have ændret noget, kommer der en #VÆRDI fejl. Når jeg klikker i den bageste ende af formelen forsvinder den spidse parentes, og efter enter kommer fejlen, også selv om jeg indsætter parentesen igen. Hvorfor opfører formlerne sig sådan?
Avatar billede Slettet bruger
20. november 2012 - 06:21 #18
Som jeg skrev i #8 er det matriksformler. Ved afslutning af en matriksformel skal du ikke bare som normalt trykke på Enter. Du skal holde Ctrl og Shift nede før du trykker på Enter. Hvis du gør det korrekt vil Excel automatisk sætte krøllede parenteser omkring formlen. Forsøg ikke på manuelt at sætte disse parenteser, det vil bare få Excel til at opfatte det hele som tekst. Ved senere redigering skal du igen bruge sammme indtastningsmåde. En matriksformel kan kopieres (trækkes i fyldhåndtaget) på helt normal vis. Der findes masser af indlæg om/med matriksformler, både her på Eksperten og andre steder.

Hans
Avatar billede brasso Forsker
20. november 2012 - 10:53 #19
Tak for hjælpen hele vejen dkhanknu. De der matrixformler skal jeg måske kigge lidt nærmere på. Det ser ud til at en del avancerede tilfælde kan klares med dem. Jeg tror ikke jeg nogen sinde har hørt om matrix formler før, selv om jeg har været på et par udvidet Excel kurser. :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester