How to create flexible number of columns in a Views table display?
To my knowledge you can't do this with (only) the Views module. But your question seems like a variation of something related to processing log messages. Digesting these messages is quite a challenge. That's why I've come up with my own "custom" report, as illustrated in this screenprint:



Within the "Report Execution Parameters" (collapsed in the screenprint above), I specify the search criteria of the log messages to be retrieved (like severity, User name, etc). And the red numbers are hyperlinks to get a drill down report of the specific messages for which I wanted more details (= to display the actual watchdog entries).

Some more details about the above table (to explain why it is similar to your question):


Think of the columns (with headers starting with "Msg Type:...") as your "Title XX". While each row (= different message) is like your User "1", "2", "3".
If there wouldn't have been any errors with (say) "Msg Type: Ajax" or  "Msg Type: page not found", then the corresponding column wouldn't have been created.
The red numbers (hyperlinks) are aggregated data, which in your case would correspond to commentXY (blank cells in your case would indicate that there is no such comment for user X and title Y). 
Some columns (like "Msg Type: Error" or "Msg type: PHP") contain a value for multiple rows.


Refer to my answer to "How to gets analyts and generate visual reports from sessions?" for more details about creating reports (tabular displays) as in the above screenprint.

In case you wonder "How did you do that?" (without checking out my answer in the above link): There's a module for it ... it's called Forena ... And the clue in this specific case is to use Forena to create a "Crosstab table".

Disclosure: I'm a co-maintainer of the Forena module.