Building a Multi-Person Task Tracking Dashboard in Excel with VBA: A Complete Case Study

By Andyb 13 min read 2,411 words
VBA Excel Dashboard Task Management Automation Case Study
Learn how to transform a complex Excel automation request into a professional task tracking dashboard with interactive charts, automated filtering, and VBA macros. Step-by-step guide with real-world examples.
When a user submitted a request for a "comprehensive dashboard in Excel to track tasks across multiple team members with automated filtering, deadline alerts, and visual progress charts," it presented an excellent opportunity to demonstrate how to decompose complex requirements into a structured, achievable Excel solution.

This case study walks through the complete process of building a professional task tracking dashboard, from understanding requirements to implementing VBA automation. Whether you're managing a small team or tracking dozens of projects, this guide will show you exactly how to create a powerful, reusable solution.

What You'll Learn
✓ How to analyse and break down complex Excel requests
✓ Dashboard design principles for task tracking
✓ Building interactive charts and visual indicators
✓ VBA automation for filtering and data management
✓ Creating a reusable template you can adapt to any project

Part 1: Understanding the Request


The Original Requirement
The user's request called for a dashboard that could:
  • Track tasks across multiple team members
  • Show visual progress with charts and graphs
  • Filter by time period (this week, this month, custom dates)
  • Highlight overdue tasks automatically
  • Provide deadline alerts and follow-up tracking
  • Generate reports for management review

This is a classic example of a request that sounds straightforward but actually encompasses multiple interconnected systems. The key to success is breaking it down systematically.

The Analysis Framework
Before writing a single formula or line of VBA code, we need to decompose this into manageable components:
Component Breakdown
1. Data Structure
What information needs to be tracked? Task name, assignee, status, priority, dates, category, notes.
2. Visual Dashboard
What charts will provide the most value? Task distribution, completion trends, workload balance, priority breakdown.
3. Filtering Mechanisms
How will users interact with the data? Button-based filters, dynamic date ranges, status toggles.
4. Automation Needs
What should VBA handle? Conditional formatting, filter operations, report generation, data validation.

Part 2: Building the Foundation


Worksheet Architecture
A well-designed Excel dashboard separates concerns across multiple worksheets. Here's the structure we'll build:

Dashboard  | Visual overview with charts and KPIs  | View-only + filter buttons
Data Entry  | Structured task data with validation  | Add/edit tasks
Follow Up Items  | Automated extraction of urgent tasks  | View/export
Instructions  | User guide and documentation  | Reference

The Data Entry Sheet: Your Single Source of Truth
Everything starts with good data structure. Here's the column layout we'll use:
Column A: Task ID (auto-generated)
Column B: Task Name
Column C: Assigned To
Column D: Status (dropdown: Not Started, In Progress, Completed, On Hold)
Column E: Priority (dropdown: High, Medium, Low)
Column F: Category (dropdown: Development, Marketing, Operations, Admin)
Column G: Start Date
Column H: Due Date
Column I: Days Elapsed (calculated)
Column J: Notes

Key Formula: Days Elapsed
In column I (starting at I2), we track how long each task has been active:
=TODAY()-G2
This simple formula automatically calculates working days and updates daily, providing instant insight into task age.

Data Validation: Ensuring Data Quality
Consistent data is crucial for reliable dashboards. We set up dropdown lists for key columns:
Pro Tip: Named Ranges
Instead of hardcoding dropdown values in each validation rule, create named ranges (Formulas → Name Manager). This makes updates easier—change the list once, and all dropdowns update automatically.
Status Dropdown: Not Started, In Progress, Completed, On Hold
Priority Dropdown: High, Medium, Low
Category Dropdown: Development, Marketing, Operations, Admin

Part 3: Creating the Visual Dashboard


Dashboard Layout Strategy
A cluttered dashboard is worse than no dashboard. We'll organise ours into three zones:
  1. Header Zone (Rows 1-2): Title and filter buttons
  2. KPI Zone (Rows 4-6): Key metrics in large, bold text
  3. Chart Zone (Rows 8+): Four visual charts arranged in a grid

The Four Essential KPIs
These summary metrics give instant insight into project health:
Total Tasks
=COUNTA('Data Entry'!B2:B1000)-COUNTBLANK('Data Entry'!B2:B1000)
Completed
=COUNTIF('Data Entry'!D2:D1000,"Completed")
In Progress
=COUNTIF('Data Entry'!D2:D1000,"In Progress")
Overdue
=SUMPRODUCT(('Data Entry'!H2:H1000<TODAY())*('Data Entry'!D2:D1000<>"Completed")*('Data Entry'!D2:D1000<>"On Hold")*('Data Entry'!H2:H1000<>""))

