Avatar billede FinnLauridsen Forsker
08. november 2015 - 13:58 Der er 12 kommentarer og
1 løsning

søg med lopslag

Jeg har et regneark med 2 ark, i første ark A1 sætter jeg navn ind , i B1 sætter jeg formlen =LOPSLAG($A$1;'Ark2'!A1:C10;2;FALSK)ind, som jeg kopierer ned til A10
i ark 2 A1 til A10 sætter jeg navne ind navnene går igen ca 3 gange eksempel: ole er i A1,A4,A7,A10 I B1-10 er der bare nr. 1-10
Når jeg så skriver ole i Ark1 A1 så kommer resultatet1,4,4,4,7,7,7,10,10,10, jeg kan ikke forstå at resultatet ikke er 1,4,7,10
Kan nogen hjælpe mig ?
Avatar billede supertekst Ekspert
08. november 2015 - 15:11 #1
Du henviser i alle formlerne til A1 på grund af $-tegnene
Avatar billede store-morten Ekspert
08. november 2015 - 15:34 #2
LOPSLAG henter den første fundne.

Når du kopierer formlen, ændre opslagsområdet sig.

1.
opslagsområde 'Ark2'!A1:C10 Ole findes i A1
2.
opslagsområde 'Ark2'!A2:C11 Ole findes i A4
3.
opslagsområde 'Ark2'!A3:C13 Ole findes i A4
4.
opslagsområde 'Ark2'!A4:C14 Ole findes i A4
5.
opslagsområde 'Ark2'!A5:C15 Ole findes i A5 ... osv
Avatar billede FinnLauridsen Forsker
08. november 2015 - 16:08 #3
Super text: Ja jeg bruger kun A1  som søgefelt
Store Morten: Navnene kommer i denne rækkefølge:1-10 ole ,finn,per ,ole,fin,per,ole finn.per,ole
Ole forekommer kun 1,4,7,10
når jeg låser opslagsområdet med $ i A1 og C10 så kommer kun det første fundne =1
Hvordan får jeg den til at vise at ole kun findes i 1,4,7,10 ?
Avatar billede jens48 Ekspert
08. november 2015 - 16:27 #4
Indsæt denne formel i B1 og kopier ned til B10

=HVIS(INDEKS(Ark2!$A$1:$A$10;RÆKKE())=$A$1;INDEKS(Ark2!$B$1:$B$10;RÆKKE());"")
Avatar billede FinnLauridsen Forsker
08. november 2015 - 16:48 #5
Jens: er der nogen mulighed for at resultatet kommer lige under  hinanden , i stedet for på linie 1,4 7,10 ?
Avatar billede jens48 Ekspert
08. november 2015 - 17:04 #6
Så tror jeg det er lettere med en makro:

Sub InsertNumbers()
Dim x, y As Integer
Sheets("Ark1").Range("B1:B10").ClearContents
y = 1
For x = 1 To 10
If Sheets("Ark2").Cells(x, 1) = Sheets("Ark1").Range("A1") Then
Sheets("Ark1").Cells(y, 2) = Sheets("Ark2").Cells(x, 2)
y = y + 1
End If
Next
End Sub
Avatar billede FinnLauridsen Forsker
08. november 2015 - 17:16 #7
Jens : hvor skal koden indsættes ark 1 eller2
Avatar billede jens48 Ekspert
08. november 2015 - 17:24 #8
Prøv med denne makro i stedet. Den kører automatisk, når der skrives i A1, hvis du højreklikker på Ark1 fanebladet og indsætter den under vis koder. Bemærk at der skelnes mellem store og små bogstaver.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
Dim x, y, z As Integer
z = Application.WorksheetFunction.CountA(Sheets("Ark2").Range("A:A"))
Sheets("Ark1").Range("B:B").ClearContents
y = 1
For x = 1 To z
If Sheets("Ark2").Cells(x, 1) = Sheets("Ark1").Range("A1") Then
Sheets("Ark1").Cells(y, 2) = Sheets("Ark2").Cells(x, 2)
y = y + 1
End If
Next
End If
End Sub
Avatar billede FinnLauridsen Forsker
08. november 2015 - 17:44 #9
Jens:
Virker perfekt når der kun er 1 ting at referer til , men i virkligheden er der 10 kolonner der skal vises i ark 1 oplysningerne  ligger i Ark2 eks. B1 til K500
kan jeg få dette til at virke ved at udvide din formel ?
Avatar billede jens48 Ekspert
08. november 2015 - 18:09 #10
Makroen skelner ikke længere mellem store og små bogstaver

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
Dim x, y, z, a As Integer
z = Application.WorksheetFunction.CountA(Sheets("Ark2").Range("A:A"))
Sheets("Ark1").Range("B:K").ClearContents
y = 1
For x = 1 To z
If UCase(Sheets("Ark2").Cells(x, 1)) = UCase(Sheets("Ark1").Range("A1")) Then
Worksheets("Ark2").Range("B" & x & ":K" & x).Copy _
    Destination:=Worksheets("Ark1").Range("B" & y)
y = y + 1
End If
Next
End If
End Sub
Avatar billede FinnLauridsen Forsker
08. november 2015 - 19:35 #11
ok Jens nu er det helt perfekt lav lige et svar
Avatar billede FinnLauridsen Forsker
08. november 2015 - 20:05 #12
Jens din macro virker perfekt, men hvis du vil forklare hvad der sker i hver linie , så også jeg forstår det ville dette være en stor hjælp
Avatar billede jens48 Ekspert
08. november 2015 - 22:37 #13
Her er makroen igen med kommentarer. Hvis du indsætter den, vil kommentarerne vises i grønt.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then ' starter makroen, når der skrives i A1
Dim x, y, z, a As Integer ' variablerne defineres som integer
z = Application.WorksheetFunction.CountA(Sheets("Ark2").Range("A:A")) ' der tælles linier i kolonne A (Ark2)
Sheets("Ark1").Range("B:K").ClearContents ' de gamle data på Ark1 slettes
y = 1 ' y angiver linien der skal skrives i på Ark1
For x = 1 To z ' linierne 1 til z (sidste linie) testes. x angiver linien der testes
If UCase(Sheets("Ark2").Cells(x, 1)) = UCase(Sheets("Ark1").Range("A1")) Then ' Hvis celle Ax (Ark2) = A1 (Ark1) så:
Worksheets("Ark2").Range("B" & x & ":K" & x).Copy _
    Destination:=Worksheets("Sheet1").Range("B" & y) ' kopiering af Bx:Kx (Ark2) til By:Ky (Ark1)
y = y + 1 'y forøges med 1
End If
Next 'tilbage i sløjfen til sidste linie nås
End If
End Sub
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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