Avatar billede prefalch Juniormester
11. august 2009 - 08:14 Der er 13 kommentarer og
1 løsning

oprettelse af interval der kan søges i

Hej ekspeter

Jeg vil gerne oprette et regneark hvor jeg kan indtaste serienumre i og så søge i den. Eks.

I cella a1 indtastes første serie nummer i serien og i b1 indtastes sidste serienummer. I c1 indtastes fremstillingsdatoen

a1      b1      c1
1001    1231    10-01-2001

Det jeg gerne vil frem til er at jeg ved en søgning f.eks. på serienr. 1179 gerne skulle få fremstillingsdatoen

Håber at jeg har beskrevet dette så det kan forståes. Skal lige tilføje at jeg er temmelig nybegynder i excel(regneark i det hele taget)

Ned venlig hilsen

Preben
Avatar billede igoogle Forsker
11. august 2009 - 09:21 #1
Det kan du klare ved vlookup.. eller crtl + f :)
Avatar billede jkrons Professor
11. august 2009 - 09:29 #2
igoogle-> Hvordan vil du finde 1179 med ctrl+f, når tallet ikke står nogen steder i regnearket?

Hvordan vil du finde 1179 med vlookup, når data er placeret i rækker og ikke kolonner? hlookup løser heller ikke problemet, da opslagsværdien er placeret i en kolonne.
Avatar billede igoogle Forsker
11. august 2009 - 09:47 #3
ahh.. havde læst forkert ..
Avatar billede supertekst Ekspert
11. august 2009 - 09:55 #4
Kunne VBA være en løsning?

Så kunne du indtaste serienummer i en Userform (programmeret dialogboks) og få vist fremstillingsdato i samme.
Avatar billede jkrons Professor
11. august 2009 - 10:40 #5
Faktisk er igoogle ikke helt galt på den alligeve l ved nærmere eftertanke :-). Hvis seirenumrene altid er kontinueerte

1001 1231 30-8-09
1232 1407 3-9-09
1408 1742 4-9-09

osv

Kan VLOOKUP alligvel bruges

=VLOOKUP(D1,A1:C3,3)

eller på dansk

=LOPSLAG(D1;A1:C3;3)

Der må ikke være "huller" i serienumrene og disse skal forekomme i stigende rækkefølge i kolonne A.
Avatar billede prefalch Juniormester
11. august 2009 - 15:10 #6
Jeg er ikke sikker på at jeg forstår dette. Som jeg læser lopslag så finder den den værdi der er i første kolonne og returnerer værdien fra anden kolonne, eks.

a1                b1

medlem 1          Søren

og returnerer altså Søren

Det jeg onsker er at der søges efter et serienummer der ligger i intervallet der defineres i

a1            b1
første        sidste nummer i serien
nummer
i serien

1001          1010        (her er der altså 10 numre)
1233          1233        ( 1 nummer)
1455          1499        ( x antal numre)

Det jeg ikke kan finde ud af er hvordan man definerer sådanne intervakker og hvordan man søger i dem

m.v.h
Avatar billede jkrons Professor
11. august 2009 - 15:22 #7
LOPSLAG virker, hvis alle numrene er fortløbende. Ikke hvis der er huller i rækkefølgen, altså

1001 1010
1011 1201
1202 1499
1500 1588

og "3"til sidst indikerer, at der skal returneres fra 3 kolonne.
Avatar billede jkrons Professor
11. august 2009 - 15:24 #8
Hvis der er "huller" i rækken, skal du ud i en makro.
Avatar billede prefalch Juniormester
11. august 2009 - 15:35 #9
Ja der er huller i numrene.
Hvordan laves sådan én makro, der læser i intervallet mellen de to første kolonner, finder serienumret, og returnerer datoen der står i 3 kolonne.

1001  1033  11-08-2009

søgning på 1021 skal altså returnere værdien 11-08-2009

m.v.h
Avatar billede jkrons Professor
11. august 2009 - 15:40 #10
Du kan bruge dette indtil videre:

Sub FindiInterval()
    tst = Range("a6").Value
    For Each c In Range("a1:a10").Cells
        If tst >= c.Value And tst <= c.Offset(0, 1).Value Then
            Range("b6").Value = c.Offset(0, 2).Value
        Exit Sub
    End If
    Next c
End Sub

Skriv værdien du søger på i A6 og afspil makroen.

Så skriver den datoen i B6. Ret selv den celle, du vil skrive i til noget andet ved at ændre A6. Står første kolonne i dine data et andet sted end A1:A10, skal du også ændre det.

Jeg har prøvet alve det som en funktion, men det driller lidt. Måske vender jeg tilbage senere med en funktionsløsning.
Avatar billede supertekst Ekspert
11. august 2009 - 15:46 #11
Alternativt: Har en færdig model med Userform, som du kan få tilsendt. Send evt. en mail - mailadr. under min profil.
Avatar billede jkrons Professor
11. august 2009 - 15:59 #12
Her er den som funktion. Så kan du bruge den som alle andre funktioner:

Function FInterval(cel As Long, rn As Range, kol As Byte) As Variant
    tst = cel
    For Each c In rn.Columns(1).Cells
        If tst >= c.Value And tst <= c.Offset(0, 1).Value Then
            FInterval = Format(c.Offset(0, kol - 1).Value, "dd-mm-yy")
            Exit Function
        End If
    Next c
    FInterval = CVErr(xlErrNA)
End Function

Brug den fx som =Finterval(F1;A1:C100;3)

hvor F1 er den celle, hvor du indtaster din søgeværdi. A1:C100 er det område, du har dine værdier i og 3 er den kolonne i matricen, der indeholder datoen, som skal returnes. Findes tallet du søger ikke i matrixens første kolonne, returneres #I/T!
Avatar billede prefalch Juniormester
14. august 2009 - 11:14 #13
Supertekst takker for din hjælp.
skriv et svar så du kan få point
Avatar billede supertekst Ekspert
14. august 2009 - 11:27 #14
VBA koden i Userformen:

Private Sub CommandButton1_Click()
Dim fremstillingsDato As Date
    If IsNumeric(Me.TextBox1) And Me.TextBox1 <> "" Then
       
        fremstillingsDato = søgInterval(Val(Me.TextBox1))
        If fremstillingsDato > 0 Then
            Me.Label3.Caption = fremstillingsDato
        Else
            Me.Label3.Caption = "???"
        End If
    End If
End Sub
Private Function søgInterval(serieNr)
Dim ræk As Long
    With ActiveWorkbook.Sheets("Ark1")
        For ræk = 1 To 65000
            If serieNr >= .Cells(ræk, 1) And serieNr <= .Cells(ræk, 2) Then
                søgInterval = .Cells(ræk, 6)
                Exit Function
            Else
                If .Cells(ræk, 1) = "" Then
                    søgInterval = 0
                    Exit For
                End If
            End If
        Next ræk
    End With
End Function
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