Intro
I'm trying to enhance a basic planning sheet (see below) with additional sorting.

The first column lists the resources. Each week has 2 columns representing 20 hours per column.
Example readout;
- In week 30 Aron works 40h on project A. In week 31 he works 20h on project A and 20h on project B.
- Jeff does not work in WK30 and works 40 on project C in WK31
My Goal
- Generate a unique list of projects over the weeks
- Be able to filter based on project name and get only the rows of the resources working on that project. (No specific need to filter out the other projects in the same row. So if I filter on project "A", I want to only see the rows of Aron and Dave)
What I have
Basically item 1 is covered as follows:
The 2nd column (Projects) is an array-formula generated by a VBA function (taken from here) that returns all unique items in a multi column range. The cell formula looks like this, where the second argument of UniqueItems() determines if we only return the number of unique items (TRUE) or a list of all unique values (FALSE).
=TRANSPOSE(UniqueItems($C$4:$H$6,FALSE))
What is missing
Item 2 of my goal list is missing. If I currently select the filter option for Projects (see screenshot)

and filter on Project A, then I only get row 5 and not also row 4.

How would I go about filtering this properly?
VBA code is allowed or pointers to which regular formula functions I should use. A complete different solution with the same results is also fine. I thought about pivot tables, but I think it cannot handle empty cells around the range which is common if there's no work for that resource.
The sheet used can be downloaded from here