Avatar billede hubertus Seniormester
13. maj 2008 - 16:46 Der er 15 kommentarer og
2 løsninger

Find transportør ud fra postnummer i et interval

Jeg har nogle udlandske postnumre som står i kolonne F og G. læses de vandret udgør de et interval. En transportør udføre transporter for flere intervaller. Jeg skal således undersøge flere intervaller for at afgøre hvem der skal transportere pakkerne.
Der er tale om 10 transportører, som hver dækker en gruppe af intervaller.
Hvordan løses dette problem?
Avatar billede hubertus Seniormester
13. maj 2008 - 16:52 #1
eks.
kolonne F  og  g
      1010    2599
      3200    3349
      4000    4200
Disse postnumre giver en transportør

      3350    3599
      4210    4500
      osv. giver næste transportør

Giver det mening?
Avatar billede supertekst Ekspert
13. maj 2008 - 17:33 #2
Det er vel et spørgsmål om at indtaste postnr - evt. i en Userform - og så udføre en søgning?

Hvor er transportøren anført i forhold til intervallet?
Avatar billede hubertus Seniormester
13. maj 2008 - 19:10 #3
Userformen kan ikke bruges grundet arkets opbygning. Brugeren skriver postnummeret i en celle. hvorefter intervallerne skal undersøges for at få transportøren udpeget.
Transportøren står i kolonne e, og udgør en selvstændig række over intervallet.
eks.

kolonne F  og  g
5  (tallet repræsentere et firmanavn i en database)
      1010    2599
      3200    3349
      4000    4200
Disse postnumre giver en transportør
6  (tallet repræsentere et firmanavn i en database)
      3350    3599
      4210    4500
      osv. giver næste transportør
Kan man sammensætte intervallerne i et range, og så foretage søgningne her?
Avatar billede staal84 Nybegynder
13. maj 2008 - 21:32 #4
Et primitivt løsningsforslag fra amatøren...:-)

Fra dit eksempel
E1 = 5
F2 = 1010
G2 = 2599
osv
E5 = 6
F6 = 3350
Osv

Indtast post nr i A2

Brug 10 celler én til hver leverandør indeholdende fomler som disse:
5: =HVIS(ELLER(OG($A$2>F2;$A$2<G2);OG($A$2>F3;$A$2<G3);OG($A$2>F4;$A$2<G4));$E$1;0)
6: =HVIS(ELLER(OG($A$2>F6;$A$2<G6);OG($A$2>F7;$A$2<G7);OG($A$2>F8;$A$2<G8));$E$5;0)

Og blot lav en sum på de 10 celler ved siden af postnummeret, så har du svaret...
Avatar billede passiflora Juniormester
13. maj 2008 - 22:03 #5
Man kunne bygge en makro der kører hver gang et postnr bliver indtastet ...

I den kunne man lave en løkke der stepper gennem mulighederne, indtil at den finder et interval hvori den passer, og leverandør nr. skrives i cellen.

Forståeligt ..?
Avatar billede supertekst Ekspert
13. maj 2008 - 23:18 #6
Bygger en model i morgen...
Avatar billede passiflora Juniormester
14. maj 2008 - 01:58 #7
Sad og legede lidt ...

Her et stykke makro

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$1" Then
tel = 1
Cells(2, 2) = "Ikke fundet"
Post = Cells(1, 2)
Do While Cells(tel, 6) > 0
  Min = Cells(tel, 6)
  Max = Cells(tel, 7)
  If Post >= Min And Post <= Max Then
  Cells(2, 2) = Cells(tel, 5)
  End If
  tel = tel + 1
Loop
End If
End Sub

Den nok ikke kortest mulig ...

Taster du postnr. i a2, så vil den finde og skrive transportør i b2, hvis ikke den finder noget får du beskeden "Ikke fundet"

Jeg har lagt min model på http://www.spejderi.dk/postnr.zip

Søren
Avatar billede supertekst Ekspert
14. maj 2008 - 09:45 #8
Som lovet:
Rem Postnr indtastes i A1
Rem evt. Transportør vises i B1
Rem ===========================
Dim sidsteRæk
Private Sub Worksheet_Change(ByVal Target As Range)
    sidsteRæk = ActiveCell.SpecialCells(xlLastCell).Row
    With Target
        If .Address = "$A$1" And IsNumeric(.Value) = True Then
            findTransportør .Value
        End If
    End With
End Sub
Private Sub findTransportør(pNr)
Dim trNr
    For ræk = 1 To sidsteRæk
Rem Gem transportørNr, hvis Kol E udfyldt
        If Cells(ræk, 5) <> "" Then
            trNr = Cells(ræk, 5)
        Else
            If pNr >= Cells(ræk, 6) And pNr <= Cells(ræk, 7) Then
                Cells(1, 2) = trNr
                Exit Sub
            End If
        End If
    Next ræk
    Cells(1, 2) = "?"
End Sub
Avatar billede hubertus Seniormester
14. maj 2008 - 16:28 #9
-> supertekst
koden finder ikke transportøren - var det en ide at du fik en kopi af arket - det vil tydeliggøre problemstillingen.
Avatar billede supertekst Ekspert
14. maj 2008 - 17:31 #10
Ja - det ville være OK -> pb@supertekst-it.dk
Avatar billede passiflora Juniormester
14. maj 2008 - 18:12 #11
Må jeg kigge med ... så jeg ser, hvor jeg har misforstået ... post@sb-online.dk
Avatar billede passiflora Juniormester
15. maj 2008 - 08:29 #12
Rettet lidt ...

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$1" Then
  tel = 8
  Cells(2, 2) = "Ikke fundet"
  Cells(3, 2) = ""
  Post = Cells(1, 2)
  sidst = ActiveCell.SpecialCells(xlLastCell).Row
  Do While tel <= sidst
    Min = Cells(tel, 6)
    Max = Cells(tel, 7)
    If Max = "" And Min <> "" Then
    trans = Cells(tel, 5)
    firma = Min
    End If
    If Post >= Min And Post <= Max Then
      Cells(2, 2) = trans
      Cells(3, 2) = firma
    Exit Sub
    End If
    tel = tel + 1
  Loop
End If
End Sub
Avatar billede hubertus Seniormester
15. maj 2008 - 20:12 #13
Jeg skal live have testet jeres versioner - har ikke nået det, da vi i dag fik gravet vores fiberkabler over - vender tilbage snarest.
Avatar billede supertekst Ekspert
15. maj 2008 - 20:17 #14
OK..
Avatar billede hubertus Seniormester
17. maj 2008 - 13:43 #15
Jeg har afprøvet begge versioner og begge løser opgaven til fulde. Så det vil være fint om I begge lægger et svar. :O)
Tak for hjælpen og god weekend.
Avatar billede supertekst Ekspert
17. maj 2008 - 15:29 #16
Fint - selv tak og i lige måde....
Avatar billede passiflora Juniormester
17. maj 2008 - 17:39 #17
Godt at høre ...

... også til dig
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