• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Vanuit draaitabel gegevens uit sheet verwijderen?

Status
Niet open voor verdere reacties.

theet

Gebruiker
Lid geworden
30 aug 2007
Berichten
142
Ik heb een Excel sheet met heel veel data. Deze data heb ik nu in een draaitabel gestopt en
een aantal zaken er uit gefilterd. Tot zover kon ik snel mijn hoeveelheid werk beperken.

Nu wil ik de gefilterde gegevens (met alle gegevens die nog niet getoond worden in de draaitabel maar wel in de sheet staan) behouden,
de rest verwijderen in de sheet. Is dit eenvoudig mogelijk? Soort van "backwards" filteren en verwijderen...

Bijvoorbeeld:

Leverancier1 met 10 producten
Leverancier2 met 150 producten
Leverancier3 met 34 producten
Leverancier4 met 1000 producten

Ik heb in de draaitabel leverancier 1, 2 en 4 geselecteerd, alle gegevens van leverancier3 mogen dus verwijderd worden in de sheet waar de draaitabel zijn gegevens vandaan heeft.
 
Laatst bewerkt door een moderator:
ja, dat is mogelijk met een stukje VBA.
 
En met een voorbeeldbestand.
 
Hierbij het voorbeeldbestand... De leveranciers die uitgevinkt staan onder Mycronic B.V. die moeten in rijen verwijderd worden in de sheet Leveranciers...
 

Bijlagen

  • Voorbeeld1.xlsx
    87,1 KB · Weergaven: 25
Laatst bewerkt door een moderator:
Maar waarom delete je dan niet op voorhand die leverancier 3 uit je brontabel???
Ik snap de tussenstap van de draaitabel niet....
 
Waarom zijn de namen van de rijvelden gewijzigd en noemen ze niet meer acctnr of rel naam.
Dan is het een makkie, maar nu kan ik eventjes geen verband maken.
 
Laatst bewerkt door een moderator:
Ik had inderdaad de verkeerde rijvelden, nu hersteld.
Ik kan ze op voorhand verwijderen maar dan ben ik bij een heel groot bestand heel lang bezig om alles te doorzoeken, terwijl ik in een draaitabel heel snel de benodigde waarden kan filteren.
dit is maar een voorbeeldbestand...
 

Bijlagen

  • Voorbeeld2.xlsx
    86,7 KB · Weergaven: 34
Code:
Sub verwijderen()
    With Sheets("blad1").PivotTables(1)
        .PivotFields("acct_nr").RepeatLabels = True 'labels herhalen
        sn = .RowRange 'inlezen
    End With

    Application.DisplayAlerts = False
    With Sheets("sheet leveranciers").ListObjects(1)
        Application.Goto .Range.Range("A1"), 1
        For i = 2 To UBound(sn)
            .Range.AutoFilter
            .Range.AutoFilter 1, sn(i, 1)
            .Range.AutoFilter 7, sn(i, 2)
            MsgBox "straks verwijderen van " & sn(i, 1) & vbTab & sn(i, 2) & vbLf & "nu nog " & .ListRows.Count & " rijen"
            On Error Resume Next
            .DataBodyRange.SpecialCells(xlCellTypeVisible).Delete
            On Error GoTo 0
            .Range.AutoFilter
        Next
    End With
    Application.DisplayAlerts = True
End Sub
wel opletten, de ganse rij wordt verwijderd, dus maak dat er niets links en rechts van je listobject staat !!!
neem een backup vooraf
 
Laatst bewerkt:
Ik vind het wel een creatieve aanpak:

Code:
Sub M_snb()
   Sheet2.UsedRange.Columns(8) = Sheet2.UsedRange.Columns(7).Value
   
   For Each it In Sheet1.PivotTables(1).PivotFields("rel.naam").PivotItems
      If Not it.Visible Then Sheet2.Columns(8).Replace it.Name, "", 1
   Next
   
   Sheet2.Columns(8).SpecialCells(4).EntireRow.Delete
End Sub
 
