Avatar billede densortehingst Seniormester
10. august 2017 - 13:07 Der er 6 kommentarer og
1 løsning

Opslag

jeg har et excelark, som ser sådan ud:

1235    12
5863    5
4258    11
1235    8
5863    6
1122    4
3344    3

og så videre. Ca 100.000 rækker.

jeg ønsker at lave en rutine, hvor jeg kan skrive et tal i en celle og nedenunder få resultatet for alle de celler der matcher: (tabellen kan ikke sorteres)

jeg skriver 1235
svar  :
12
8

Det må været noget lopslag, men det virker jo ikke på flere celler !!
Avatar billede xl-Enthusiast Ekspert
10. august 2017 - 13:25 #1
Med dine data i A1:B7 og opslagsværdien (1235) i D1, prøv denne matrixformel:

=HVIS.FEJL(INDEKS($B$1:$B$7;MINDSTE(HVIS($A$1:$A$7=$D$1;RÆKKE(A1:A7)-CELLE("row";$A$1:$A$7)+1);RÆKKER($1:1)));"")

Ved indtastning af formlen, husk at holde Ctrl og Shift nede før tryk på Enter. Hvis du gør det korrekt vil Excel automatisk sætte {} omkring formlen. Når du har indtastet én matrixformel korrekt, kan du kopiere til andre celler på normal vis.
Avatar billede xl-Enthusiast Ekspert
10. august 2017 - 13:32 #2
Der manglede et par dollartegn i formlen i #1. Brug denne formel i stedet for:

HVIS.FEJL(INDEKS($B$1:$B$7;MINDSTE(HVIS($A$1:$A$7=$D$1;RÆKKE($A$1:$A$7)-CELLE("row";$A$1:$A$7)+1);RÆKKER($1:1)));"")
Avatar billede supertekst Ekspert
10. august 2017 - 13:50 #3
Alternativt via VBA
Avatar billede ebea Ekspert
10. august 2017 - 14:22 #4
Alternativ:
{=HVIS.FEJL(MINDSTE(HVIS($D$1=$A$1:$A$100000; RÆKKE($A$1:$A$100000)-RÆKKE($A$1)+1);RÆKKE(1:1));"")}

Matriks formel (Ctrl+Shift+Enter).
Det ønskede opslag, indtastes i D1
Og så kopier formlen nedefter hvor du ønsker resultatet, og til det ønskede rækketal.
Avatar billede h_s Forsker
10. august 2017 - 15:44 #5
Et andet alternativ kunne være at lave en formateret tabel og så filtrer på 1235 i kolonnen. Det vil give det samme resultat uden funktioner og VBA :-)
Avatar billede jens48 Ekspert
10. august 2017 - 17:05 #6
Denne makro kan lave en liste i kolonne E begyndende i E3, hvis du skriver 1235 eller andet tal i E1

Sub ListData()
Dim LastRow, x, y As Integer
LastRow = Cells(65356, 1).End(xlUp).Row
y = 3
For x = 1 To LastRow
If Cells(x, 1) = Range("E1") Then
Cells(y, 5) = Cells(x, 2)
y = y + 1
End If
Next
End Sub
Avatar billede densortehingst Seniormester
10. august 2017 - 22:13 #7
Makroen virkede fint :) Tak for hjælpen
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