That value doesn't matter showing an error, in fact it's useful, since it occurs when there are no opportunity dates and so leads to the errors in column F which errors are not charted. Perfect.
Having opted to use BYROW, it's a pain to work with since it won't output data spilling into different numbers of cells for each row (it won't produce a jagged array), so I elected to make its output one cell per row by using TEXTJOIN, then used it again to put all the results into a single (virtual) cell, then later I used TEXTSPLIT to break that cell out into the individual dates in a single column. Untidy. Convoluted. Not good.
Well, I'm not going to go into lengthy explanations of each of the newish functions I've used; it took long enough to put them together in the first place!
In the attached, I've done some step by step columns in columns R:AQ, starting with the original lambda in cell P3. Hopefully this will break it down enough for you?
It's a delimiter I used to split and join text. I use a rare character (one that's unlikely to occur in the source data to avoid splitting things in the wrong place). It's a habit, and in this case didn't need it; it could've been just a space.