It will be not easy to do it with formulas, but at least you can prepere "a good startpoint for human adjustment".
In your Listing sheet in J7 put random number generated by excel:
=RAND()
and copy down to next 7 cells
in A11 in Monday sheet write a formula:
=IF(AND(SUM(D$10:D10)<500,SUM(E$10:E10)<20,SUM(F$10:F10)<600),100+MATCH(SMALL('Food Listing'!$J$7:$J$14,ROW(1:1)),'Food Listing'!$J$7:$J$14,0),"")
of course adjust allowed sums for D (calories) E (Fat) etc. add also next columns to be checked within AND(...) - carnb and prot.
note that the sum is from row $10 to row 10 - so just one row with no numbers 
but as you copy this formula down it will become $10 to 11, $10 to 12 etc.
once one of limits is met - next foods are not selected.
Note, that results are volatile - if you change anything in a sheet (like deleting an empty cell ;-) the sheet will recalculate and you will receive another set of foods.
Do silmilar with other types of food and you can start generating different sets.
Bookmarks