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

lege kolom negeren ...

Status
Niet open voor verdere reacties.

janloomans

Gebruiker
Lid geworden
27 mei 2014
Berichten
30
hi allemaal ...

een vraagje. Ik heb een werkmap gemaakt dat gebruikt wordt om uurroosters te maken. Je ziet in werkblad 'overzicht' dat de personeelsleden gesorteerd zijn op hun taak (bediening, toog, poets, ...). ik wil nu echter een overzichtje maken op werkblad 'lijstje', dat de lege kolommen overslaat.

Dit dient om elke werknemer zijn 'geplande' uren op te tellen. omdat dit werkblad dient voor verschillende horecazaken van dezelfde eigenaar, en er regelmatig personeelsverloop is, wil ik dit echter zo flexibel mogelijk maken. Dit wil zeggen dat er op elk moment iemand kan toegevoegd worden of verwijderd worden.

ik wil in blad 'lijstje' eigenlijk de namen overnemen van de headers in blad 'overzicht' (jan, bjorn, cis, ...), zodat ik daarna via een vlookup aan de hand van de naam andere data kan gaan uitzoeken en mijn bewerkingen maken.

klinkt dit een beetje duidelijk ? ik heb bang dat het wat verward overkomt :)

als er nog vragen zijn, shoot ...




Bekijk bijlage helpmij vraag.xls
 
hier een lijstje: met vba formule.
 

Bijlagen

  • helpmij lijstje maken(1.xls
    50,5 KB · Weergaven: 23
hier een lijstje: met vba formule.

deze komt al aardig in de buurt ...

2 puntjes:

ik wil ze horizontaal ipv verticaal ... is dat moeilijk ?

en ik wil ze graag in identiek dezelfde volgorde als in het 'overzicht', dus niet alfabetisch ...

excuseer, vba is echt een zwakte van me :/
 
Als het wachtwoord bekend was, zou het zo ook kunnen.

Ík heb maar "Jan" ingevuld, maar dat was het wachtwoord niet.
Code:
Sub hsv()
Dim cl As Range, sn As String, n As Long
With Sheets("Overzicht")
  .Unprotect "Jan"
For Each cl In .Range("B3:BP3").SpecialCells(2)
    sn = sn & cl & " "
    n = n + 1
 Next cl
Sheets("lijstje").Range("A1").Resize(, n) = Split(Mid(sn, 2))
    .Protect "Jan"
 End With
End Sub
 
Als het wachtwoord bekend was, zou het zo ook kunnen.

Ík heb maar "Jan" ingevuld, maar dat was het wachtwoord niet.
Code:
Sub hsv()
Dim cl As Range, sn As String, n As Long
With Sheets("Overzicht")
  .Unprotect "Jan"
For Each cl In .Range("B3:BP3").SpecialCells(2)
    sn = sn & cl & " "
    n = n + 1
 Next cl
Sheets("lijstje").Range("A1").Resize(, n) = Split(Mid(sn, 2))
    .Protect "Jan"
 End With
End Sub

oei, sorry, stond er een wachtwoord in :/ vergeten te uprotecten.

zoals eerder gezegd, vba is echt een zwakte van me ... als ik deze in de module invoer, hoe roep ik deze dan aan op mn werkblad ??
 
de formule in post 6 kun je gewoon als elke andere excel formule gebruiken.
en als je in je voorblad iets veranderd veranderd het in je 2e blad gewoon mee
 
de formule in post 6 kun je gewoon als elke andere excel formule gebruiken.
en als je in je voorblad iets veranderd veranderd het in je 2e blad gewoon mee

Sylvester-ponte.

Als ik deze open in excel en simpelweg (bij bediening) in een lege cel gewoon 'test' invul, geeft het 'lijstje' allemaal #value errors ...
 
vreemd probeer deze eens.
wel macro's inschakelen
 

Bijlagen

  • helpmij lijstje maken(3.xls
    48,5 KB · Weergaven: 36
vreemd probeer deze eens.
wel macro's inschakelen

spijt me verschrikkelijk ... blijft steeds dezelfde fouten geven.
uiteraard staan macro's aan.

bij openen van het bestand zegt ie wel dat er links zijn naar externe bestanden; en vraagt of excel de links moet updaten ja dan neen.
beide opties werken niet ...

?
 
Werkt hier prima Sylvester.
 
kan het aan de versie van excel liggen ?
de vertaling ?

beide opties lijken mij vreemd aangezien het wel correct weergegeven staat als ik het bestand open ... ?
ik zie nu wel net dat op deze computer (laptop, oude bak) nog excel 2003 draai :( kan dat toch ergens iets mee te maken hebben ?
 
een omweg eventueel .. bestaat er een manier om een volledige kolom te verbergen als een waarde in een bepaalde cel "" is ?
 
Even getest op 2003, werkt ook prima.
Wel vraagt het om koppelingen bij te werken.

Wat voor scheidingsteken gebruik je, en wat voor één staat er in het bestand van Sylvester. (normaal zet Excel het goed om, maar je weet maar nooit).
 
Wat voor scheidingsteken gebruik je, en wat voor één staat er in het bestand van Sylvester. (normaal zet Excel het goed om, maar je weet maar nooit).

sowieso staat t vinkje 'use system separator' aangevinkt, maar voor decimalen gebruikt ie een ',' en voor duizendtallen een '.'
 
Het Quoteknopje is geen reageerknopje.

Lees mijn vorig schrijven, en geef daar eens antwoord op.
 
bij dat van Sylvester staan dezelfde ...

vraagje:
Code:
Function NamenLijst1(Namen As Range, Nr As Integer) 'met dank aan Spaarie
  Dim cel      As Range, sp
  With CreateObject("System.Collections.ArrayList")
    For Each cel In Namen.Cells
      If (Not .Contains(LCase(cel.Value))) And (cel <> "") Then .Add LCase(cel.Value)
    Next
'    .Sort                                                  'sorteren
'    .Reverse           'huidige volgorde omkeren, dus na alfabetsich gesorteerd is die nu omgekeerd
    
    If Nr < .Count Then
        Nr = Nr
        NamenLijst1 = .Item(Nr)
    Else
        NamenLijst1 = ""
    End If
  End With
End Function

dit is de gehele code van de macro.

in het bovenste stukje
Code:
Function NamenLijst1(Namen As Range, Nr As Integer) 'met dank aan Spaarie
  Dim cel      As Range, sp

staat DIM CEL AS RANGE ...

moet er nergens een range gedefiniëerd staan ?? het lijkt wel of mijn excel die 'weglaat' ? kan dat iets te maken hebben met het updaten van koppelingen ?
 
1 kleine opmerking bij de functie van SP.
System.Collections.ArrayList is een op 0 gebaseerde matrix dus start te tellen vanaf 0 ....
Daarom volgende aanpassing aan de regel om het 1ste (en volgende ) juiste resultaten weer te geven.
Code:
NamenLijst1 = .Item(Nr[COLOR="#FF0000"] - 1[/COLOR])
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan