[Excel 2003] Weergeven van zoekresultaten

Pagina: 1
Acties:
  • 258 views sinds 30-01-2008
  • Reageer

  • Tazz@NL
  • Registratie: Augustus 2002
  • Laatst online: 15-05-2025
Het lukt me maar niet op een envoudige mannier meerdere zoekresultaten weer te geven in een cel.

Ik heb een blad met informatie per werknemer, per dag. Hierop wordt aangegeven of deze persoon die dag recht heeft op een compensatiedag. Is dat het geval wordt er een 1 ingevuld in een kolom.
VB:
DatumCompensatiedagen
150
161
171
180


Nu wil ik in een samenvatting van alle werknemers een cel maken met alle data van wanneer er een compensatiedag verdient wordt.

VB:
16, 17


Het lukt me wel me de formule:
=ALS(B1>0;A1;"")&TEKST(0;", ")&ALS(B2>0;A2;",") enz..

maar het probleem is dat ik dit dan voor de hele maand moet invullen
-edit
de formule wordt dan te lang
-edit
en dan ook nog voor 50 werknemers.
Met een zoekfunctie lukt het mij alleen de laatst gevonden datum in een lijst weer te geven, net alle data. Dat is met deze functie:
=ZOEKEN(1;B1:B50;A1;A50)

Hoe lost ik dit op??

[ Voor 4% gewijzigd door Tazz@NL op 19-05-2005 18:05 . Reden: omdat ik iets verder ben, maar het nog steeds niet voor elkaar krijg ]


  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Ik verplaats je topic even naar het juiste subforum

SA > OFF

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


  • kippy
  • Registratie: September 2004
  • Laatst online: 21:02
in VBA een loopmaken die de cellen doorloopt en wegschrijft in een andere cell of textbox of iets dergelijks.

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Als in een enkele cel zou ik idd. VBA gebruiken. Als liever geen VBA: maak gebruik van verborgen hulpcellen / kolommen om het probleem van een te lange formujle te omzeilen. Dat het voor 50 mensen moet: als simpelweg automatisch aanvullen niet werkt kan je eenmalig een script gebruiken om de formules te genereren (of slim copy/pasten in kladblok oid en daarna overzetten).

Inderdaad doet zoeken alleen de eerste of laatste.

Als het niet realtime hoeft maar eenmalig: bijv. dit heeft transpose en merge functies.
edit:

Hmm. Oeps. Daar heb je natuurlijk geen losse app voor nodig, daar voor heb je al de matrix functie TRANSPONEREN() voor en TEKST.SAMENVOEGEN() voor het samenvoegen.

[ Voor 14% gewijzigd door F_J_K op 20-05-2005 12:02 ]

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • onkl
  • Registratie: Oktober 2002
  • Laatst online: 21:47
Inderdaad, achter iedere kolom "Compensatiedagen" een verborgen kolom. Daarin zet je (Ik neem even aan dat Datum bij jou in cel A1 staat)
C2: =ALS(B2=1;Tekst.samenvoegen(A2; ALS(C3="";""; TEKST.SAMENVOEGEN(", ";C3)));ALS(C3="";"";C3))
En die sleep je naar beneden.
In cel C2 staat nu je gewenste uitkomst voor die werknemer. Daarnaar verwijzen in je overzicht, kolom verbergen, klaar.

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Dat moet simpeler kunnen.

Stel A:A datum, B:B 1of 0; C:C de verborgen kolom.
In C1 staat de normale formule; in C2:
=C1 & ALS(B2=1;", " & A2;""). Doorkopieren en in Cxx vind je de totale string.

edit:
met een check voor de ", " wordt het niet echt simpeler.

=C1 & ALS(B2=1;Als(C1>"";", ";"") & A2;"")

Voor dit soort dingen maak ik meestal even een functie aan; ik zal eens zoeken...

Gevonden:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Function ZoekAlles(zoekwaarde, zoekbereik, leesbereik, scheidingsteken)
    On Error GoTo nop
    Dim i As Long, result As String, lenTrim As Long
    
    For i = 1 To zoekbereik.Cells.Count
        If zoekbereik.Cells(i) = zoekwaarde Then
            result = result & leesbereik.Cells(i) & scheidingsteken
        End If
    Next i
    
    lenTrim = Len(result) - Len(scheidingsteken)
    If lenTrim > 0 Then
        result = Left(result, lenTrim)
    End If
    
    ZoekAlles = result

    Exit Function
nop:
    ZoekAlles = "#Fout!"
End Function

Als je dit in een module zet kun je de functie gewoon in je werkblad gebruiken:
=ZoekAlles(1;B1:B30;A1:A30;", ")

[ Voor 92% gewijzigd door Lustucru op 20-05-2005 16:51 ]

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • Tazz@NL
  • Registratie: Augustus 2002
  • Laatst online: 15-05-2025
Super bedankt allemaal!!
De laatste ZoekAlles functie is precies wat ik nodig ben! Het was even uitpuzzelen hoe deze functie toe te voegen, maar dat is inmiddels ook gelukt.
Bedankt mensen!! (Mede namens mijn stagebedrijf in Paramaribo)
Pagina: 1