in my project im facing a problem regarding a possibly huge table.

As background information: Im working on a duty scheduling application. There are different workplaces (for example: kitchen, garden, garage) - there is no limit since users can setup the workplaces themself.

Now my users want to see what employee (also a list of unlimited entries) worked how many hours on each workplace (every person could appear on any workplace).

So im facing a table with unlimited columns and unlimited rows.

On top of that i need to display absences, so the manager gets a good overview of who was gone for how long (vacation, sickness).

Main Goal is to get a good idea of who has worked a lot in a month, who has worked less, who had most weekend shifts and so on so the guy planning the shifts is able to distribute new shifts more fair.

I read like every table best practice article i could find and invested hours looking for some solution but i cant really find something that feels "good".

Did anyone of you maybe had a similar problem once? How did you solve it?

Horizontal scrolling is bad Can't really limited the amount of employees or workplaces since they need to be compared.

Note: does not need to work on mobile since its a desktop application but screen sizes vary

  • 2
    Does this answer your question? How To Display Too Much Data
    – Danielillo
    Commented Nov 21, 2022 at 9:16
  • Unfortunately no, i saw this questions before when i used google (and this is how i found this site). The data inside my cells will be very small (maximum of 4 digit numbers). My main problem is the large amount of rows and columns. But if there is no better solution i might just use horizontal scrolling, whats your opinion on that?
    – GreyDove
    Commented Nov 21, 2022 at 9:24

1 Answer 1


The title is:

How to design a table with a lot of rows and columns?

However, users:

...want to see what employee...worked how many hours on each workplace

...and the:

Main Goal is to get a good idea of who has worked a lot in a month, who has worked less, who had most weekend shifts and so on so the guy planning the shifts is able to distribute new shifts more fair.

There are two tasks identified here, each requiring different approaches and having different outcomes. The first is how to display as much discrete information as possible in as small a space as possible. The second is how to sort, filter, and aggregate information to reveal cumulative information.

A large amount of discrete data is impossible for most people to not only comprehend but even scan to locate the information they're looking for. Better to start with a broad view and present sorting and filtering controls up front so they can conform the data into customized chunks of information that match their current frame of mind.


Sorting and Filtering

...who has worked a lot in a month...

Start with the "big picture" and focus on the workers—initially present a list of workers ordered by total number of hours worked, in descending order. Other information, such as absences, job performance, and scheduling controls can be included in each row. This list is only as long a the total number of workers. It may require vertical scrolling but the workers with the most hours are "above the fold". Do not put the locations in columns here, potentially causing the need for horizontal scrolling, and more importantly increasing the complexity and therefore comprehensibility of the initial presentation.

Within the list of workers, for each row, include an expansion control to open a sub-list showing how the hours a particular worker worked are dis-aggregated, i.e., how many hours at each location, and how many weekend hours.

Adjacent, i.e., located near the list, provide a sorting control. The default, of course, is "total hours worked", but also include weekend hours, absences, etc. More complex sorting can be provided, if necessary, combining multiple sort subjects: first location, then hours worked, for example.

This list, being easy to comprehend and scan, gives managers the direction they need to filter and locate the information they need to make scheduling decisions.

One filter can be checkboxes at the beginning of each worker row in the initial list so sub-groups can be selected based on more or less hours worked. And/or an adjacent "number hours range" text field type filter can be provided to perform a similar function.

Another adjacent filter can be a location filter:

Choose one or more locations:
□ Kitchen
□ Garage
□ Garden
□ ...

...then the list of workers is limited to the locations selected.

Additionally, if user research demonstrates a need, provide two tabs: one, the default open tab, for a worker-sorted list, and two, a location-sorted list. Each tab focuses on its topic and provides appropriate sorts and filters.


Surely there are more sorts, filters, fields, and controls to provide, the point though is to guide the user's comprehension from broad to narrow by data aggregation married with sorting and filtering controls designed to match the user needs and information type.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.