Avatar billede Latte Mester
18. februar 2015 - 11:16 Der er 11 kommentarer og
1 løsning

Søg efter tekst og returner

Baggrund:

I søjle R, som er på 2000 linjer, ønsker jeg at finde alle, hvor der i cellen står "Blå".

Hvis der står "Blå" ønsker jeg hele linjen kopieret eller linked over i en anden fanen i regnearket, og næstkommende "Blå" i linjen nedenunder, sådan at alle "Blå" listes under hinanden.

Pivot duer ikke lige i dette tilfælde.
Avatar billede jens48 Ekspert
18. februar 2015 - 11:36 #1
Prøv med denne makro:

Sub flyt()
Dim x, y As Integer
y = 1
LastRow = Cells(65356, 1).End(xlUp).Row
On Error Resume Next
For x = 1 To LastRow
If InStr(1, Cells(x, 1), "blå") Then
Cells(x, 1).EntireRow.Copy Destination:=Worksheets("Sheet2").Cells(y, 1)
y = y + 1
End If
Next
End Sub
Avatar billede natkatten Mester
18. februar 2015 - 11:41 #2
Her er et andet bud baseret på filterfunktionen:

http://gupl.dk/719861/
Avatar billede Latte Mester
18. februar 2015 - 12:44 #3
Jeg kan ikke rigtig få det til at virke. Har dansk udgave, og har erstattet Sheet2 med Ark2.

Jeg er ikke VBA kyndig, men skal der ikke stå noget om hvilken søjle (R), der skal tages udgangspunkt i?
Avatar billede jens48 Ekspert
18. februar 2015 - 12:59 #4
Jo, kolonnen (eller søjle som du kalder det) er vigtig. Det er bestemt af tallet i
If InStr(1, Cells(x, 1), "blå") Then
(andet 1-tal)
Som jeg lavede den søger den i kolonne A
Avatar billede Latte Mester
18. februar 2015 - 13:09 #5
Ok - hvis jeg så har "Blå" i kolonne R, skal jeg så ændre et eller flere "1-taller" til 18?
Avatar billede xl-Enthusiast Ekspert
18. februar 2015 - 13:21 #6
Endnu en måde:

Navngiv dit område i kolonne R som d og brug følgende matrixformel:

=HVIS.FEJL(INDEKS(d;MINDSTE(HVIS(d="Blå";RÆKKE(d)-CELLE("row";d)+1);RÆKKER($1:1)));"")

Husk ved indtastning, at du skal holde Ctrl og Shift nede før du trykker på Enter. Når første formel er indtastet på denne måde han du kopiere på normal vis.

Hvis engelsksproget Excel så:

=IFERROR(INDEX(d;SMALL(IF(d="Blå";ROW(d)-CELL("row";d)+1);ROWS($1:1)));"")
Avatar billede jens48 Ekspert
18. februar 2015 - 13:24 #7
Ja, kolonne R = 18
Avatar billede finb Ekspert
18. februar 2015 - 14:09 #8
Brug Autofilter, skriv *blå*
Avatar billede Latte Mester
18. februar 2015 - 14:17 #9
Det virker fremragende hvis der skal slås på i A og ikke R, men:

Hvilke 1 skal erstattes af 18? Har prøvet mig frem, men ikke kommet i mål.

Sub flyt()
Dim x, y As Integer
y = 1
LastRow = Cells(65356, 1).End(xlUp).Row
On Error Resume Next
For x = 1 To LastRow
If InStr(1, Cells(x, 1), "blå") Then
Cells(x, 1).EntireRow.Copy Destination:=Worksheets("Sheet2").Cells(y, 1)
y = y + 1
End If
Next
End Sub
Avatar billede jens48 Ekspert
18. februar 2015 - 14:37 #10
Sub flyt()
Dim x, y As Integer
y = 1
LastRow = Cells(65356, 1).End(xlUp).Row
On Error Resume Next
For x = 1 To LastRow
If InStr(1, Cells(x, 18), "blå") Then
Cells(x, 1).EntireRow.Copy Destination:=Worksheets("Sheet2").Cells(y, 1)
y = y + 1
End If
Next
End Sub

Bemærk at den diskriminerer mellem store og små bogstaver. Du kan for at undgå dette udskifte

If InStr(1, Cells(x, 18), "blå") Then

med

If InStr(1, Cells(x, 18), "blå") or InStr(1, Cells(x, 18), "Blå")  Then
Avatar billede Latte Mester
18. februar 2015 - 14:55 #11
Hov! Det skulle ikke have været et svar
Avatar billede Latte Mester
18. februar 2015 - 15:33 #12
Mange tak - jeg er "flyvende" :)
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

IT-JOB