In sheet1 of the attached are two versions of your Sheet1 table. The top version is your table where I have highlighted conflicting values (where, for example, for Product 1: what category does it get placed in if the product is 20 days old; 20 days appears in the Good AND bad categories. You have to decide which.
The second table is how I'd suggest you do things, have just a single number in each cell representing the thresholds only. I've highlighted those cells where I've had to guess the value you want in there. Note the shortened headers too.
On sheet2, there is also your table, with the added column H headed Condition. This column contains a formula along the lines of:
=INDEX(Sheet1!$B$9:$E$9,MATCH(F2,INDEX(Sheet1!$B$10:$E$14,MATCH($B2,Sheet1!$A$10:$A$14,0),0)))
This formula was actually derived from the cells in column M. Columns K:M (highlighted) don't need to be there anymore, they just show the steps taken to arrive at the formula; they can be deleted, there for your information only.
There is an Autofilter applied to the Condition column, but it's showing all the rows at the moment - I leave that for you.
If this is something you're happy to go along with, the formulae in column H can be made a bit more robust and easier to manage by using Named Ranges or Tables. You might also want to reduce the number of columns in this results table, since you won't need the Shelf life, the current date, nor the Age of Product since the formulae in the Condition column currently needs only to look at the Age of Product column and this can be worked out within the formula itself.
Bookmarks