I've been wanting to put together a table of statistics that is frankly a little over-ambitious for my skill level, so I was hoping someone else may be able to share the knowledge required to perform the actions I need.

1) I Have a list of names (for example, column B rows 1 to # are text strings, some empty.) What I would like to do is return the name that appears most often in this array of strings--like what the MODE function does for numerical values. If I need to create a separate table that counts the appearances of each name then grab the corresponding name of the MAX value of that table, that will be fine.

2) I have a table listing in and out times and dates. The formatting is as follows:
Date in (mm/dd/yyyy) | Time in (h:mm <12h>) | Date out (mm/dd/yyyy) | Time out (h:mm <12h>)
What I would like to do here is find the total time in. Now, this will not be as easy as adding the 'tOut-tIn' for each row, because a lot of the time rows will overlap. By this I mean one row's "Time/Date in" could be earlier than the "Time/Date out" in the row before it. Is there a simple function to perform this?
Basically the end result I'm looking for is the number of hours:minutes where there is nothing 'in', but I can calculate this if only I had the number of hours with one or more objects 'in'. I hope this makes sense.

Finally, 3) Throwing back to #1, next to each name there is a number of 'items' recorded. What I would like to do with this is count, again for each name, the total number of items. Say in Row 3 Bill has 6 oranges, Row 4 Jeff has 12, and Row 5 Bill has 2. The output I would like to get from this is Bill having 8 oranges total and Jeff having 12.
The end result from this is that I would like to know who has the most 'items', and how many items that is. If it's possible to do this without creating a new table of names and totals, then all the better.

Any help would be greatly appreciated. Also, if I am posting this in the wrong area, directions to where I should ask for help would be great.

Cheers.