Avatar billede claus_b. Novice
28. december 2009 - 19:07 Der er 7 kommentarer og
1 løsning

opslag af adresse for en værdi

i en kolonne er en liste af ikke-sorterede værdier.
Jeg vil gerne finde rækken for den første gang værdien er >= et givent tal.

Altså fx. indeholder kolonnen:
10
17
15
17
16

jeg søger efter værdien>=16 og får returneret rækken 2(17 er det første >=16)

håber det er muligt.

Jeg har ikke mulighed for at sortere først.
Avatar billede tg4600 Nybegynder
28. december 2009 - 19:40 #1
Der findes ikke en standard funktion i excel, der kan klare dette. Du bliver nok nødt til at lave en vba-kode i stil med:

Input = 16
R = 1
For Each Celle in Range("C1:C5")
If Celle.Value >= Input then exit
R = R + 1
Next Celle

If R <  Range("C1:C5").Rows then
msgbox("Row(" & R & "). " & Celle & ">=" & Input)
End if

If R = Range("C1:C5").Rows and Celle < Input then
msgbox("No values greater than" & Input)
end if
Avatar billede Slettet bruger
28. december 2009 - 20:01 #2
Hvis du foretrækker en formelløsning, så:

=INDEKS(A1:A10;SAMMENLIGN(SAND;A1:A10>=C1;0))

hvor C1 indeholder opslagsværdien (her 16).
Det er en matriksformel så husk at holde Ctrl og Shift nede før du trykker på Enter.

Hans
Avatar billede Slettet bruger
28. december 2009 - 20:08 #3
Det var vist rækkeværdien du ønskede, så i stedet for det jeg skrev tidligere så brug følgende:
=SAMMMENLIGN(INDEKS(A1:A10;SAMMENLIGN(SAND;A1:A10>=C1;0));A1:A10;0)
Avatar billede excelent Ekspert
28. december 2009 - 20:10 #4
Navngiv din talrække rng og cellen med værdien du søger tal
så kan du anvende denne matrixformel
Der er ikke nødvendigt med navngivning, men er lettere når du nu ikke har angivet noget konkret

=HVIS(MIN(HVIS(rng=tal;RÆKKE(rng)))<>0;MIN(HVIS(rng=tal;RÆKKE(rng)));MIN(HVIS(rng>=tal;RÆKKE(rng))))
Avatar billede claus_b. Novice
28. december 2009 - 20:50 #5
herligt med masser af hjælp.
Har prøvet alle løsningsforslagene, men intet virker helt efter hensigten.

tg4600:
Jeg er på ingen måde vant til visual basic - kan faktisk ikke finde ud af at indsætte makroen. Bruger excel 2007, har oprettet makroen(menu udvikler, visual basic og pasted koden ind. Hvad gør jeg derefter?)

dkhanknu:
dit første forslag giver nogle svar, jeg ikke lige kan forstå.
Det andet forslag returnerer "ugyldigt navn"

excelent:
det virker næsten, men hvis det præcise tal findes længere nede i kolonnen, angives dette på trods af, at et større tal findes tidligere.

jeg ville gerne have en løsning, som skal kunne starte et specielt sted i kolonnen og dermed ikke medtage alle værdier over dette punkt - sorry, skulle have specificeret mere, kan jeg se.
Avatar billede excelent Ekspert
28. december 2009 - 20:59 #6
nå ok men så virker dkhanknu's formel så vidt jeg kan se

eller prøv min - afslut med CTRL+SHIFT+ENTER

=MIN(HVIS(rng>=tal;RÆKKE(rng)))
Avatar billede claus_b. Novice
29. december 2009 - 02:36 #7
mange tak for alle svarene. Endte med at bruge en del af dkhanknu's, så kom endelig med et svar og pointene skifter ejermand :-)
Avatar billede Slettet bruger
29. december 2009 - 08:08 #8
Værsgod.
Hans
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