Avatar billede BIRGER Seniormester
11. oktober 2015 - 20:46 Der er 11 kommentarer og
1 løsning

Autofilter i excel skal medtage tomme celler under en værdi

Hvordan får jeg autofilter i Excel til finde ud af at tomme celler tilhører en værdi indtil næste værdi forekommer i kolonnen?

Kan ikke se at det kan lave sig gøre i standard Excel, måske en vba kode kan hjælpe?
Avatar billede supertekst Ekspert
12. oktober 2015 - 10:54 #1
Prøv at uploade et eksempel m/forklaring på det ønskede.
Avatar billede BIRGER Seniormester
12. oktober 2015 - 14:18 #2
Eks:

AAA  Data
    Data
    Data
    Data
BBB  Data
    Data
    Data
    Data
CCC  Data
    osv
Jeg vil gerne have, at når man f.eks. vælger AAA i autofilter vises fra AAA plus de linjer med tomme celler indtil BBB.
Avatar billede supertekst Ekspert
12. oktober 2015 - 14:36 #3
Ok - vender tilbage
Avatar billede supertekst Ekspert
12. oktober 2015 - 23:21 #4
Er det kun i kolonne A det er relevant at anføre filter?
Avatar billede store-morten Ekspert
13. oktober 2015 - 22:16 #5
Hvad med at "udfylde" de tomme celler med en Makro?
Avatar billede store-morten Ekspert
13. oktober 2015 - 22:29 #6
Prøv i en kopi:
Public Function FindNextTomme(ByVal rCell As Range) As Range
'Finder første tomme celle nedad i en kolonne.
On Error GoTo ErrorHandle

With rCell
  'Hvis udgangscellen er tom, er det den første tomme celle.
  If Len(.Formula) = 0 Then
      Set FindNextTomme = rCell
      'Hvis cellen lige under udgangscellen er tom
  ElseIf Len(.Offset(1, 0).Formula) = 0 Then
      Set FindNextTomme = .Offset(1, 0)
  Else
      'Finder cellen efter sidste celle med indhold.
      '.End(xlDown) svarer til at trykke CTRL + pil ned.
      Set FindNextTomme = .End(xlDown).Offset(1, 0)
  End If
End With

Exit Function
ErrorHandle:
MsgBox Err.Description & ", Function FindNextTomme."
End Function



Sub Udfyld_Tomme_Celler()
sidsteRækkeKolonneB = Range("B" & Rows.Count).End(xlUp).Row
UdfyldtKolonneA = Application.counta(Range("A2:A" & sidsteRækkeKolonneB))

For Each cell In Range("A2:A" & sidsteRækkeKolonneB - UdfyldtKolonneA)
'Vi kalder funktionen og siger, at den skal starte
'søgningen i celle A2.
Set TomCelle = FindNextTomme(Range("A2"))
'Indsætter formel
TomCelle.FormulaR1C1 = "=R[-1]C"
'Tekst farve rød
TomCelle.Font.Color = vbRed
Next
'Rangevariabler bør sættes til Nothing, når de
'er brugt. Ellers kan de bruge hukommelse.
Set TomCelle = Nothing

End Sub
Avatar billede BIRGER Seniormester
14. oktober 2015 - 08:27 #7
Ja det er kun i kolonne A der skal være filter
Avatar billede BIRGER Seniormester
14. oktober 2015 - 08:30 #8
Vil gerne bibeholde de tomme felter
Avatar billede store-morten Ekspert
14. oktober 2015 - 10:11 #9
Skal du bruger de tomme celler?
Man kunne evt. lave tekst farven hvid, så indholdet ikke ses.
Avatar billede supertekst Ekspert
14. oktober 2015 - 10:17 #10
#7 ok
Avatar billede supertekst Ekspert
14. oktober 2015 - 14:43 #11
Ren VBA-filtrering
Anbring koden under det relevante ark
Send mail, hvis du vil have min model. @-adresse under min profil.

Dim antalRækker As Long, ræk As Long
Dim flag As Boolean
Private Sub CommandButton2_Click()
Dim Agrp
    Application.ScreenUpdating = False
   
    For ræk = 2 To antalRækker
        If Range("A" & ræk) <> "" Then
            Agrp = Range("A" & ræk)
            If erGrpValgt(Agrp) = True Then
                SkjulRækker ræk, False
            Else
                SkjulRækker ræk, True
            End If
        End If
    Next ræk
   
    UserForm1.Hide
End Sub
Private Sub SkjulRækker(fraRække, vis)
Dim r As Long
    Rows(fraRække & ":" & fraRække).Hidden = vis

    For r = fraRække + 1 To antalRækker
        If Cells(r, 1) = "" Then
            Rows(r & ":" & r).Hidden = vis
        Else
            Exit Sub
        End If
    Next r
End Sub
Private Function erGrpValgt(grp) As Boolean
Dim ix As Integer
    For ix = 0 To Me.ListBox1.ListCount - 1
        If grp = Me.ListBox1.List(ix) Then
            erGrpValgt = Me.ListBox1.Selected(ix)
            Exit Function
        End If
    Next ix
    erGrpValgt = False
End Function
Private Sub ListBox1_Change()
Dim ix As Integer, v0 As Boolean
    If ListBox1.ListIndex = 0 Then
        v0 = Me.ListBox1.Selected(0)
       
        If flag = False Then
            For ix = 1 To Me.ListBox1.ListCount - 1
                flag = True
                Me.ListBox1.Selected(ix) = v0
                flag = False
            Next ix
        End If
    Else
        Me.ListBox1.Selected(0) = False
    End If
End Sub
Private Sub UserForm_initialize()
Dim ix As Integer
    flag = False
   
    With ActiveWorkbook
        .Sheets(1).Activate
        antalRækker = ActiveCell.SpecialCells(xlLastCell).Row
    End With
   
    Me.ListBox1.Clear
   
    Me.ListBox1.AddItem "Alt"
   
    For ræk = 2 To antalRækker
        If Range("A" & ræk) <> "" Then
            Me.ListBox1.AddItem Range("A" & ræk)
        End If
    Next ræk
   
    For ix = 0 To Me.ListBox1.ListCount - 1
        Me.ListBox1.Selected(ix) = True
    Next ix
   
End Sub
Avatar billede supertekst Ekspert
14. oktober 2015 - 15:31 #12
NB: Dobbeltklik i A1 for at anvender VBA-filter.
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

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