How to loop through a table and set variables based on the existence (or not) of data in those tables?
Well. It's not pretty but it works. That improvements could be made on this is both certain and welcome.

{# Check to see if we've for got prices set, Set them if we do... #}

{% set priceDKK = entry.price[0].DKK ? entry.price[0].DKK : false %}
{% set priceEUR = entry.price[0].EUR ? entry.price[0].EUR : false %}
{% set priceUSD = entry.price[0].USD ? entry.price[0].USD : false %}

{# Figure out which price and rate we have to calc with... #}
{# Create our var before the loop (because scope)... #}

{% set basePrice = "" %}

{# We work down the list looking for our first set price #}
{# We will set it as our base price #}
{# We are going to convert all prices to DKK first #}

{% for price in entry.price %}
  {% if priceDKK %}
    {% set basePrice = priceDKK / rateDKK %}
  {% elseif priceEUR %}
    {% set basePrice = priceEUR / rateEUR %}
  {% elseif priceUSD %}
    {% set basePrice = priceUSD / rateUSD %}
  {% endif %}
{% endfor %}

{# Calculate prices if they don't exist... #}
{# We do not calc prices that were manually set... #}

{% for price in entry.price %}
  {% if not priceDKK %}
    {% set priceDKK = basePrice * rateDKK | round(-3,'ceil') %}
  {% endif %}

  {% if not priceEUR %}
    {% set priceEUR = (basePrice * rateEUR) | round(-3,'ceil') %}
  {% endif %}

  {% if not priceUSD %}
    {% set priceUSD = (basePrice * rateUSD) | round(-3,'ceil') %}
  {% endif %}
{% endfor %}

{# end #}