I have a data extension that gives me a user's currency, plus fields for the cost that look like this:

cost_USD | cost_EUR | cost_BRL

Here's what I have in my ampscript:

Set @partner_currency = partner_currency
Set @advertiser_email = advertiser_email
Set @variable_name = Concat('%%cost_',@partner_currency,'%%')

and within the body of the email:


This works perfectly to retrieve the data under the cost_xxx fields, which are all numbers. However, I need to format each number according to the country as well.

I'm trying to format them using %%=FormatNumber(@variable_name,"N2","en-US")=%% but of course since @variable_name needs the "TreatAsContent" to return the number and not the string name of the variable name, the formatting isn't working.

Is there a way around this?


Try storing the value returned by TreatAsContent in a temporary var

Set @partner_currency = partner_currency
Set @advertiser_email = advertiser_email
Set @variable_name = Concat('%%cost_',@partner_currency,'%%')
Set @Temp = TreatAsContent(@variable_name)

Then call FormatNumber function on it:


You can just place the FormatNumber around the TreatAsContent call.


Or inside of an AMPscript block:

   SET @cost = FormatNumber(TreatAsContent(@variable_name),"N2","en-US")

I also would recommend using the AttributeValue() function when returning your attributes/fields from the sendable data extension.


Set @partner_currency = AttributeValue("partner_currency")
Set @advertiser_email = AttributeValue("advertiser_email")
Set @variable_name = Concat('%%cost_',@partner_currency,'%%')

AttributeValue() allows for null returns and helps with error handling. I highly recommend it for all personalization strings.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.