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

Gegevens wegschrijven naar verschillende tabbladen

Status
Niet open voor verdere reacties.
Beste snb,

Er zijn ook loopkranen die beginnen met S1xx en S3xx.
Er zijn tabbladen die beginnen met S zoals Standtijd

Gemakkelijk voor mij zou zijn dat ik enkel de lijst in tabblad gegevens in bereik D1 : Dxx kan aanvullen zonder naar de code te moeten gaan en daar aanpassen.
 
Dan doet mijn aanpassing toch wat gevraagd wordt. Of?
 
Dan verander je de namen van die bladen toch ?

K_LK (loopkraan)
K_S (stopkraan)

en selekteer je op left(it.name,2)="K_"
 
Beste Cobbe en snb

@ Cobbe, getest en code uit #Post 16 werkt en uit #Post 19 werkt niet bij mij

@ snb, dit is natuurlijk goed als hij niet naar de andere tabbladen moet kijken, maar hij zoekt alleen op LK heb ik gezien maar niet gekeken naar de functieplaats
niet iedereen vult de order op de goede manier in en begint niet altijd met LK vandaar die functieplaats, die is altijd juist.
Heb ook een aanpassing gedaan omdat ik moeilijk 300 tabbladen kan veranderen in K_LK of K_S bij deze:

Code:
 If Left(it.Name, 2) = "LK" Or Left(it.Name, 2) = "S1" Or Left(it.Name, 2) = "S3" Then .Cells(1).CurrentRegion.AdvancedFilter 2, .Cells(1, 20).CurrentRegion, it.Cells(1)

Als je hier kan zoeken via functieplaats zou dit perfect zijn.
 
Heb het bestand aangepast zodat het werkt voor MAX 300 tabs in te vullen op Tab Gegevens in D1 : D300
 

Bijlagen

  • Test gegevens_max300tabs(cobbe).xlsm
    61,3 KB · Weergaven: 26
Beste Cobbe,

Werkt perfect nu, er zat een fout in één van mijn tabbladen vandaar dat het niet werkte.

Nu nog afwachten of snb nog iets uit zijn mouw kan toveren zo kan ik nog wat bijleren wat allemaal mogelijk is.
 
Dan lijkt me dit voldoende:

Code:
Sub M_snb()
   sn = Blad2.Cells(1).CurrentRegion
   Blad2.Cells(1, 4) = "Functieplaats"
   
   For j = 1 To UBound(sn)
      If Evaluate("isref(" & sn(j, 1) & "!A1)") Then
          Blad2.Cells(2, 4) = sn(j, 2)
          Sheets("output").Cells(1).CurrentRegion.AdvancedFilter 2, Blad2.Cells(1, 4).CurrentRegion, Sheets(sn(j, 1)).Cells(1)
      End If
   Next
End Sub
 

Bijlagen

  • __split_gegevens.xlsb
    44,3 KB · Weergaven: 49
Laatst bewerkt:
Beste snb,

Perfect ook, maar hoe voeg je deze toe:

Code:
Columns("A:O").EntireColumn.AutoFit
 
Niet vragen, maar nadenken.
Probeer voor jezelf iedere VBA regel in gewoon Nederlands/Vlaams te vertalen; dan begrijp je per regel wat er gebeurt ( F8 ) en waarom.
Dan ontdek je vanzelf het antwoord op je vraag.
En columns.autofit lijkt me voldoende met een verwijzing naar het werkblad.

Probeer te onthouden:

filteren en bekijken: autofilter
filteren en kopiëren : advancedfilter
unieke waarden filteren: advancedfilter
 
Laatst bewerkt:
Beste snb,

Met deze lukt het.

Code:
Sheets(sn(j, 1)).Columns.AutoFit
 
Beste snb,

Kan deze ook korter :d

Code:
Sub Standtijd()
Dim mySheetName As String
Dim str As String
     str = Sheets("standtijd")
        With ThisWorkbook.Sheets("Output")
         With .Cells(2).CurrentRegion
          If .Parent.AutoFilterMode Then .Parent.AutoFilterMode = False
            .AutoFilter 10, "*" & "standtijd" & "*"
          Worksheets(str).Cells.ClearContents
            .Cells(2).CurrentRegion.Copy Destination:=Worksheets(str).Range("A1")
          Worksheets(str).Columns.AutoFit
          Range("A1").Select
          Sheets("output").ShowAllData
         End With
        End With
End Sub
 
Ja hoor, zonder 'select' en zonder de variabele str.

