Avatar billede hoejlund2003 Nybegynder
07. maj 2008 - 23:26 Der er 11 kommentarer og
1 løsning

Hurtig: søg på et ord i en xl.celle kopiere række til anden fan?

Hejsa

Jeg har kastet mig ud i et lille projekt, som jeg bare ikke kan komme videre med. Jeg syntes at have ledt efter diverse muligheder herinde men uden held.

Mit problem går ud på at jeg har 5 kollonner og 50 rækker.
Jeg vil søge på et ord i kollonne c. Når ordet er fundet så skal rækken kopieres over i en anden arkfane, med søgeordet i kollonne c som navn.

Da det typisk vil være de samme 4 søgeord, så skal der laves en loop, så andre rækker bliver tilføjet arket + 1


Håber det er klart at forstå?
Avatar billede supertekst Ekspert
07. maj 2008 - 23:49 #1
Hvor kommer søgeordet fra?
Avatar billede supertekst Ekspert
08. maj 2008 - 09:52 #2
Rem Model 1
Rem Koden anbringes i ark med data (Højreklik på fane / Vis programkode)
Rem Arkene med søgeords-betegnelsen forventes at være oprettet
Rem Koden igangsættes med Alt+F8 - Afspil "startSøgning"
Rem ====================================================================
Sub startSøgning()
Dim antalRæk, tekst
    ActiveWorkbook.Sheets(1).Activate
   
    antalRæk = ActiveCell.SpecialCells(xlLastCell).Row
    tekst = InputBox("Indtast søgeord:", "Start søgning")
    søgOrd tekst, antalRæk
End Sub
Private Sub søgOrd(tekst, antalRæk)
    For ræk = 1 To antalRæk
        If Cells(ræk, 3) = tekst Then
            Rows(ræk).Copy
            indsætRækkeIArk tekst
        End If
    Next ræk
End Sub
Private Sub indsætRækkeIArk(tekst)
    ActiveWorkbook.Sheets(tekst).Activate
    For ræk = 1 To 65000
        If ActiveSheet.Cells(ræk, 1) = "" Then
            ActiveSheet.Rows(ræk).Select
            ActiveSheet.Paste
            ActiveWorkbook.Sheets(1).Activate
            Application.CutCopyMode = False
            Exit Sub
        End If
    Next ræk
End Sub
Avatar billede hoejlund2003 Nybegynder
08. maj 2008 - 10:39 #3
Søgeordet bliver gemt i modulet. F.eks. så skal den søge på 310/320/330/340
Men jeg går udfra at jeg i stedet for: "tekst= inputbox()" skriver "tekst="310"

Hvordan skal jeg gøre for at komme videre til søgeord "320" som derefter skal kopiere de data til ark("320")??

Jeg giver det lige et forsøg når jeg kommer hjem fra arbejde.
Avatar billede supertekst Ekspert
08. maj 2008 - 10:59 #4
Er søgeordene permanente - eller kunne man forestille sig at de kunne være placeret i et ark for sig - således at disse nemt kunne udskiftes.

Uanset dette er det ikke noget problem at behandle alle "søgeord".
Avatar billede hoejlund2003 Nybegynder
08. maj 2008 - 17:44 #5
Søgeordne er permanente, og det virker fantastisk :D Tak for hjælpen.

I dette ark, der er så også nogle datoer som bliver lagt ind assorteret.
Jeg kunne godt tænke mig en knap, som kunne sortere datoerne stigende, men også en knap der kan sortere datoerne faldende.

Kan du hjælpe mig med det??
Avatar billede supertekst Ekspert
08. maj 2008 - 18:08 #6
Har du fået gennemløb af alle 4 søgeord på plads?

Med hensyn til sortering - så prøv at indspille to makroer, hvor du sortere den nævnte dato i begge "retninger" - så har du koden, som du kan forbinde med hver sin knap.
Avatar billede hoejlund2003 Nybegynder
08. maj 2008 - 18:38 #7
Har du fået gennemløb af alle 4 søgeord på plads? --> Hmm nej, det lykkes faktisk ikke rigtig for mig. Jeg har prøvet at lave en tekst1, tekst2, tekst3 for at gi' dem hver deres søgeord.

Men det virker ikke
Avatar billede supertekst Ekspert
08. maj 2008 - 18:47 #8
Vender tilbage senere (snart spisetid) med en løsning...
Avatar billede hoejlund2003 Nybegynder
08. maj 2008 - 21:00 #9
Jeg kan godt nok ikke få søgefunktionen til til at virke med tal. Det virker fint med tekst
Avatar billede supertekst Ekspert
08. maj 2008 - 23:29 #10
Rem Model 2
Rem Koden anbringes i ark med data (Højreklik på fane / Vis programkode)
Rem Arkene med søgeords-betegnelsen forventes at være oprettet
Rem Koden igangsættes med Alt+F8 - Afspil "startSøgning"
Rem ====================================================================
Dim søgeTekster As Variant
Sub startSøgning()
Dim antalRæk, tekst
    ActiveWorkbook.Sheets(1).Activate
   
    antalRæk = ActiveCell.SpecialCells(xlLastCell).Row
    opretSøgeOrd
   
    søgOrd antalRæk
End Sub
Private Sub opretSøgeOrd()
Rem Hvis Tal **************************
    søgeTekster = Array(11, 22, 33, 44) '<-----EKSEMPEL

Rem Hvis tekster **********************
Rem søgeTekster = Array("aa", "bb", "cc", "dd")

End Sub
Private Sub søgOrd(antalRæk)
Dim cTekst
    For ræk = 1 To antalRæk
        cTekst = Cells(ræk, 3)
       
        If erDetSøgeOrd(cTekst) = True Then
            Rows(ræk).Copy
            indsætRækkeIArk cTekst
        End If
    Next ræk
End Sub
Private Function erDetSøgeOrd(cTekst)
    For f = 0 To UBound(søgeTekster)
        If cTekst = søgeTekster(f) Then
            erDetSøgeOrd = True
            Exit Function
        End If
    Next f
    erDetSøgeOrd = False
End Function
Private Sub indsætRækkeIArk(tekst)
    ActiveWorkbook.Sheets(CStr(tekst)).Activate    '<- Cstr(Tekst) tal -> tekst
    For ræk = 1 To 65000
        If ActiveSheet.Cells(ræk, 1) = "" Then
            ActiveSheet.Rows(ræk).Select
            ActiveSheet.Paste
            ActiveWorkbook.Sheets(1).Activate
            Application.CutCopyMode = False
            Exit Sub
        End If
    Next ræk
End Sub
Avatar billede hoejlund2003 Nybegynder
12. maj 2008 - 12:47 #11
Jeg takker for hjælpen, det virker!
Avatar billede supertekst Ekspert
12. maj 2008 - 14:04 #12
Selv tak...
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
Kurser inden for grundlæggende programmering

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