Avatar billede contici Nybegynder
27. november 2010 - 08:39 Der er 10 kommentarer og
1 løsning

Funktion til at finde position af en bestemt værdi i matrix

Hej,

Jeg skal bruge en Excel function som søger efter en bestemt værdi i en matrix, og derefter giver en position.

Jeg har prøvet både SLÅ.OP og SAMMENLIGN funktionen, men de ser ud til kun at virke på vektor, selvom der står noget andet i dokumentationen.

Håber nogen kan hjælpe.
Avatar billede martin_moth Mester
27. november 2010 - 08:44 #1
med matrix, mener du da tabel? - altså - den skal blot slå mellem f.eks. A1 og C3? (3x3 matrix)
Avatar billede contici Nybegynder
27. november 2010 - 08:58 #2
Hej Martin_moth... Det er lige præcis hvad jeg mener.
Avatar billede anlu Nybegynder
27. november 2010 - 23:11 #3
Hvis din værdi kun kan optræde 1 gang i matricen kan du bruge disse:
Hvor jeg antager at værdien der skal findes står i A5 og matricen er E4:H6.

Rækkenr:
=SUMPRODUCT(($E$4:$H$6=A5)*COLUMN($E$4:$H$6))
(returnerer 0, hvis værdien ikke findes)

Kolonnenr:
=SUMPRODUCT(($E$4:$H$6=A5)*ROW($E$4:$H$6))
(returnerer 0, hvis værdien ikke findes)

Adressen:
=ADDRESS(SUMPRODUCT(($E$4:$H$6=A5)*ROW($E$4:$H$6));SUMPRODUCT(($E$4:$H$6=A5)*COLUMN($E$4:$H$6)))

Men hvis værdien optræder flere gange i matricen giver det noget nonsens.

(Nu så jeg lige at du kører DK-version - du kan finde oversættelser af formel-navne her:
http://www.libris.dk/Tips+m.v./Tips+fra+vores+nyhedsmails/excel_funktionsnavne_engelsk-dansk.htm)
Avatar billede contici Nybegynder
28. november 2010 - 10:07 #4
Hej anlu,

Det virker ikke rigtigt, da jeg godt kan have flere af samme værdi. Men er der ikke nogen der kan fortælle mig hvad der sker med slå.op og sammenlign funktionen? De skulle da virke til mit formål, men gør det altså bare ikke.
Avatar billede ciuspan Nybegynder
29. november 2010 - 15:48 #5
Du skal lave en MATCH(INDEX...)-formel
her er lidt inspiration http://www.contextures.com/xlfunctions03.html#IndexMatch
Avatar billede anlu Nybegynder
29. november 2010 - 21:25 #6
Jeg mener ikke at slå.op og sammenlign (match) kan håndtere andet end vektorer - og dokumentationen på engelsk tyder ikke umiddelbart på det.

Et par ideer:
1) Hvis det er et fast område og relativt lille (få rækker eller få søjler) kan du jo bruge slå.op for hver række eller søjle.

2) Hvis det er ok med lidt VBA, kan du bruge en funktion a la denne:

Public Function FindInMatrix(val As Variant, r As Range) As String
    FindInMatrix = r.Find(val, LookIn:=xlValues, lookat:=xlWhole).Address
End Function

Placer koden i et modul. Du kalder den så fra arket med en formel således:
=FindInMatrix(A16;$E$4:$H$6)
Avatar billede contici Nybegynder
29. november 2010 - 21:53 #7
Har selv lavet noget VBA. Det var lidt besværligt, da der kan være flere af samme værdi i matrixen og at den skal finde alle positionerne. Men tror det lykkedes til sidst
Avatar billede anlu Nybegynder
29. november 2010 - 21:59 #8
Fint fint - så luk du bare spørgsmålet, men del da gerne din løsning med os andre :)
Avatar billede contici Nybegynder
29. november 2010 - 22:14 #9
Hvordan lukker jeg? Vil gerne dele, men koden ligger på arbejdet. Må lige huske den i morgen.
Avatar billede anlu Nybegynder
30. november 2010 - 18:08 #10
Du lukker ved at lægge et "Svar" i stedet for en "Kommentar" og så accepterer du svaret efterfølgende. Du kan jo passende lægge løsningen i svaret :)
Avatar billede contici Nybegynder
13. juni 2012 - 08:25 #11
LUKKET!
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