t.a.v. cow18: Mooi script alleen heb ik het idee dat het net andersom de geselecteerde cellen in de draaitabel verwijdert in de sheet. Hoe draai ik dit om?
t.a.v. snb: ik krijg het script niet werkend, hij geeft aan Fout 424 tijdens uitvoeren: Object vereist. Heb de code ietswat gewijzigd maar ook dit werkt niet:

Code:
Sub M_snb()
   sheetLeveranciers.UsedRange.Columns(8) = sheetLeveranciers.UsedRange.Columns(7).Value
   
   For Each it In Blad1.PivotTables(1).PivotFields("rel.naam").PivotItems
      If Not it.Visible Then sheetLeveranciers.Columns(8).Replace it.Name, "", 1
   Next
   
   sheetLeveranciers.Columns(8).SpecialCells(4).EntireRow.Delete
End Sub
 
Draai de code in het bestand dat je plaatste.

Gebruik F8 in de VBEditor en geef bij voorkeur gedetailleerde feedback.
 
Laatst bewerkt:
heb nog niet gekeken naar snb, dat is voor vanavond
Code:
Sub verwijderen()
    With Sheets("blad1").PivotTables(1)
        .PivotFields("acct_nr").RepeatLabels = True
        sn = .RowRange
    End With

    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    With Sheets("sheet leveranciers").ListObjects(1)
        .Parent.Columns("H").ClearContents                           'kolom naar listobject even snel als klad gebruiken
        For i = 2 To UBound(sn)
            .Range.AutoFilter
            .Range.AutoFilter 1, sn(i, 1)
            .Range.AutoFilter 7, sn(i, 2)
            Application.StatusBar = Space(20) & "filteren op " & sn(i, 1) & Space(5) & vbTab & sn(i, 2)
            .Range.Columns("H").SpecialCells(xlVisible).Value = "d"  'zet een "d" naast die gefilterde rijen

            .Range.AutoFilter
        Next
        .Range.AutoFilter

         Application.StatusBar = False
        Set c = .Range.Offset(, 7).Resize(, 1)
        c.AutoFilter 1, "<>d"
        
        On Error Resume Next
        .DataBodyRange.SpecialCells(xlCellTypeVisible).Delete
        On Error GoTo 0
        c.AutoFilter
    End With
    Application.DisplayAlerts = True

End Sub
 
Laatst bewerkt:
De laatste code van cow18 maakt het dat alle informatie verwijderd wordt in de sheet van leveranciers, klopt dit?
 
Laatst bewerkt door een moderator:
Niet verwijdert, maar verwijderd; dat klopt wel.
 
De laatste code van cow18 maakt het dat alle informatie verwijderd wordt in de sheet van leveranciers, klopt dit?
ik dacht van niet
 
Waarom niet simpel ?
 

Bijlagen

  • __draaiselektie.xlsb
    71,1 KB · Weergaven: 29
ik ben de initiele vraag nog eens gaan nakijken.
Inderdaad, als de 1e leverancier met 10 producten, en de draaitabel vermeldt er enkel 2, dan laat ik van die leverancier die 8 andere producten staan.
Dus in principe heb je gelijk.
Maar onbegrijpelijk, bij mij loopt je macro vast op de laatste regel, ik zie nu even niet waarom.
 
Ik heb nog een optie waarbij geen enkele regel VBA nodig is én je de brontabel nog intact houdt ook! Werkwijze... Voeg aan je Pivot Table een "Waarde" (value) veld to. Doe dit met een Count op het veld "acct_nr". Je zie nu in kolom C van de Pivot verschijnen hoeveel keer zo'n regel in je brontabel staat. Voeg nu een Grand Total in op de Pivot zodat de waardes in kolom C opgeteld worden. Door nu te dubbelklikken op de cel C34 (waar dus het groottotaal is gekomen) zal op een nieuwe sheet alle records worden getoond waar je Pivot mee is opgebouwd. Dan kan je voortaan daarmee verder als het nodig is, maar heb je óók altijd nog je roll back op je brontabel.

Volgens mij was dit waar je naar opzoek was?

Zie ook de bijlage...
 

Bijlagen

  • Voorbeeld2 (1).xlsx
    94 KB · Weergaven: 23
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan