Det er bestemt muligt, men hvor og hvordan vil du have output?
Dette kan ganske simpelt laves med filtrering, men skal det ud på et andet ark eller udskrives på en printer? Og skal det forstås således, at du vil have de markerede værdier vist i en celle/en række således:
Det kan måske lade sig gøre med denne makro. Jeg har sat en del kommentarer ind, så du let selv kan rette den.
Sub Navneliste() LastRow = Range("A65536").End(xlUp).Row 'checker sidste linie Dim Liste As String Liste = "" For x = 1 To LastRow ' startlinie 1 If Cells(x, 2) = "x" Or Cells(x, 2) = "X" Then ' tester for både stort og lille x Liste = Liste & ", " & Cells(x, 1) 'tilfører navn hvis x End If Next Liste = Right(Liste, Len(Liste) - 2) ' fjerner første komma Range("E1") = Liste 'skriver listen i celle E1 End Sub
Du får med jens48's løsning vist værdierne i en celle. Hvis du ønsker at få en formelbaseret løsning (helt uden VBA), så bliver der nok tale om en matriksformel. Dette vil jeg ikke give mig i kast med, bl.a. fordi jeg ikke ved, hvor stort et område (antal rækker), der skal søges i. jens48's udgave kan laves som en UDF (user defined function), som gør, at du kan skrive en formel i Excel, som du er vant til. MEN der er stadig tale om VBA/en makro.
Det vil måske være en idé at bruge nedenstående makro, som automatisk skriver listen i celle E1, hvis der rettes i kolonne B. Jeg har rettet makroen lidt til med et par tips fra Natkatten. Kopier makroen og indsæt den ved at højrekikke på fanebladet og vælg Vis Koder. Hvis listen skal laves i en anden celle end E1 skal du blot skrive det i linien
SkrivICelle = "E1"
Her er makroen:
Option Compare Text ' så checkes der for både små og store bogstaver Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("B:B")) Is Nothing Then Dim LastRow, x As Long Dim Liste, SkrivICelle As String LastRow = ActiveSheet.Range("A1").Offset(ActiveSheet.Rows.Count - 1, 0).End(xlUp).Row 'checker sidste linie SkrivICelle = "E1" Liste = "" For x = 1 To LastRow ' startlinie 1 If Cells(x, 2) = "x" Then ' tester for både stort og lille x Liste = Liste & ", " & Cells(x, 1) 'tilfører navn hvis x End If Next Liste = Right(Liste, Len(Liste) - 2) ' fjerner første komma Range(SkrivICelle) = Liste 'skriver listen i celle E1 Range(SkrivICelle).EntireColumn.AutoFit End If End Sub
Ja, men udfordringen er blot, at det bliver en voldsom lang kode, hvis man har en kolonne med fx 50-100 celler, da hver celle skal skrives manuelt ind.
Du havde ret, jeg misforstod hvad du skrev. Den løsning er helt perfekt, hvis man ikke vil bruge makroer. Det er lidt som at lave en løkke, hvor der lægges lidt til strengen såfremt bestemte forudsætninger er indfriet.
Tak for hjælpen.
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.