Avatar billede adan Nybegynder
03. september 2007 - 13:37 Der er 13 kommentarer og
2 løsninger

Udtræk af liste

Jeg kan ikke lige gennemskue hvordan jeg klarer nedenstående problem.

Jeg har en liste som følgende. (X står i kolonne A, Navn i kolonne B)

x  AAB
  Horsens
X  FCM
X  FCK
  Brøndby
X  OB
  Horsens
  Randers
  FCN
  Esbjerg

Jeg vil gerne på et andet ark i mappen, lave en liste der kun viser klubnavnene med x ud for - og som rettes automatisk når et kryds bliver tilføjet/fjernet

Nogle ideer?
Avatar billede rosco Novice
03. september 2007 - 14:02 #1
Avatar billede adan Nybegynder
03. september 2007 - 14:37 #2
Har kigget lidt på den, men kan ikke helt gennemskue den.

Forstår ikke helt nedenstående:

HVIS(TÆL.HVIS(.. tæller om antal værdier du vælger i B1 er >= den aktuele række der kopieres til.
INDEKS(.. bestemmer fra hvilken kolonne resultat skal komme fra
MINDSTE(... returnerer første fundne værdi henholdsvis anden osv..

- I mit tilfælde med X og klub. Hvad er så hvad i ovenstående beskrivelse?
Avatar billede supertekst Ekspert
03. september 2007 - 15:25 #3
Kopier følgende kode ind på ark1 i vba (højreklik på arket - vis programkode)
Så skulle det hele gå automatisk - ved x til/fra på ark1:
Ark2 er omdøbt til "X"

Private Sub worksheet_change(ByVal Target As Excel.Range)
    If Target.Column = 1 Then
        sletXark
        opbygXark
    End If
End Sub
Private Sub sletXark()
    With ActiveWorkbook.Sheets("x")
        .Cells.Clear
    End With
End Sub
Private Sub opbygXark()
Dim xRæk
    xRæk = 1
   
    With ActiveWorkbook.Sheets(1)
        For ræk = 1 To 65000
            If .Cells(ræk, 1) = "" And .Cells(ræk, 2) = "" Then
                Exit Sub
            Else
                If LCase(.Cells(ræk, 1)) = "x" Then
                    ActiveWorkbook.Sheets("x").Cells(xRæk, 1) = .Cells(ræk, 2)
                    xRæk = xRæk + 1
                End If
            End If
        Next ræk
        .Columns.AutoFit
    End With
End Sub
Avatar billede excelent Ekspert
03. september 2007 - 15:43 #4
Hvis dine hold er på Ark1:
indsæt formel og afslut med CTRL+SHIFT+ENTER

=HVIS(TÆL.HVIS(Ark1!$A$1:$A$100;"X")>=RÆKKE(1:1);INDEKS(Ark1!$B$1:$B$100;MINDSTE(HVIS(Ark1!$A$1:$A$100="X";RÆKKE(Ark1!$A$1:$A$100));RÆKKE(1:1)));"")
Avatar billede adan Nybegynder
04. september 2007 - 09:44 #5
Jeg har prøvet med ovenstående formel - modificeret ud fra det tidligere spørgsmål. Da min excel er en engelsk version skulle jeg lige opdage at TÆL.HVIS så vidt jeg kan se er uden punktum på engelsk, så den bliver til COUNTIF()

Den ser nu sådan ud: (x står i kolonne J, navnet jeg skal have vist i kolonne A)
=IF(COUNTIF(P_figurdata!$J$2:$J$42;"x")>=ROW(2:2);INDEX(P_figurdata!$A$2:$A$42;SMALL(IF(P_figurdata!$J$2:$J$42="x";ROW(P_figurdata!$J$2:$J$42));ROW(2:2)));"")

Nu har jeg imidlertid noget der virker men:

Jeg har i række et på begge ark, kolonne overskrifter i række 1, og har rettet dette i formlen (derfor starter den ved 2). Er ikke helt sikker på om dette kan betyder noget. Sagen er at formlen ikke vælger de rigtige rækker. Den første række den viser, er den tredie række der er sat x ved. Undervejs i listen er der nogle tomme linjer, og i et enkelt tilfælde vises denne række... Mystisk.
Avatar billede rosco Novice
04. september 2007 - 14:07 #6
Du skulle prøve Supertekst´s kode,
Den laver er korrekt liste. kun klubber med x
Avatar billede excelent Ekspert
04. september 2007 - 15:15 #7
Har du afsluttet formel med CTRL+SHIFT+ENTER
så formlen bliver omsluttet af krøllede paranteser { formel }
Og det skal være 1:1 ikke 2:2

=IF(COUNTIF(P_figurdata!$J$1:$J$42;"x")>=ROW(1:1);INDEX(P_figurdata!$A$1:$A$42;SMALL(IF(P_figurdata!$J$1:$J$42="x";ROW(P_figurdata!$J$1:$J$42));ROW(1:1)));"")
Avatar billede excelent Ekspert
04. september 2007 - 19:48 #8
virker fin hos mig ud fra dit eks.
send evt. filen til mig på pm@madsen.tdcadsl.dk
Avatar billede adan Nybegynder
05. september 2007 - 09:27 #9
Jeg skal lige forstå hvad ROW(1:1) ell. ROW(2:2) gør. Når jeg fylder felter ud nedad vokser denne jo løbende. Og hvis mine opløsninger pga. af kolonneoverskrifter først starter i række 2, skal den så ikke begynde der?
Avatar billede excelent Ekspert
05. september 2007 - 11:49 #10
=IF(COUNTIF(P_figurdata!$J$1:$J$42;"x")>=ROW(1:1)
tester om der er flere x'er end 1 (den aktuelle række) ellers skrives en tom
hvis den ikke er med får du en fejl i de rækker som er større en antal x'er

og formlen tester kun for x'er, evt. overskrifter er underordnet
Avatar billede hiks Nybegynder
05. september 2007 - 14:18 #11
hej

Forsøg med denne...

Sub x()

    Dim xSheet As String, inputSheet As String
    Dim searchString As String
    Dim rCcells As Range, sletArk As Boolean, rClearCells As Range
    Dim rCell As Range, xKolonne As String
   
    searchString = InputBox("Skriv tekst der skal søges på?", "Søgning")
    inputSheet = InputBox("Skriv navn på ark, hvor der skal hentes fra?", "Arknavn")
    xSheet = InputBox("Skriv navn på ark, hvor der skal sættes ind?", "Arknavn")
    xKolonne = InputBox("Skriv navn på kolonne?", "Kolonnenavn")
   
   
    If searchString = vbNullString Then Exit Sub
    If xSheet = vbNullString Then Exit Sub
    If inputSheet = vbNullString Then Exit Sub
    If xKolonne = vbNullString Then Exit Sub
   
    If isSheet(inputSheet) = False Then Exit Sub
   
    If isSheet(xSheet) = False Then
        Sheets.Add().Name = xSheet
    Else
        If MsgBox("Slet indhold på ark?", vbYesNo, "Slet ark indhold") = vbYes Then
            Set rClearCells = Sheets(xSheet).Cells
            rClearCells.ClearContents
        End If
    End If
   
    Set rCcells = Sheets(inputSheet).Range(xKolonne & "1", Sheets(inputSheet).Range(xKolonne & "100")) '.End(xlDown))
   
    For Each rCell In rCcells.Cells
        If InStr(1, rCell.Value, searchString) Then

            rCell.EntireRow.Copy _
                Destination:=Sheets(xSheet).Cells(Rows.Count, 1).End(xlUp)(2, 1)
           
        End If
    Next rCell
   
    Set rCcells = Nothing
    Set rClearCells = Nothing
    Set rCell = Nothing

End Sub

Function isSheet(sheetName As String) As Boolean
    On Error Resume Next
   
    Dim wrkSheet As Worksheet
    'tjek om sheet eksisterer
    Set wrkSheet = Sheets(sheetName)
    On Error GoTo 0
   
    If wrkSheet Is Nothing Then
        isSheet = False
       
    Else
        isSheet = True

    End If

End Function

Denne kan også bruges til at søge efter andre emner... ikke nødvendigvis et x!

/hiks
Avatar billede adan Nybegynder
05. september 2007 - 14:25 #12
Jeg overgav mig til vba, og den virker uden problemer. Fik aldrig den anden løsning til at virke,

Excellent: Vil du ikke smide et svar så du kan få nogle point for indsatsen også. Den gav trods alt en del erfaring med index :-)
Avatar billede excelent Ekspert
05. september 2007 - 16:48 #13
ok, der kan selfølgelig være forhold hos dig som jeg ikke
kender til der gør at du ikke får den til at spille
men formlen som sådan fejler nu ikke noget :-)
Avatar billede mfynbo Juniormester
15. november 2007 - 15:44 #14
Hej alle,

Sikke en omgang i har haft gang i her.
Jeg har et specifikt spørgsmål til supertekst. Skriver igennem dette spørgsmål, da jeg ikke ved hvordan jeg ellers kommer i kontakt med ham.

Hej supertekst. Jeg bruger din macro. det virker rigtig godt.
Jeg har et ønske, hvis det kan lade sig gøre.
Resultaterne i ark X, skal gerne concatenates i en celle.

Kan du/I hjælpe mig med det?

Pft.

Mfynbo
Avatar billede supertekst Ekspert
15. november 2007 - 15:55 #15
Hej Mfynbo - jeg kan kontaktes direkte: pb@supertekst-it.dk
- så kan vi nok finde ud af det, som du ønsker..
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