Forum

Notifications
Clear all

Sick leave periods in one cell

7 Posts
3 Users
0 Reactions
85 Views
(@iceman977)
Posts: 4
Active Member
Topic starter
 

Hello everyone
I want to find and have in one cell the periods that a person used sick leave (for record purposes) in the month (see the example below). I've tried to find something online, but haven't succeeded. I need it to be in one cell due to report reasons at the end of the month (among other things).
By the way, I need it for excel 2010 (even though the example is in excel 2019).

For example:
A1 to AE1 dates from Jan 1 to Jan 31
Cells D2, E2, F2, N2, O2, P2, Q2, W2, X2, Y2, and Z2 have the letter S, which indicates the day person was on sick leave.
I need cell AF2 to have the following
Jan 4-Jan 6, Jan 14-Jan17, Jan 23-Jan 26.

 
Posted : 25/03/2023 5:02 pm
(@jnsln)
Posts: 5
Active Member
 

Hi,

I can't see the attached document. If i'm not misinterpreting

 

A1 to AE1 dates from Jan 1 to Jan 31 (31 dates)

However, for February 2023, the dates are from 1 to 28 and are in the range of A1 : AB1.
In this case, assuming AC1 : AE1 = "" or Empty Cells

Please try (in cell AF2)

=SUMPRODUCT(($A$1:$AE$1<>"")*($A2:$AE2="S"))
 
 
Posted : 26/03/2023 12:57 pm
(@iceman977)
Posts: 4
Active Member
Topic starter
 

Hello Janset Beyaz

Thanks for the reply. And yes, you are right, if it's February, then AC1:AE1 would be empty. 

I don't know why you can't see the attached document (trying again), but your formula is given the number of sick days. What I need is the periods of sick leave (dates from ... to..., or I need cell AF2 to have the following: Jan 4-Jan 6, Jan Jan 14-Jan17, Jan 23-Jan 26). 

 
Posted : 27/03/2023 1:16 pm
(@keebellah)
Posts: 373
Reputable Member
 

Well, now that you actually attached the file it's there.

But, do you want to do this with formulas or macros?

 
Posted : 28/03/2023 2:04 am
(@iceman977)
Posts: 4
Active Member
Topic starter
 

Well, I would like it with formula.

 
Posted : 28/03/2023 7:38 am
(@jnsln)
Posts: 5
Active Member
 

Hi,

If your Excel version is Excel365 and you have DROP, MAP, LAMBDA, HSTACK (in addition to these, REDUCE and VSTACK for auto spill in the range) functions, write the following formula in cell AF2 and try. (If you don't have these functions we have to wait for Hans Hallebeck's solution)

=LET(f,FILTER($A$1:$AE$1,($A$1:$AE$1<>"")*(A2:AE2="S")),a,HSTACK(-1,f,-1),b,COLUMNS(a),c,SEQUENCE(,b-2,2),IFERROR(TEXTJOIN(", ",,MAP(c,LAMBDA(x,IF(INDEX(a,x-1)+1=INDEX(a,x),"",LET(k,MATCH(0,--(DROP(a,,x)=SEQUENCE(,b-x,INDEX(a,1,x)+1)),0)-1,TEXT(INDEX(a,x),"mmm dd")&IF(k=0,"","-"&TEXT(INDEX(a,x)+k,"mmm dd"))))))),""))

Moreover, suppose you have data in the range A2 : AE9. Copy the above formula down to AF9..

If you want auto spill in the range with formula in single cell, first delete the range AF2:AF9 and

formula in cell AF2 and try..

=LET(rng,A2:AE9,d,A1:AE1,s,SEQUENCE(ROWS(rng)),DROP(REDUCE(0,s,LAMBDA(x,y,VSTACK(x,LET(f,FILTER(d,(d<>"")*(INDEX(rng,y,0)="S")),a,HSTACK(-1,f,-1),b,COLUMNS(a),c,SEQUENCE(,b-2,2),IFERROR(TEXTJOIN(", ",,MAP(c,LAMBDA(q,IF(INDEX(a,q-1)+1=INDEX(a,q),"",LET(k,MATCH(0,--(DROP(a,,q)=SEQUENCE(,b-q,INDEX(a,1,q)+1)),0)-1,TEXT(INDEX(a,q),"mmm dd")&IF(k=0,"","-"&TEXT(INDEX(a,q)+k,"mmm dd"))))))),""))))),1))

 
Posted : 28/03/2023 5:42 pm
(@iceman977)
Posts: 4
Active Member
Topic starter
 

Janset Beyaz

Thanks for the reply, but unfortunately I don't have that version of excel. 

 
Posted : 29/03/2023 2:38 am
Share: