Forum Discussion
Formula help :)
Hi everybody,
I am new here, and I really hope that you will be able to help me on this (Please find the excel file attached):
How do I make a formular that ensures that no employees are listed twice (or more) in each row?
And how do I - still "automatically" make en additional scheme showing the employees' names in the first row instead of the rooms?
Thank you very much in advance. 🙂
Best wishes,
Maria S.
Third question. Solution is bit straightforward, but perhaps works correctly.
So, in Room Allowance sheet we keep matrix like this
That's the only source for employee and room names, in all other places we reference on it.
Next is Helper sheet (could be hided) where we keep combinations of all available periods and rooms and build for each such combination list of employees allowed to book the room.
In C4
=INDEX(Booking!$C$3:$O$3,1,INT((COLUMN()-COLUMN($B$5)-1)/COUNTA(Booking!$B$4:$B$10))+1)
drag it to the right till error appears.
In C5
=INDEX(Booking!$B$4:$B$10,MOD((COLUMN()-COLUMN($B$5)-1),COUNTA(Booking!$B$4:$B$10))+1,1)
and in C6
=SORT(FILTER( 'Rooms allowance'!$B$3:$B$22, (COUNTIF(INDEX(Booking!$C$4:$O$10,MATCH(C$5,Booking!$B$4:$B$10,0),0),'Rooms allowance'!$B$3:$B$22)=0)* (INDEX('Rooms allowance'!$C$3:$O$22,0,XMATCH(C$4,'Rooms allowance'!$C$2:$O$2))="x") ))
Drag them also to the right (or select the range and CTRL+R).
Data validation for entire booking range
is with formula
=INDEX(Helper!$C$6:$CO$6,1,XMATCH(C$3&$B4,Helper!$C$4:$CO$4&Helper!$C$5:$CO$5))#
Solution is very depends on number of employees, I assumed relatively small one.
Another variant which I tried, without helper, doesn't work since data validation has 256 characters limit on formula length and now I don't see the way how to fit it.
29 Replies
- NikolinoDEGold Contributor
- SergeiBaklanDiamond Contributor
If you are on Excel with dynamic arrays that could be done with helper ranges which could be created at any place of your workbook (better in separate sheet)
Here
starting from B12 make headers for the time as
=TRANSPOSE($A$2:$A$8)
In B13
=SORT(FILTER($A$13:$A$32,COUNTIF(INDEX($B$2:$N$8,MATCH(B$12,$A$2:$A$8,0),0),$A$13:$A$32)=0))
(it shows names are not assigned for that time) and drag it to the right.
Select your entire range and add data validation to all cells as
Formula is
=INDEX($B$13:$H$13,0,ROW()-ROW($A$1))#
As for the second question I didn't catch, could you please illustrate in file.
- mariasolhoejCopper Contributor
Dear SergeiBaklan ,
Thank you - very helpful!! 🙂
I have tried to illustrate the matter related to my second question - please see attached file.
Best regards,
Maria
- SergeiBaklanDiamond Contributor
Maria,
Second question - I see, thank you. For it you need list of rooms
Formulas like
=FILTER($A$50:$A$62,COUNTIF(INDEX($B$12:$U$18,MATCH(B$49,$A$12:$A$18,0),0),$A$50:$A$62)=0)
Data validation
=INDEX($B$50:$H$50,0,ROW()-ROW($A$11))#
- NikolinoDEGold Contributor
Please take a look at this proposal with data verification.
the first row (B2: N2) has been made as an example.If you find this helpful, please mark it as "Best Answer" and as Like (click thumbs up), it will be beneficial to more Community members reading here.
Nikolino
I know I don't know anything (Socrates)
- mariasolhoejCopper Contributor
Hi again, NikolinoDE 🙂
Thank you very much, however, I don't read your suggestion in the attached file?
Would you mind attaching it again, using another filename?
Thank you very much for your kind willingness.
Best regards,
Maria
- NikolinoDEGold Contributor
Here is a small example with conditional formatting.
It is easiest for the user to see everything at a glance.If you find this helpful, please mark it as "Best Answer" and as Like (click thumbs up), it will be beneficial to more Community members reading here.
Nikolino
I know I don't know anything (Socrates)
- mariasolhoejCopper Contributor
Hi NikolinoDE
Thanks for your reply. 🙂
It was not excactly what I was looking for. I am more interested in a formular making the listing with no errors 🙂
Best wishes,
Maria
- NikolinoDEGold Contributorin formula for each row
=IF(MATCH(A13,$B2:$N2,0)=ROW(),"","double")