Likewise, a cell for each position (GK, DF, MF and FW) which is subject to the constraint that it must equal the relevant value (2, 5, 5 and 3). Here is the model which is inputted into the 'OpenSolver' add-in: Objective cell: This cell contains the sum of the points accumulated for the selected team. Variable cells: These are the cells which will be changed where each player has a unique cell assigned to them. Constraints: The variable cells must be binary, where 1 and 0 represents if a player is selected or not, respectively. This cell contains the total number of goalkeepers selected and it must equal 2. This cell contains the total number of defenders selected and it must equal 5. This cell contains the total number of midfielders selected and it must equal 5. This cell contains the total number of forwards selected and it must equal 3. This cell contains the total cost of all the players that are selected in the team and it must be less than or equal to 100. This range of 20 cells contain the total number of players selected within each team, and each cell must be less than or equal to 3. Once all the constraints were inputted into the add-in, I clicked 'Save Model' then 'Solve' , and in a fraction of a second, the optimal fantasy team is picked.  I filtered out the '0's to leave the '1's to see the chosen team, and then submitted it