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

Verwijzing naar een deel van de naam van een werkblad

Status
Niet open voor verdere reacties.

Sfinxie

Gebruiker
Lid geworden
26 sep 2012
Berichten
48
Beste helpers,

Volgens mij is het mogelijk en heb ik het zelfs al eens ergens gezien, maar kan het niet meer terug vinden.
Het gaat om het volgende:
Op blad1 (Invoerblad) voer ik een aantal gegevens in over een bepaalde persoon, laten we zeggen Pietje Puk. Tevens wordt op datzelfde blad vermeld dat het gaat om de gegevens van Week 1.
D.m.v. een macro (knop) worden vervolgens die gegevens op een nieuw werkblad gezet wat de naam meekrijgt 'Week 1 Pietje Puk'.
Het invoerblad, Blad1, wordt vervolgens gewist en daar kunnen dan nieuwe gegevens worden ingevoerd van een andere persoon en eventueel ook een andere week. Ook die worden dan vervolgens weer op een nieuw werkblad gezet, wat van een naam wordt voorzien. Laten we zeggen 'Week 3 Joris Driepinter'.
Nu zou ik graag op een 'Verzamelblad' bepaalde gegevens willen verzamelen van deze mensen, ieder onder hun eigen naam.
Ik wil bijvoorbeeld de som hebben van cel F115 van ALLE tabbladen waarvan in de naam de tekst "Puk" voorkomt. Hetzelfde geldt dan uiteraard voor "Driepinter" enz. Dus ONGEACHT het weeknummer.
Aangezien er zo'n beetje elke week werkbladen bij komen en het om zo'n 80 mensen gaat kun je je voorstellen dat ik dat geautomatiseerd wil hebben.

Wie kan me helpen?

PS. Simpel voorbeeldbestandje bijgevoegd.
 

Bijlagen

Ik stel me hier toch veel vragen, als dat alle informatie is die je wil opslaan, kan je toch ook alle 80 medewerkers op een week blad, of alles in een databank steken dan heb je 80 X 52 rijen op een blad, anders heb je 4160 tabbladen, wat als je pietje puk heb en zijn broer josje puk .
 
Jean-Paul heeft gelijk, de bestand zal niet praktisch zijn met zoveel werkbladen.
Wat wel mogelijk is met 52 tabbladen werken (1 voor elke week)
In die bladen zet je dan een filter op naam
Zie bijlage
Als je nu in de bijlage, de invoermogelijkheid uitbreidt naar 80 werknemers
kan je week per week de gegevens van alle werknemers ingeven.
Met de filter kan je dan één werknemer uitfilteren.

Bekijk bijlage 175148
 
Het is niet zo dat alle 52 weken van het jaar van alle 80 werknemers gegevens worden ingevoerd. Het gebeurt steekproefsgewijs. Wel is het zo dat de hoeveelheid gegevens vele malen groter is dan in mijn voorbeeldbestand.
In het 'echte' bestand heb ik uiteindelijk in de cellen F115, G115 en H115 zogenaamde Totalen staan. In de cellen daarboven, pakweg van A5:H114 worden allerlei gegevens ingevoerd en berekeningen uitgevoerd die dus uiteindelijk resulteren in die Totalen.
Die volledige gegevensinvoer plus berekening wordt dan uiteindelijk op een nieuw tabblad weggeschreven. Dit om later nog eens terug te zien of eventueel te printen.
Wat ik voor de volledigheid dus nog wil is een overzicht van alle Totalen per werknemer.

Ik zou wel kunnen uitleggen waarvoor het werkelijke bestand dient, als dat mijn bedoeling verduidelijkt, maar dat wordt een flink stuk tekst waar niemand op zit te wachten.
 
Dit werkt in jouw voorbeeldbestand, maar het is zeker niet fout-proof.
Code:
Sub tst()
    For Each cl In Range("A1:B1")
        tot = 0
        For Each Sh In Sheets
            If InStr(1, Sh.Name, Split(cl, " ")(1)) > 0 Then tot = tot + Sh.Range("M9")
        Next
        cl.Offset(1) = tot
    Next
End Sub
 
