Avatar billede esearch Nybegynder
20. februar 2006 - 23:09 Der er 27 kommentarer og
1 løsning

Hente udvalgte rækker i ark baseret på bestemte kriterier

Jeg har brug for hjælp til en formel, der skal hente en rækker fra et worksheet hvis denne række opfylder et bestemt kriterie. (Kriteriet er et bestemt bogstav i en bestemt kolonne). Dernæst skal de hentede rækker sorteres efter en anden kolonne.
Avatar billede kabbak Professor
20. februar 2006 - 23:25 #1
Du skal vist til at kikke på Data >Filter > avancerede filter
den kan hente rækkerne.

Så må du jo sortere senere

Husk at avancerede filter , skal startes fra det ark dataerne skal over på,
Avatar billede esearch Nybegynder
20. februar 2006 - 23:42 #2
Det skulle gerne ske automatisk uden min indblanding, når altså først arket er sat op.
Avatar billede kabbak Professor
20. februar 2006 - 23:44 #3
vil det sige at dit kriterie er det samme hver gang
Avatar billede esearch Nybegynder
20. februar 2006 - 23:56 #4
ja, kriteriet er et bestemt bogstav i fast kolonne
Avatar billede kabbak Professor
21. februar 2006 - 00:02 #5
Public Sub HentData()
    Dim shData As Worksheet
    Dim RW As Long, RW1 As Long, C As Range
    Set shData = Worksheets("Ark1")    'ret til dit data ark
    RW = shData.Range("A65536").End(xlUp).Row    ' Ret A til kolonnen for søgekreteriet
    For Each C In shData.Range("A1:A" & RW).Cells    'Ret A til kolonnen for søgekreteriet
            RW1 = ActiveSheet.Range("A65536").End(xlUp).Row + 1
        If UCase(C.Text) = "A" Then    ' ret til dit søge bogstav

            shData.Rows(C.Row).Copy ActiveSheet.Range("A" & RW1)
        End If
    Next
End Sub
Avatar billede kabbak Professor
21. februar 2006 - 00:03 #6
den kopierer rækkerne over på det aktive ark
Avatar billede esearch Nybegynder
21. februar 2006 - 00:05 #7
Kabbak du er en haj, tak for det, men jeg er bange for, at du bliver nødt til at tilføje en lille forklaring til en "dumskalle" som jeg!!! Hvor er det lige, jeg skal skrive ovenstående?
Avatar billede kabbak Professor
21. februar 2006 - 00:07 #8
der er lige et par ting, skal den gamle liste slettes, (i det aktive ark) inden der hentes nye linier.

Er der overskrifter der også skal være i det aktive ark
Avatar billede esearch Nybegynder
21. februar 2006 - 00:10 #9
Der skal ikke hentes overskrifter, og rent faktisk skal jeg kun bruge to celler fra være række der hentes.
Avatar billede kabbak Professor
21. februar 2006 - 00:13 #10
OK
Højreklik på arkfanen, på det ark som linierne skal over i, vlæg vis programkode.

sæt denne kode ind

Private Sub Worksheet_Activate()
Dim shData As Worksheet
    Dim RW As Long, RW1 As Long, C As Range
    Range("A2").Select
    Range(Selection, ActiveCell.SpecialCells(xlLastCell)).ClearContents
    Set shData = Worksheets("Ark1")    'ret til dit data ark
    RW = shData.Range("A65536").End(xlUp).Row    ' Ret A til kolonnen for søgekreteriet
    For Each C In shData.Range("A1:A" & RW).Cells    'Ret A til kolonnen for søgekreteriet
            RW1 = ActiveSheet.Range("A65536").End(xlUp).Row + 1
        If UCase(C.Text) = "A" Then    ' ret til dit søge bogstav
            shData.Rows(C.Row).Copy ActiveSheet.Range("A" & RW1)
        End If
    Next
End Sub


koden opdaterer arket, hver gang det bliver aktiveret, det vil sige at du skal klikke på en anden arkfane, og så gå tilbage igen, så er den opdateret
Avatar billede kabbak Professor
21. februar 2006 - 00:17 #11
hvilke 2 celler fra hver række, hvis vi skal nøjes med det ?
Avatar billede esearch Nybegynder
21. februar 2006 - 00:22 #12
Jeg skal lige være helt sikker på at jeg forstår dig korrekt. De data jeg skal hente ligger i et ark der hedder Beregning. Jeg erstatter altså Ark1 med beregning og dernæst A65536 til B7 hvis denne celle indeholder mit bogstav der er kriteriet. Er det korrekt forstået?
Avatar billede kabbak Professor
21. februar 2006 - 00:26 #13
Det med arket er ok
det med kriteriet, du sagde at det var fast, så det er "A" der skal rettes til det