Het gaat niet om 'korter' maar over 'overzichtelijker' en 'gemakkelijker te begrijpen/onderhouden'.

Maar ook hier lijkt mij 'advancedfilter' voor de hand liggender.
 
Laatst bewerkt:
Beste hsv,

Ik zal ze proberen te begrijpen zoals de vorige.

Code:
Sub M_snb()
   sn = Blad2.Cells(1).CurrentRegion
   Blad2.Cells(1, 4) = "Functieplaats"
   
   For j = 1 To UBound(sn)
      If Evaluate("isref(" & sn(j, 1) & "!A1)") Then
          Blad2.Cells(2, 4) = sn(j, 2)
          Sheets("output").Cells(1).CurrentRegion.AdvancedFilter 2, Blad2.Cells(1, 4).CurrentRegion, Sheets(sn(j, 1)).Cells(1)
      End If
   Next
End Sub

sn = bereik A1:B420 op tabblad gegevens
Cel D1 = "Functieplaats
j = zoekt in kolom A van tabblad gegevens
Als - bekijkt ( verwijzing(LK100 &!A1) overeenkomt met benaming tabblad LK100 dan
in cel D2 van tabblad gegevens schrijft men de functieplaats neer
In tabblad "Output" het volledige bereik bepalen Filteren en kopiëren op Functieplaats. bereik bepalen en op tabblad LK100 in cel A1 plakken

Hoe zoekt hij naar kolom functieplaats en filtert hij op LK100 ?

Indien ik het verkeerd heb corrigeer me dan maar :D
 
Laatst bewerkt:
advancedfilter heeft een criteriumgebied nodig.
- daarin staat de naam van de kolom waarop gefilterd moet worden (cel D1)
- en de gegevens waarop gefilterd moet worden: cel D2.
 
Beste hsv,

Gezocht en gevonden, wat met meerdere filters
Vb: standtijd in kolom Korte tekst en LK309 in kolom Omschr. operatie

Code:
Sub Standtijd()
    sn = Blad2.Cells(1).CurrentRegion
    i = "Standtijd"
    Blad2.Cells(1, 4) = "Korte tekst"
    Blad2.Cells(2, 4) = "*standtijd*"
    Sheets("output").Cells(1).CurrentRegion.AdvancedFilter 2, Blad2.Cells(1, 4).CurrentRegion, Sheets(i).Cells(1)
    Sheets(i).Columns.AutoFit
End Sub
 
1. kijk eens naar mijn alias.....

2. dat ziet er helemaal niet verkeerd uit.:thumb:

3. waarvoor gebruik je variabele sn ?

4. een criteriumbereik kan in elk werkblad staan; dus ook in het werkblad waarin de gegevens staan of komen.

5. nog wat suggesties (pas gebruiken als je ze begrijpt):

Code:
Sub M_snb()
  with Sheets("standtijd")
    .Range("Z1:Z2") = application.transpose(array("Korte tekst", "*standtijd*"))               ' vul het criteriumgebied in het doelwerkblad

    Sheets("output").Cells(1).CurrentRegion.AdvancedFilter 2, .Range("Z1:Z2"), .Cells(1)    ' filter het gegevensgebied aan de hand van het criteriumgebied en kopieer naar het doelgebied

    .Columns.AutoFit                                                                          ' pas het doelgebied aan
  end with
End Sub
 
Laatst bewerkt:
Beste snb,

Die sn was overbodig heb ik gezien maar heb het niet aangepast in mijn post.

Heb eens gekeken naar uw alias, maar had ik vroeger ook al eens gedaan
Autofilter heb ik gevonden maar niks over advancedfilter filter of niet goed gekeken dat kan ook :)

Dus meerdere filters in vullen via advancedfilter is voor mij nog een raadsel.
 
Laatst bewerkt:
Beste snb,

Hoe geef ik het volgende in advancedfilter

Code:
            .AutoFilter 10, Criteria1:="*" & "kabel" & "*", Criteria2:="*" & "verv" & "*"
            .AutoFilter 9, Criteria1:="RM" & "*"

Er moeten mech hijskabels vervangen worden.
Men schrijft dit op versch manieren:

vervangen hijskabels
verv kabel
Vervangen kabels
verv hijskabel
 
gebruik validation om ervoor te zorgen dat er consistent wordt ingevoerd: oplossen aan de 'voorkant', niet aan de 'achterkant'.
 
Beste snb,

Geef maar een voorbeeld, ik geraak er niet aan uit en wil dit bestandje morgen op Intranet plaatsen op ons bedrijf.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan