EDIT:
You can use PowerQuery to convert the data into various reporting formats, including the format of your 3rd table in your post.
Create a query on the end result of my answer above, then do this:
Select Attendance and Remark, then use Transform>Any Column>Unpivot columns>Unpivot only selected columns:
You'll notice that this action removes any null cells. If you want to retain those, you'll need to fill them before using Unpivot. That can be done with Replace Values from null to whatever you prefer.
After unpivot, I have columns Attribute and Value. Now I want to select date.Dates and Attribute, right-click and use Merge Columns. I set the separator to " - " (you can use whatever you prefer of course) and I end up with a single column representing the date and the type of data it refers to (attendance or remark).
I then select this new merged column and use Transform>Any Column>Pivot column and configure it like this:
The end result is the format you were after. Again, if you want this report to contain all people whether or not their attendance has been entered or not, you'll need to set a dummy value in the Attendance column before using Unpivot.
This all may seem like going around the houses somewhat if you'll forgive the colloquialism. Generally speaking I'd encourage anyone to think about the ways this data is going to be used before settling on a solution. It's been my experience that having the data normalized to begin with (as I've proposed) and then building reports from that table is a more sustainable method and offers more flexibility.