@Warme bakkertje:
Die oplossing werkt inderdaad zoals ik bedoelde. Ik heb echter in het originele bestand meerdere cellen waarvan de waarden verzameld moeten worden. Niet alleen "M9", maar nog 2 andere. (zie F115, G115 en H115 in bericht #4)
Hoe kan ik dat in die code verwerken?
Zou je me ook kunnen uitleggen wat er niet helemaal fout-proof is?
En tot slot: Waar "kijkt" de code naar om te doen wat hij nu doet?
 
Code:
Sub tst()
    For Each cl In Range("A1:B1")
        sn = Split(cl, " ")
        tot1 = 0: tot2 = 0: tot3 = 0
        For Each Sh In Sheets
            If InStr(1, Sh.Name, sn(UBound(sn))) > 0 Then tot1 = tot1 + Sh.Range("F115"): _
                tot2 = tot2 + Sh.Range("G115"): tot3 = tot3 + Sh.Range("H115")
        Next
        For i = 1 To 3
            cl.Offset(i) = tot & i
        Next
    Next
End Sub

De code splitst de naam op spaties en neemt het laatste stuk als referentie.
Werken met namen is dus steeds foutgevoelig. Zoals JP het al aanhaalde, wat met Jan Puk en Piet Puk.
Of met Jan van der Help en Piet Help.
 
Het is me helemaal duidelijk. Hartelijk dank!
De foutgevoeligheid kan ik dus nog wat minimaliseren door tussen de voor- en achternaam geen spatie te gebruiken, begrijp ik. Dat probeer ik wel.
Wat mij betreft: Opgelost!
 
Nee, helaas, toch nog niet opgelost.
Ik krijg nu als resultaat in de cellen A2, A3 en A4 resp. de getallen 1, 2 en 3.
Hetzelfde geldt voor de cellen B2, B3 en B4.
 
Code:
Sub M_snb()
    for each sh in sheets
       c00=c00 & "|" & sh.name
    next

    For Each cl In Range("A1:B1")
       redim sn(2)
       for each it in filter(split(c00,"|"),mid(cl.value,7))
          for j=0 to 2
             sn(j)= sn(j)+ sheets(it).range("F115").offset(,j).value
          next
       next
       cl.offset(3)=application.transpose(sn)
    Next
End Sub

NB ik vind dit wel in de categorie vallen: een ontwerpfout oplossen met code....
 
Laatst bewerkt:
Bovenstaande code werkt wel, maar niet volledig. Bovendien komen de resultaten in een verkeerde cel terecht.
Ik denk dat ik jullie maar moet bedanken voor alle hulp en voor een andere oplossing moet gaan. We komen er niet echt uit, heb ik het idee.
 
Met 'we' bedoel ik de hulpverleners en ik. kennelijk leg ik niet goed genoeg uit waar ik naar op zoek ben. De adviezen en hulp die mij hierboven worden aangereikt zijn helaas niet de oplossing voor mijn vraagstuk. Ik trek dus de conclusie dat 'we' elkaar niet begrijpen, om wat voor reden dan ook.
Mocht ik met het woordje 'we' iemand voor het hoofd hebben gestoten dan spijt me dat.
 
Post dan eens een bestandje waarin de situatie natuurgetrouw weergegeven wordt.
M.i. geef je het hier wel zeer snel op, d'r zijn hier al andere dingen gepasseerd.
 
Oke, bij deze dan. Dit is een zeer uitgeklede versie van het origineel. In het origineel is sprake van vele malen meer adressen, namen en overige data, maar die heb ik weg moeten laten vanwege de upload limiet.
Om het bestand goed te laten functioneren is het belangrijk om op het werkblad 'Controlemodule' het e.e.a. in te vullen, zoals weeknummer, chauffeursnaam en routenummer. Eventueel ook nog iets in de kolom "Geschreven tijd".
Druk je dan vervolgens op "Bewaren" dan zie je dat er een nieuw werkblad wordt aangemaakt met de zojuist ingevoerde gegevens. Dit werkblad kan bewaard worden voor eventuele naslag in de toekomst, het invoerblad 'Controlemodule' kan vervolgens gewist worden en gebruikt voor nieuwe invoer.
Op het werkblad 'Verzamelblad' heb ik, met behulp van Opmerkingen' geprobeerd duidelijk te maken wat ik daar graag zou hebben. Nogmaals, normaal staan daar 80 namen onder elkaar i.p.v. de 3 die er nu staan.
Ik zou daar dus graag de Totalen per chauffeur zien, dus van alle weken die er van een bepaalde chauffeur gemaakt werden en nog worden.

Bij deze alvast bedankt dat je er nog eens naar wil kijken.
 

Bijlagen

Zie bijlage.
Macro staat in Module1. Let ook op formule in Verzamelblad!L1 voor de naamgeving werkbladen.
Ik ben er vanuit gegaan dat ieder een uniek volgnummer heeft dat dan ook weergegeven wordt op verzamelblad kolomA.
 

Bijlagen

Helemaal top! Dit is exact wat ik bedoelde.
Mijn hartelijke dank voor alle moeite!

De status gaat nu echt op opgelost!

Edit: Inmiddels toegepast op het volledige, originele bestand en alles werkt. Nogmaals dank.
 
Laatst bewerkt:
Helaas ben ik toch nog één klein foutje tegengekomen. De code zoekt natuurlijk op werkbladnaam, maar doet dat iets te ver. Bij gebruik van weeknummers en/of volgnummers met dubbele cijfers, bijvoorbeeld werknemer met volgnummer 43, week 17. Voer ik daarvoor alle gegevens in en verwerk ik die dan komen op het verzamelblad ook gegevens te staan bij werknemer 7.
Kennelijk ziet de code de 7 van week 17 ook.
Waar kan ik dat bijstellen? Ik heb al het een en ander geprobeerd in die code (en ook de formule waarmee de werkbladnamen worden gegenereerd), maar krijg dan foutcode 400. Ik dacht een extra spatie toe te passen, maar kennelijk werkt dat niet.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan