You are doing a couple of things wrong.
You should not store a calulated value (AVGSCORE ) in the database.
You should not have 6 fields to record the scores. Use one for score and
another to define what the score represents.
Player Game Score
Bill Bskt 32
Bill Ftbl 7
Bill Scor 12
Joe Bskt 12
Joe Ftbl 8
Joe Scor 21
Use a union query to move your data into the correct table format.
SELECT Player, 1 AS Game, AS1 AS Score
FROM ASJ
UNION ALL SELECT Player, 2 AS Game, AS2 AS Score
FROM ASJ
UNION ALL SELECT Player, 3 AS Game, AS3 AS Score
FROM ASJ
UNION ALL SELECT Player, 4 AS Game, AS4 AS Score
FROM ASJ
UNION ALL SELECT Player, 5 AS Game, AS5 AS Score
FROM ASJ
UNION ALL SELECT Player, 6 AS Game, AS6 AS Score
FROM ASJ;
Then use that query as source for make table query into MyBestTable.
The use a Ranking in a Group query to get the lowest 4 per player.
SELECT Q.Player, Q.Game, Q.Score, (SELECT COUNT(*) FROM [MyBestTable] Q1
WHERE Q1.[Player] = Q.[Player]
AND Q1.[Score] < Q.[Score])+1 AS Rank
FROM MyBestTable AS Q
WHERE ((((SELECT COUNT(*) FROM [MyBestTable] Q1
WHERE Q1.[Player] = Q.[Player]
AND Q1.[Score] < Q.[Score])+1)<5))
ORDER BY Q.Player, Q.Game, Q.Score;
Then you can average the lowest 4 scores.