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

begin en laatste tijd bepalen per dag

Status
Niet open voor verdere reacties.

moensk

Gebruiker
Lid geworden
23 jun 2013
Berichten
778
in bijlage klein voorbeeldje gemaakt. hieronder wat info
Ik wil per ontvanger per dag maar 1 "van" en 1 "tot"
de "van" kan ik simpel bepalen want dat is altijd de "van" met Key "S1" en dan rekening houden met de dag
de "tot" is een probleem omdat er soms een key "S2" voor die dag is dwz klant heeft ochtend uren en namiddag uren.
hoe kan ik ervoor zorgen dat hij de "tot" waarde neemt van de S2 voor die dag
manueel is ni mogelijk, heb een lijst van +- 1500 ontvangers
 

Bijlagen

Code:
=DROP(LET(r;A4:E10;n;A4:A10&"-"&E4:E10;REDUCE("";UNIQUE(n);LAMBDA(a;b;VSTACK(a;LET(z;FILTER(r;n=b);HSTACK(TEXTBEFORE(b;"-");MIN(z);MAX(z);TAKE(z;1;-2)))))));1)

PQ

PHP:
let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    grp = Table.Group(Source, {"naam","dag"}, {{"Van",  each _[van]{0}},{"Tot",  each List.Max(_[tot])},{"Key",  each _[key]{0}}}),
    cType = Table.TransformColumnTypes(grp,{{"Van", type time}, {"Tot", type time}})
in
    cType
 

Bijlagen

Laatst bewerkt:
Uitgaande van een echte tabel (zie mijn bestand), hier ook nog een macro welke de tabel direct aanpast.

Code:
Sub jec()
 Dim dic, ar, k, a, j As Long
 Set dic = CreateObject("scripting.dictionary")
 
 With Sheets(1).ListObjects(1).DataBodyRange
   ar = .Value
   For j = 1 To UBound(ar)
     k = ar(j, 1) & ar(j, 5)
     If Not dic.exists(k) Then
       dic(k) = Array(ar(j, 1), ar(j, 2), ar(j, 3), ar(j, 4), ar(j, 5))
     Else
       a = dic(k)
       If ar(j, 3) > a(2) Then a(2) = ar(j, 3)
       dic(k) = a
     End If
   Next
   .Delete
   .Resize(dic.Count, UBound(ar, 2)) = Application.Index(dic.items, 0, 0)
 End With
End Sub
 
Code:
Sub M_snb()
 sn = Sheets(1).ListObjects(1).DataBodyRange
 
 With CreateObject("scripting.dictionary")
   For j = 1 To UBound(sn)
     sp = Application.Index(sn, j)
     If .exists(sp(1)) Then sp(2) = Application.Min(sp(2), .Item(sp(1))(2))
     .Item(sp(1)) = sp
   Next
   
   Sheets(1).Cells(30, 1).Resize(.Count, UBound(sp)) = Application.Index(.items, 0, 0)
 End With
End Sub
 
Ook een duit.
Code:
=LET(a;A4:E10;b;INDEX(a;;5);c;UNIEK(b);d;VERGELIJKEN(c;b;0);x;INDEX(a;d;{1\2});y;MAX.ALS.VOORWAARDEN(INDEX(a;;3);b;c);z;INDEX(a;d;{4\5});HOR.STAPELEN(x;y;z))
 
Als je meerdere namen hebt gaat die niet werken, alhoewel dat zich mogelijk niet voordoet

In dat geval

Code:
=LET(r;A4:E10;z;INDEX(r;;5);u;UNIQUE(z);HSTACK(INDEX(r;MATCH(u;z;0);{1\2});MAXIFS(INDEX(r;;3);z;u);u))
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan