• 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.

Selecteren per naam op apart tabblad

Status
Niet open voor verdere reacties.

hoss312

Gebruiker
Lid geworden
5 feb 2014
Berichten
69
Ik heb een grote database in Excel met meerdere gebruikersnamen door elkaar. Het lukt me natuurlijk om de namen te groeperen door sorteren maar ik zou graag automatisch per naam een tabblad krijgen met de bijbehorende data ipv de database op een tabblad. Bijgevoegd een geanonimiseerd beperkt voorbeeld.

Als het mogelijk is ben ik ook op zoek naar een formule/automatisch selectietool die aan kan geven of de of de begintijd in het weekend ligt of buiten de werktijden 08:00-17:00.

Alvast bedankt voor alle hulp
 

Bijlagen

  • Help.xlsx
    21,3 KB · Weergaven: 38
Laatst bewerkt door een moderator:
Laatst bewerkt:
Selecteren per naam op apart werkblad

Dit heb ik hier ooit gevonden en aangepast voor mijn gebruik.
Ik moest enkel voor 14 medewerkers een werkblad maken (dus 24).
U bent al aan 33 medewerkers, worden er .. 66. Maar als de opmaak klaar is voor een medewerker, gaat de rest heel snel.
Er zijn 2 verborgen werkbladen (Voor 1;Voor 2), oogt mooier.
Als test kan u om het even welke medewerker het nummer 1 of 2 geven, u ziet deze dan in het betreffend werkblad verschijnen.
Is dit een aanzet?
Veel succes.
 

Bijlagen

  • Selecteren per naam.xlsx
    59,7 KB · Weergaven: 18
Ik ben geen fan van deze filosofie, hou het allemaal netjes in 1 werkblad en gebruik de filter, maar tot daar.
zie bijlage met een macro "gebruikers"
 

Bijlagen

  • Help (3).xlsb
    34,1 KB · Weergaven: 25
Laatst bewerkt:
Verwijder eerst de lege kolom B:

Code:
Sub M_snb()
  Blad1.Columns(1).SpecialCells(2).AdvancedFilter 2, , Blad1.Cells(1, 10), True
  
  sn = Blad1.Columns(10).CurrentRegion
  
  For j = 2 To UBound(sn)
     On Error Resume Next
     Blad1.Cells(2, 10) = sn(j, 1)
     With Sheets.Add(, Sheets(Sheets.Count))
         .Name = "gebruiker " & sn(j, 1)
         Blad1.Cells(1).CurrentRegion.AdvancedFilter 2, Blad1.Cells(1, 10).Resize(2), .Cells(1)
      End With
   Next

   Blad1.columns(10).clear
End Sub
 
Laatst bewerkt:
@snb, mooi
 
Nog een alternatief met ADODB:
NB. Ik heb de naam van het werkblad gewijzigd in 'snb' om verwarring te voorkomen. ("Worksheet' is niet zo'n handige werkbladnaam).

Code:
Sub M_snb()
   Application.ScreenUpdating = 0
   
   Blad1.Columns(1).SpecialCells(2).AdvancedFilter 2, , Blad1.Cells(1, 10), True
   sn = Blad1.Columns(10).CurrentRegion
   Blad1.Columns(10).Clear
   
   For j = 2 To UBound(sn)
       If Evaluate("not(isref(" & sn(j, 1) & "!A1))") Then Sheets.Add(, Sheets(Sheets.Count)).Name = Format(sn(j, 1))
       
       With CreateObject("ADODB.Recordset")
            .Open "SELECT * FROM `snb$` WHERE `Gebruiker`=" & sn(j, 1) & "", "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0 Xml"""
            Sheets(Format(sn(j, 1))).Cells(1).CopyFromRecordset .DataSource
        End With
   Next
   
   Application.ScreenUpdating = -1
End Sub
 
Allemaal hartelijk dank voor de suggesties. Ik krijg de laatste alleen niet werkend. Ik neem aan de help file en dan worksheet naam vervangen door snb en dan de macro erin plakken?
 
dat heeft mogelijks te maken met de naam en de "codename" van dat werkblad.
Doe anders eens onderstaande macro.
Die geeft van je eerste werkblad de naam, zoals die op de tab onderaan je blad staat en vervolgens de codename zoals die in de projectverkenner van VBA staat.
Blad1 (=codename) in de macro van SNB, mag je dus vervangen door "worksheets("Worksheet") (=name)
Gebruik je een engelstalige versie, dan noemt die 'Blad1" namelijk "Sheet1"
Code:
Sub Namen()
    MsgBox Worksheets(1).CodeName & vbTab & Worksheets(1).Name
End Sub
 
Zie de bijlage.
De macro in de macromodule van werkblad 'snb'
 

Bijlagen

  • __parsing_ADO.xlsb
    33,5 KB · Weergaven: 30
Helaas. zie bijlage. Ik heb een Macbook met excel 2016. Maakt dat wat uit?Schermafbeelding 2019-01-22 om 16.36.18.png
 
Kijk even bij de referenties in de VBEditor.

Overigens heb ik de indruk dat deze methode sneller loopt:

Code:
Sub M_snb_000()
   Application.ScreenUpdating = 0
   
   Blad1.Columns(1).SpecialCells(2).AdvancedFilter 2, , Blad1.Cells(1, 10), True
   sn = Blad1.Columns(10).CurrentRegion
   Blad1.Columns(10).Clear
   Sheets.Add , Sheets(Sheets.Count), UBound(sn) - 1

   With Blad1.Cells(1).CurrentRegion
     For j = 2 To UBound(sn)
       Sheets(j).Name = Format(sn(j, 1))
       .AutoFilter 1, sn(j, 1)
       .Copy Sheets(j).Cells(1)
       .AutoFilter
     Next
  End With
   
  Application.ScreenUpdating = -1
End Sub
 
Laatst bewerkt:
Beste SBN,

Helaas ben ik een beginner met VBA en is de database nog veel groter geworden. Ik zou nu graag willen dat als een getal niet gelijk is aan het getal boven die cel in dezelfde kolom dat er een vijftal rijen ingevoegd worden op die plek waardoor er dus onderscheidt komt (zie voorbeeld) Als dus kolom b van getal wijzigt wil ik op die rij 5 rijen automatisch ingevoegd hebben). Ik heb dus alleen Mac 2016 excel. Ik neem aan dat deze makkelijker (voor mij om te begrijpen) is dan mijn eerste vraag.
 

Bijlagen

  • Help me.xlsx
    10,9 KB · Weergaven: 19
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan