Show only and merge the entries from multiple categories related to that entry
You can collect the id from the previous entry, then you can exclude id in the next query. 
For example like this :

 {% set subcategories = craft.categories.group('prodCat').descendantOf(prodCat).level(2).relatedto(entry) %}
 {% set listId = ['not', entry.id ] %} //get id from current page id.
        {% if subcategories | length %}
            {% for subcategory in subcategories %}
                {% set relatedentry = craft.entries.section('products').relatedTo(subcategories).id(listId).all() %}
                {% set relatedentry_count = relatedentry|length %}
                {% if relatedentry_count &gt; 0 %}
                &lt;div&gt;
                    &lt;h4&gt;Recommended Product&lt;/h4&gt;
                    &lt;ul&gt;
                        {% for entry in relatedentry %}
                        {% set listId = listId|merge([entry.id]) %} // append the id from current category to the array.
                        &lt;li&gt;{{entry.title}}&lt;/li&gt;
                        {% endfor %}
                    &lt;/ul&gt;
                &lt;/div&gt;
                {% endif %}
            {% endfor %}
        {% endif %}