08. november 2015 - 13:58Der 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 ?
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
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 ?
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
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
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 ?
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
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
Synes godt om
Ny brugerNybegynder
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.