Макрос Excel для изменения формата ячейки на валюту

У меня есть файл, в котором столбец заполнен числами, а во втором столбце есть соответствующая валюта каждого числа. У меня USD, EUR, CHF, and GBP.

Я хочу создать макрос, который будет форматировать числовой столбец из числа в валюту, а затем применять валюту из второго столбца.

Хитрость заключается в том, что я хочу, чтобы в числовом столбце все еще были числа, так как число может быть добавлено или вычтено. Таким образом, я не хочу простого соединения двух столбцов, потому что это сделает поля текстовыми и не сможет использоваться в математических уравнениях.

Помогите, если знаете как.

Благодарю вас!


person Irina    schedule 14.11.2012    source источник
comment
Разве вы не можете просто отформатировать ячейки столбца как валюту и установить тип валюты?   -  person Marc    schedule 14.11.2012
comment
Я могу, но проблема в том, что у меня МНОГО строк, и просмотр каждой из них и выбор правильной валюты (поскольку есть 4 валюты на выбор) займет некоторое время. Вот почему я хочу написать макрос, который сделает это за меня... если я смогу   -  person Irina    schedule 14.11.2012
comment
Пробовали ли вы записывать макрос при установке одного из пользовательских форматов? Вы должны быть в состоянии использовать это, чтобы начать.   -  person Tim Williams    schedule 14.11.2012
comment
Это поможет начать, но я хочу, чтобы компьютер распознавал валюту и устанавливал ее таким образом. Если я напишу макрос, чтобы установить формат в валюте, по умолчанию он будет в долларах США, и у меня есть 3 другие валюты, а не только доллары США.   -  person Irina    schedule 14.11.2012


Ответы (1)


Я не уверен, что понимаю вашу точную проблему, но это примет все значения в столбце A и отформатирует их как валюту в столбце C на основе значения валюты в столбце B:

Sub Macro1()

Dim cl As Range

For Each cl In Intersect(ActiveSheet.Range("A:A"), ActiveSheet.UsedRange)
   cl.Offset(0, 2).Value = cl.Value
   Select Case cl.Offset(0, 1).Value
      Case "USD"
         cl.Offset(0, 2).NumberFormat = "$#,##0.00"
      Case "EUR"
         cl.Offset(0, 2).NumberFormat = "[$€-2] #,##0.00"
      Case "GBP"
         cl.Offset(0, 2).NumberFormat = "[$£-809]#,##0.00"
      Case "CHF"
         cl.Offset(0, 2).NumberFormat = "[$CHF] #,##0.00"
   End Select

Next cl

End Sub

Если вы хотите изменить типы валют, запишите макрос, в котором вы устанавливаете в ячейке правильную валюту, а затем скопируйте и вставьте этот числовой формат по мере необходимости.

person John Bustos    schedule 14.11.2012
comment
Для меня он продолжает использовать евро и европейский числовой формат (я голландец), хотя мой код определенно достигает cl.Offset(0, 2).NumberFormat = "$#,##0.00" - person RoXaS; 09.01.2014
comment
Проблема, похоже, в том, что это может отличаться в зависимости от локали вашей системы. Для мяса в евро, поэтому, чтобы изменить его на доллары, пришлось изменить его на cl.NumberFormat = "[$$-409]#,##0.00" Кроме этого, у меня есть проблема, что я не могу изменить $12.000,00 (это голландская запятая и десятичная точка) на $12,000.00 Может кто-нибудь помочь мне понять это вне. - person RoXaS; 09.01.2014