Avatar billede megadragon Nybegynder
07. november 2006 - 09:37 Der er 12 kommentarer og
1 løsning

Finde det tal, som ligger nærmest et bestemt tal, i en liste

Jeg har brug for at kunne lave en funktion i excel, som gør det muligt at indtaste et tal, hvorefter at excel selv finder det tal, i en foruddeffineret list, som ligger nærmest det tal

F.eks.
Jeg har en liste på nogle hundrende tal, og ønsker at finde det tal som ligger tættest på X. Jeg indtaster så X i en celle, og så skriver excel det tal fra listen, som ligger tættest på X, i en anden celle

Jeg håber at i kan hjælpe/Excel kan gøre det
Avatar billede janvogt Praktikant
07. november 2006 - 13:17 #1
Du kan bruge LOPSLAG til formålet.
Avatar billede kroholt Nybegynder
07. november 2006 - 15:03 #2
Du kan også slå.op
Avatar billede vejmand Juniormester
07. november 2006 - 15:22 #3
Når jeg læser i "Hjælpefunktionen" i Excel, står der følgende i min:
"Hvis LOPSLAG ikke kan finde opslagsværdi, og sorteret er SAND, anvendes den største værdi, der er mindre end eller lig med opslagsværdi"

Det finder jo ikke nærmeste tal, men nærmeste tal der er mindre end eller lig med opslagsværdi???
Avatar billede supertekst Ekspert
07. november 2006 - 18:24 #4
Kan du bruge en makro? - her er en model - til inspiration (måske):

Dim antalRæk, værdi, mindste, diff, mindsteDiff
Private Sub worksheet_change(ByVal target As Excel.Range)
    If target.Row = 2 And target.Column = 3 And target.Value <> "" Then
        værdi = target.Value                '"OpslagsVærdi" i C2
        findNærmeste
    End If
End Sub
Private Sub findNærmeste()
    mindste = 0
    mindsteDiff = 9999
    antalRæk = ActiveCell.SpecialCells(xlLastCell).Row
   
    Cells(3, 3) = findVærdi(værdi)          '"Resultat" i C3
End Sub
Private Function findVærdi(værdi)
    For ræk = 1 To antalRæk
        diff = Abs(Cells(ræk, 1) - værdi)
       
        If diff < mindsteDiff Then
            mindste = Cells(ræk, 1)        'liste i Kolonne A - også usorteret
            mindsteDiff = diff
        End If
    Next ræk
    findVærdi = mindste
End Function
Avatar billede mrjh Novice
07. november 2006 - 19:45 #5
værdier i A1:A7 og søgeværdi tastes i D1

=INDEKS(A:A;MIN(HVIS(MIN(ABS(D1-A1:A7))=ABS(D1-A1:A7);RÆKKE(A1:A7)));)

kopier formel og tryk ctrl+shift+enter
Avatar billede excelent Ekspert
07. november 2006 - 19:48 #6
Function Tæt(Rng As Range, Selle)
Dim x, y, z
Application.Volatile
z = 9999
For Each x In Rng
If Abs(x - Selle) < z Then z = Abs(x - Selle): y = x
Next
Tæt = y
End Function

i arket tast fx. =Tæt(A1:A500;B1)  hvor tal du søger er i B1
Avatar billede excelent Ekspert
07. november 2006 - 19:51 #7
nå  mrjh det kunne altså gøres med en formel :-) havde ellers opgivet
Avatar billede mrjh Novice
07. november 2006 - 20:35 #8
Ja det var jeg også lige ved, men stædighed er ind imellem en go' ting :-)
Avatar billede megadragon Nybegynder
07. november 2006 - 20:50 #9
supertekst/excelent: Jeg ønsker ikke at burges macros (det glemte jeg vist at skrive, sorry)
janvogt: LOPSLAG kan ikke burges da listen er 2-dimentionel (matrix)
kroholt: SLÅ.OP kan jeg ikke få til at virke
mrjh: samme som janvogt, jeg kan kun få den til at virke på 1-dimentionelle lister
Avatar billede mrjh Novice
07. november 2006 - 21:15 #10
Hvis jeg har forstået rigtigt. Denne virker i området A1:B7. søgeværdi tastes stadig i D1

=INDEKS(A:B;MIN(HVIS(MIN(ABS($D$1-$A$1:$B$7))=ABS($D$1-$A$1:$B$7);RÆKKE($1:$7)));MIN(HVIS(MIN(ABS($D$1-$A$1:$B$7))=ABS($D$1-$A$1:$B$7);KOLONNE($A:$B))))

kopier formel og tryk ctrl+shift+enter
Avatar billede excelent Ekspert
18. november 2006 - 17:13 #11
ja megadragon det er kun dig vi venter på
virker fint mrjh
Avatar billede megadragon Nybegynder
18. november 2006 - 18:11 #12
Jeg har ikke lige fået tjekket formlen i mrjh's sidste post, da jeg fandt en anden måde der virkede, men var mere besværlig.
han kan godt få pointende, hvis han ligger et svar
Avatar billede mrjh Novice
18. november 2006 - 20:01 #13
Ok tak, men kun point for brugbare svar
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

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