Matt, I am testing this out and I'm assuming I just have the xml incorrect but if you have both visio and project, for example, in the xml, though only visio in this case is installed, should it know that it should NOT install Project because it's not already there?
<Product ID="O365ProPlusRetail">
<Language ID="en-us" />
<Language ID="MatchPreviousMSI" />
<Language ID="MatchPreviousMSI" />
<ExcludeApp ID="Groove" />
<ExcludeApp ID="OneDrive" />
<ExcludeApp ID="Teams" />
</Product>
<Product ID="VisioStdXVolume" MSICondition="VisioStdRetail,VisioStdXVolume" PIDKEY="KEY">
<Language ID="en-us" />
<Language ID="MatchPreviousMSI" />
<Language ID="MatchPreviousMSI" />
<ExcludeApp ID="Groove" />
<ExcludeApp ID="OneDrive" />
<ExcludeApp ID="Teams" />
</Product>
<Product ID="ProjectStdXVolume" MSICondition="ProjectStdRetail,ProjectStdXVolume" PIDKEY="">
<Language ID="en-us" />
<Language ID="MatchPreviousMSI" />
<Language ID="MatchPreviousMSI" />
<ExcludeApp ID="Groove" />
<ExcludeApp ID="OneDrive" />
<ExcludeApp ID="Teams" />
</Product>
That snippet will remove Office Pro Plus 2016 and Visio 2016 and install O365 Pro Plus, Visio 2016, and Project 2016. I want to confirm I have it right.