I would use the Power Query Add-In for this. From Excel 2016, Power Query is built in to the Data ribbon under "Get and Transform" section.
Power Query can start from an existing Excel Table. I would start with a Split step on Column B using semi-colon. A crucial trick is to open the "Advanced" section on the "Split Column by Delimiter" page and enter a larger number for: "Number of columns to split into". It will default to the minimum needed for your current data e.g. 3. You can enter a larger number e.g. 100 to accommodate future data requirements.
Then I would choose Column A and use the "Unpivot Columns / Unpivot other columns" command to bring all the split columns back into one column, on multiple rows. Finally I would use the Split command again on the generated "Value" column, splitting using colon.
A Query result can be delivered as an Excel Table.
You would probably add a few steps to remove unwanted columns and rename columns. You can build this without writing any macro or function code - you just click around in the Power Query window.
I built a working solution which you can download from my OneDrive and try out:
http://1drv.ms/1AzPAZp
It's the file: Power Query demo - Dynamically splitting a column and unpivoting into rows