Any time that you set up a calculation that refers to fields from a related record where there are more than one related record, the calculation can only refer to the first related record unless you use a specialized function that does it differently. This is why each If function only references data from the first related record.
Why did you choose to define 5 separate fields instead of a portal? What problem does that solve for you? What happens when there turns out to be 6 or more events that the contact has attended?
Note that there are ways to use portals to display data in a horizontal row and also ways to use a calculation field to list all data from a related table in a horizontal row.
The reason I chose fields over a portal is for search purposes. I wanted to be able to create complex searches such as: people who attended event 1 & 3 but not 2. As for why I used 5 fields it is just because there are a finite amount of events. If there another event comes along I was just going to add another field.
After my original post I was thinking about enlarging the portal ant trying that so I am very open to suggestions.
If there another event comes along I was just going to add another field.
I would not recommend that approach as it is pretty inefficient.
The type of search you describe should be possible either by using a script specifies criteria in your portal or by performing (probably also with a script) the search on a layout based on your portal's table.