Avatar billede dino84 Nybegynder
10. februar 2007 - 06:08 Der er 8 kommentarer og
1 løsning

Find værdi i skema ud fra 2 værdier

Som overskriften siger, søger jeg en måde at finde en værdi i et skema ud fra 2 værdier.

Jeg har denne oversigt: http://www.fisen.dk/oversigt.gif

Jeg har et tidspunkt og en gade. Tiden skal være mellem de 2 tider der er i kolonne A og B.

Lad os antage jeg har et tidspunkt i A15 f.eks 22:31 ( Række 7 )
I B15 har jeg f.eks Gade 3 ( Kolonne E )

Hvordan får jeg den til at skrive værdien i E7 i C15?
Avatar billede supertekst Ekspert
10. februar 2007 - 10:46 #1
Private Sub worksheet_change(ByVal target As Excel.Range)
    If target.Row = 15 Then
        If Cells(15, 1) <> "" And Cells(15, 2) <> "" Then
            koordinat = udførSøgning
            If koordinat <> "" Then
                Cells(15, 3) = koordinat
            Else
                Cells(15, 2) = "???"
            End If
           
        End If
    End If
End Sub
Private Function udførSøgning()
Dim tid, gade
    tid = Cells(15, 1)
    gade = Cells(15, 2)
   
    For t = 2 To 11
        If tid >= Cells(t, 1) And tid <= Cells(t, 2) Then
            For g = 3 To 7
                If LCase(gade) = LCase(Cells(1, g)) Then
                    udførSøgning = Cells(t, g).Address
                    Exit Function
                End If
            Next g
        End If
    Next t
    udførSøgning = ""
End Function
Avatar billede excelent Ekspert
10. februar 2007 - 11:01 #2
i arket skriver du: - ellers ret til hvor du har dine range's

=Selle(A2:A11;A15;C1:G1;B15)

Function Selle(Rækker, rk, Kolonner, kol)
Application.Volatile
For Each c In Rækker
If rk >= c And rk < c.Offset(0, 1) Then r = c.Row: Exit For
Next
For Each c In Kolonner
If kol = c.Value Then k = c.Column: Exit For
Next
Selle = ActiveSheet.Cells(r, k)
End Function
Avatar billede dino84 Nybegynder
10. februar 2007 - 20:39 #3
Jeg har ændret lidt i excelent's eks. så det nu ser sådan ud:

Function rotation(rk, kol)
Dim c, r, k
Application.Volatile
For Each c In Range("RotationTid")
If rk >= c And rk < c.Offset(0, 1) Then r = c.Row: Exit For
Next
For Each c In Range("RotationGade")
If kol = c.Value Then k = c.Column: Exit For
Next
rotation = ActiveSheet.Cells(r, k)
End Function

Det virker perfekt så længe jeg bruger =rotation(A15;B15) i samme ark.

Problemet er så nu at jeg skal kunne bruge denne funktion i andre ark også.

Når jeg bruger den i andre ark skrive den #VÆRDI!

Hvad skal der ændres for at det virker i andre ark også?

Kunne forestille mig det har noget at gøre med rotation = ActiveSheet.Cells(r, k) uden at være helt sikker..
Avatar billede excelent Ekspert
10. februar 2007 - 22:39 #4
denne virker også i andre ark - i dette eks er skema i Ark5
=Selle("Ark5";Ark5!A2:A11;Ark5!A15;Ark5!C1:G1;Ark5!B15)

Funktionen kan godt ændres til rotation, men jeg tvivler på
du kan nøjes med : Function rotation(rk, kol)

Function Selle(Ark, Rækker, rk, Kolonner, kol)
Application.Volatile
For Each c In Rækker
If rk >= c And rk < c.Offset(0, 1) Then r = c.Row: Exit For
Next
For Each c In Kolonner
If kol = c.Value Then k = c.Column: Exit For
Next
Selle = Sheets(Ark).Cells(r, k)
End Function
Avatar billede excelent Ekspert
10. februar 2007 - 22:53 #5
Hvis dit skema forbliver i samme område kan du nøjes med denne
=Skema("Ark5")
hvor Ark5 er navn på arket hvor skema er.
(kan ændres til rotation - har blot anvendt Skema i dette eks.)

Function Skema(Ark)
Application.Volatile
For Each c In Sheets(Ark).Range("A2:A11")
If Sheets(Ark).Range("A15") >= c And Sheets(Ark).Range("A15") < c.Offset(0, 1) Then r = c.Row: Exit For
Next
For Each c In Sheets(Ark).Range("C1:G1")
If Sheets(Ark).Range("B15") = c.Value Then k = c.Column: Exit For
Next
Skema = Sheets(Ark).Cells(r, k)
End Function
Avatar billede dino84 Nybegynder
11. februar 2007 - 06:18 #6
Super det virker..

Jeg er dog stødt på et andet problem.

Tiden får jeg ud fra et felt der indeholder dd-mm-åååå tt:mm
Feltet har jeg så lavet om til tt:mm

Nu er problemet så, at den ikke kan finde det tidsrum det høre til, da den stadig indeholder datoen.

Har du en løsning til hvordan jeg kan løse det eller skal jeg oprettet et nyt spm?
Avatar billede excelent Ekspert
11. februar 2007 - 10:53 #7
hvis du fx. henter tiden fra selle B21 så prøv:

=--TEKST(B21;"tt:mm")
Avatar billede dino84 Nybegynder
11. februar 2007 - 11:06 #8
Yes det virker..

Hvad er det lige -- går ind og gør?

Husk et svar =)
Avatar billede excelent Ekspert
11. februar 2007 - 11:22 #9
den konverterer tekst til tal
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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