Understanding the Overdue Formula
The overdue count uses SUMPRODUCT to check multiple conditions simultaneously:
  • Due date (column H) is before today
  • Status is not "Completed" or "On Hold"
  • Due date cell is not empty (critical to avoid counting blank rows)
Each condition returns TRUE (1) or FALSE (0), and SUMPRODUCT multiplies them together—only rows where ALL conditions are TRUE contribute to the count.

Chart 1: Task Distribution by Status (Doughnut Chart)
This provides an immediate visual breakdown of work status.
Data Source:
Status          Count
Not Started     =COUNTIF('Data Entry'!$D$2:$D$1000,"Not Started")
In Progress     =COUNTIF('Data Entry'!$D$2:$D$1000,"In Progress")
Completed       =COUNTIF('Data Entry'!$D$2:$D$1000,"Completed")
On Hold         =COUNTIF('Data Entry'!$D$2:$D$1000,"On Hold")

Chart Settings:
  • Type: Doughnut
  • Colours: Grey (#95A5A6), Blue (#3498DB), Green (#27AE60), Orange (#E67E22)
  • Data labels: Show percentages

Chart 2: Tasks by Priority (Bar Chart)
Helps identify if the team is focused on the right priorities.
Data Source:
Priority    Count
High        =COUNTIF('Data Entry'!$E$2:$E$1000,"High")
Medium      =COUNTIF('Data Entry'!$E$2:$E$1000,"Medium")
Low         =COUNTIF('Data Entry'!$E$2:$E$1000,"Low")

Chart Settings:
  • Type: Horizontal Bar
  • Colours: Red (#E74C3C), Yellow (#F39C12), Green (#27AE60)
  • Data labels: Show values

Chart 3: Workload by Person (Column Chart)
Essential for identifying bottlenecks and balancing assignments.
Data Source (dynamic):
Extract unique names from the "Assigned To" column and count tasks for each person. Since team members change, use a UNIQUE formula (Excel 365) or create a manual list of team members.
=COUNTIF('Data Entry'!$C$2:$C$1000,A1)

Where A1 contains the person's name.

Chart 4: Tasks by Category (Pie Chart)
Shows how effort is distributed across business functions.
Data Source:
Category        Count
Development     =COUNTIF('Data Entry'!$F$2:$F$1000,"Development")
Marketing       =COUNTIF('Data Entry'!$F$2:$F$1000,"Marketing")
Operations      =COUNTIF('Data Entry'!$F$2:$F$1000,"Operations")
Admin           =COUNTIF('Data Entry'!$F$2:$F$1000,"Admin")


Conditional Formatting: Visual Intelligence
Colour-coding makes patterns jump out instantly. Apply these rules to the Data Entry sheet:
Overdue Tasks (Column H - Due Date)
Formula: =AND(H2<TODAY(), $D2<>"Completed", $D2<>"On Hold")
Format: Light red fill (RGB 255, 199, 206)
Completed Tasks (Column D - Status)
Formula: =$D2="Completed"
Format: Light green fill (RGB 198, 239, 206)
High Priority (Column E - Priority)
Formula: =$E2="High"
Format: Bold red text (RGB 192, 0, 0)

Part 4: VBA Automation


Why VBA for This Dashboard?
While Excel formulas handle calculations beautifully, VBA adds interactive functionality that formulas alone cannot provide:
  • One-click filtering without Excel's built-in filter interface
  • Automated report generation to a separate sheet
  • Dynamic worksheet switching and navigation
  • Batch operations across multiple rows

Macro 1: Filter This Week's Tasks
Triggered by a button on the Dashboard sheet, this macro filters the Data Entry sheet to show only tasks due this week:
Sub FilterThisWeek()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim startOfWeek As Date
    Dim endOfWeek As Date

    ' Set reference to Data Entry sheet
    Set ws = ThisWorkbook.Worksheets("Data Entry")

    ' Calculate this week's date range (Monday to Sunday)
    startOfWeek = Date - Weekday(Date, vbMonday) + 1
    endOfWeek = startOfWeek + 6

    ' Find last row with data
    lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row

    ' Clear any existing filters
    If ws.AutoFilterMode Then ws.AutoFilterMode = False

    ' Apply filter to Due Date column (H)
    ws.Range("A1:J" & lastRow).AutoFilter Field:=8, _
        Criterion1:=">=" & startOfWeek, _
        Operator:=xlAnd, _
        Criterion2:="<=" & endOfWeek

    ' Switch to Data Entry sheet to show results
    ws.Activate

    MsgBox "Showing tasks due this week (" & Format(startOfWeek, "dd/mm/yyyy") & _
           " to " & Format(endOfWeek, "dd/mm/yyyy") & ")", vbInformation
End Sub


Key Techniques
  • Dynamic date calculation: Weekday(Date, vbMonday) finds Monday of current week
  • AutoFilter with criteria: Uses date range comparison operators
  • Error prevention: Clears existing filters before applying new ones
  • User feedback: MsgBox confirms the date range being displayed

Macro 2: Filter This Month
Similar logic, but filters by the current calendar month:
Sub FilterThisMonth()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim startOfMonth As Date
    Dim endOfMonth As Date

    Set ws = ThisWorkbook.Worksheets("Data Entry")

    ' Calculate first and last day of current month
    startOfMonth = DateSerial(Year(Date), Month(Date), 1)
    endOfMonth = DateSerial(Year(Date), Month(Date) + 1, 0)

    lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row

    If ws.AutoFilterMode Then ws.AutoFilterMode = False

    ws.Range("A1:J" & lastRow).AutoFilter Field:=8, _
        Criterion1:=">=" & startOfMonth, _
        Operator:=xlAnd, _
        Criterion2:="<=" & endOfMonth

    ws.Activate

    MsgBox "Showing tasks due in " & Format(Date, "mmmm yyyy"), vbInformation
End Sub


Macro 3: Show All Tasks (Clear Filters)
Simple but essential—returns the view to show all data:
Sub ShowAllTasks()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("Data Entry")

    If ws.AutoFilterMode Then
        ws.AutoFilterMode = False
    End If

    ws.Activate
    MsgBox "Showing all tasks", vbInformation
End Sub


Macro 4: Extract Follow-Up Items
This powerful macro automatically creates a filtered list of urgent tasks (overdue + high priority) on a separate sheet:
Sub ExtractFollowUpItems()
    Dim wsSource As Worksheet
    Dim wsTarget As Worksheet
    Dim lastRow As Long
    Dim i As Long
    Dim targetRow As Long

    Set wsSource = ThisWorkbook.Worksheets("Data Entry")
    Set wsTarget = ThisWorkbook.Worksheets("Follow Up Items")

    ' Clear existing follow-up items (keep headers)
    lastRow = wsTarget.Cells(wsTarget.Rows.Count, "A").End(xlUp).Row
    If lastRow > 1 Then
        wsTarget.Range("A2:J" & lastRow).ClearContents
    End If

    ' Find last row in source data
    lastRow = wsSource.Cells(wsSource.Rows.Count, "B").End(xlUp).Row
    targetRow = 2

    ' Loop through tasks and copy urgent ones
    For i = 2 To lastRow
        If wsSource.Cells(i, 2).Value <> "" Then ' Task name not empty
            ' Check if task is overdue OR high priority AND not completed
            If (wsSource.Cells(i, 8).Value < Date And _
                wsSource.Cells(i, 4).Value <> "Completed" And _
                wsSource.Cells(i, 4).Value <> "On Hold") Or _
               (wsSource.Cells(i, 5).Value = "High" And _
                wsSource.Cells(i, 4).Value = "In Progress") Then

                ' Copy entire row to Follow Up sheet
                wsSource.Range("A" & i & ":J" & i).Copy _
                    Destination:=wsTarget.Range("A" & targetRow)
                targetRow = targetRow + 1
            End If
        End If
    Next i

    wsTarget.Activate
    MsgBox "Follow-up items updated. Found " & (targetRow - 2) & " urgent tasks.", vbInformation
End Sub


Business Logic Breakdown
This macro identifies tasks requiring immediate attention by checking:
  1. Overdue tasks that aren't completed or on hold
  2. High-priority tasks currently in progress

The result is a curated list perfect for team stand-ups or manager reviews.

Macro 5: Refresh Dashboard
Recalculates all formulas and reapplies conditional formatting:
Sub RefreshDashboard()
    Application.ScreenUpdating = False

    ' Recalculate all formulas
    ThisWorkbook.Worksheets("Dashboard").Calculate

    ' Reapply conditional formatting (if needed)
    Call ApplyConditionalFormatting

    ' Return to Dashboard
    ThisWorkbook.Worksheets("Dashboard").Activate

    Application.ScreenUpdating = True
    MsgBox "Dashboard refreshed successfully!", vbInformation
End Sub


Connecting Buttons to Macros
On the Dashboard sheet, insert buttons (Developer tab → Insert → Button) and assign each macro:
  1. "This Week" button → FilterThisWeek
  2. "This Month" button → FilterThisMonth
  3. "Show All" button → ShowAllTasks
  4. "Extract Follow-Ups" button → ExtractFollowUpItems
  5. "Refresh" button → RefreshDashboard

Part 5: Testing and Refinement


Sample Data Strategy
Before deploying to your team, populate the Data Entry sheet with 15-20 realistic sample tasks that include:
  • Mix of statuses (not started, in progress, completed, on hold)
  • Various priorities (high, medium, low)
  • Different team members
  • Tasks spanning past, present, and future dates
  • At least 3-4 overdue tasks to test conditional formatting
This allows users to see the dashboard "in action" immediately and understand its value before entering their own data.

Common Issues and Fixes
Issue: Charts show inflated numbers
Cause: COUNTIF formulas counting empty rows
Fix: Add condition to check if task name is not blank: SUMPRODUCT((criteria)*(B2:B1000<>""))

Issue: Macros produce "Object required" error
Cause: Sheet names don't match exactly
Fix: Verify sheet names in VBA match actual worksheet tabs (case-sensitive)

Issue: Conditional formatting disappears after filter
Cause: Formatting applied to specific rows, not range
Fix: Apply conditional formatting to entire columns (e.g., $D:$D instead of $D$2:$D$100)

Part 6: Advanced Enhancements


For Power Users: Adding Email Alerts
If your team uses Outlook, you can add automatic email reminders for overdue tasks:
Sub SendOverdueAlerts()
    ' Requires reference to Microsoft Outlook Object Library
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long
    Dim outlookApp As Object
    Dim outMail As Object
    Dim emailBody As String

    Set ws = ThisWorkbook.Worksheets("Data Entry")
    lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row

    Set outlookApp = CreateObject("Outlook.Application")

    For i = 2 To lastRow
        If ws.Cells(i, 8).Value < Date And _
           ws.Cells(i, 4).Value = "In Progress" Then

            emailBody = "Task: " & ws.Cells(i, 2).Value & vbCrLf & _
                       "Assigned to: " & ws.Cells(i, 3).Value & vbCrLf & _
                       "Due date: " & Format(ws.Cells(i, 8).Value, "dd/mm/yyyy") & vbCrLf & _
                       "Days overdue: " & DateDiff("d", ws.Cells(i, 8).Value, Date)

            Set outMail = outlookApp.CreateItem(0)
            With outMail
                .To = "manager@yourcompany.com"
                .Subject = "Overdue Task Alert: " & ws.Cells(i, 2).Value
                .Body = emailBody
                .Send
            End With
        End If
    Next i

    Set outlookApp = Nothing
    MsgBox "Alerts sent for " & overdueCount & " overdue tasks", vbInformation
End Sub


Mobile Access with Excel Online
Save your dashboard to OneDrive or SharePoint to enable:
  • Real-time collaboration (multiple users editing simultaneously)
  • Mobile viewing via Excel mobile app
  • Version history and backup

Note on VBA in Excel Online
VBA macros do not run in Excel Online. Users must open the file in desktop Excel to use the automation features. However, formulas, charts, and conditional formatting work perfectly in the browser.

Key Takeaways
  1. Structure First: A solid data foundation (Data Entry sheet) makes everything else easier.
  2. Formulas Do the Heavy Lifting: Most dashboard logic uses standard Excel functions—VBA adds interactivity, not calculations.
  3. Start Simple, Add Gradually: Build the basic dashboard first, then add VBA automation once the formulas work correctly.
  4. Test with Real Scenarios: Use sample data that mirrors actual business conditions to catch issues early.
  5. Document Everything: The Instructions sheet saves countless support questions later.

Download the Complete Template

Want to skip the build process and start with a ready-to-use solution? We've packaged this entire dashboard—complete with formulas, VBA macros, sample data, and instructions—into a downloadable Excel template.

Free Excel Task Tracking Dashboard Template
Includes all features from this case study:
  • ✓ Pre-built charts and KPIs
  • ✓ Working VBA macros (Mac & Windows)
  • ✓ Sample data to explore
  • ✓ Complete setup instructions
  • ✓ Customisation guide

When You Need Custom Solutions
This dashboard template is designed for general task tracking, but every business has unique requirements. If you need:
  • Integration with external systems (CRM, databases, web APIs)
  • Custom calculations specific to your industry
  • Multi-workbook consolidation
  • Advanced reporting with PowerQuery integration
  • Specialised automation beyond standard task tracking

Our VBA Code Generator can create tailored solutions that match your exact workflow. Describe what you need, and get production-ready VBA code in seconds.

Related Resources

Have you built a similar dashboard? What challenges did you face? Share your experience in the comments below or get in touch—we'd love to hear how you're using VBA automation in your business.

🚀 Want More VBA Tips Like This?

Join 1,000+ Excel professionals getting weekly VBA tutorials, free code templates, and automation strategies delivered to their inbox.

Free forever
No spam, ever
Unsubscribe anytime

Or generate VBA code instantly:

Try vbacode.io