RW = shData.Range("A65536").End(xlUp).Row    ' Ret A til kolonnen for søgekreteriet
det er i dene kolonne den skal finde søgekreteriet
Avatar billede esearch Nybegynder
21. februar 2006 - 00:28 #14
Det virker fint, dog får jeg for hver række der ikke opfylder kriteriet en 0 række indsat, og det var ikke meningen. Jeg ville jo gerne have en liste at rækker der opfylder kriteriet.
Avatar billede kabbak Professor
21. februar 2006 - 00:30 #15
hvis du vil have forskellige søgebogstaver, og skriver det i en celle, og den celle er i arket "beregninger" så er det linien

If UCase(C.Text) =  ucase(shData.Range("B7" )). Then    ' ret til dit søge bogstav
Avatar billede kabbak Professor
21. februar 2006 - 00:32 #16
når du har rettet koden, så smid den lige herind
Avatar billede esearch Nybegynder
21. februar 2006 - 00:38 #17
den henter række 1 til 63 selvom jeg har ialt ca 1200 rækker, men som sagt ser det mere ud som om den blot kopierer de første 63 rækker?

Private Sub Worksheet_Activate()
Dim shData As Worksheet
    Dim RW As Long, RW1 As Long, C As Range
    Range("A2").Select
    Range(Selection, ActiveCell.SpecialCells(xlLastCell)).ClearContents
    Set shData = Worksheets("Beregning")    'ret til dit data ark
    RW = shData.Range("F65536").End(xlUp).Row    ' Ret A til kolonnen for søgekreteriet
    For Each C In shData.Range("F1:F" & RW).Cells    'Ret A til kolonnen for søgekreteriet
            RW1 = ActiveSheet.Range("F65536").End(xlUp).Row + 1
        If UCase(C.Text) = "A" Then    ' ret til dit søge bogstav
            shData.Rows(C.Row).Copy ActiveSheet.Range("A" & RW1)
        End If
    Next
End Sub
Avatar billede kabbak Professor
21. februar 2006 - 00:43 #18
Private Sub Worksheet_Activate()
Dim shData As Worksheet
    Dim RW As Long, RW1 As Long, C As Range
    Range("A2").Select
    Range(Selection, ActiveCell.SpecialCells(xlLastCell)).ClearContents
    Set shData = Worksheets("Beregning")    'ret til dit data ark
    RW = shData.Range("F65536").End(xlUp).Row    ' Ret A til kolonnen for søgekreteriet
    For Each C In shData.Range("F1:F" & RW).Cells    'Ret A til kolonnen for søgekreteriet
            RW1 = ActiveSheet.Range("A65536").End(xlUp).Row + 1
        If UCase(C.Text) = "A" Then    ' ret til dit søge bogstav
            shData.Rows(C.Row).Copy ActiveSheet.Range("A" & RW1)
        End If
    Next
End Sub

Er det korrekt at det er bogstavet A du søger efter
If UCase(C.Text) = "A" Then   

Jeg rettede denne
RW1 = ActiveSheet.Range("A65536").End(xlUp).Row + 1
Avatar billede esearch Nybegynder
21. februar 2006 - 00:43 #19
Ja det er korrekt
Avatar billede kabbak Professor
21. februar 2006 - 00:45 #20
og du får flere rækker end dem der står A udfor  i kolonne F
Avatar billede esearch Nybegynder
21. februar 2006 - 00:46 #21
Ja jeg får overført samtlige rækker fra 1 til 63 og ikke flere
Avatar billede kabbak Professor
21. februar 2006 - 00:47 #22
send lige arket kabbak snabela tiscali punktum dk
Avatar billede esearch Nybegynder
21. februar 2006 - 01:01 #23
Jeg kopierede dit forslag og nu blev den pænt hentet i korrekt format???? Jeg er ikke blevet klogere på hvad der sker, men det virker så tusind tak for hjælpen. Send et svar så får du dine point...iøvrigt kan du anbefale nogle gode guides til visual basic progammering i excel , så vil jeg være dig endnu mere taknemmelig.
Avatar billede kabbak Professor
21. februar 2006 - 01:06 #25
;-))
Avatar billede kabbak Professor
21. februar 2006 - 01:08 #26
Godnat, nu er det sovetid :-O
Avatar billede esearch Nybegynder
21. februar 2006 - 01:21 #27
Jeg er ikke klar over om du har fået mine point? jeg har accepteret dit svar, men jeg kan ikke se at der sker noget?
Avatar billede kabbak Professor
21. februar 2006 - 08:06 #28
det er ok, jeg har fået
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