2015-03-12 2 views
0

Моя проблема: Преобразование диапазона Excel из валютного формата (USD) в другое (EUR) и наоборот.Конвертация валютного формата

формат USD в Excel выглядит как 123,456.00
EUR формат в Excel выглядит как 123 456,00

где в значениях USD запятая является разделителем тысяч и . является десятичной точкой и в EUR дорожит пространство разделитель тысяч и запятая , - это десятичная точка.

Я пробовал кодирование в VBA, но я новичок в этой области.

Любая помощь в создании макроса VBA для использования в таблицах Excel?

+0

Моя ошибка, вместо этого тег VBA. Извините за это Dark Side –

+0

Являются ли эти числовые значения? Значения всегда одинаковые - '123456' независимо от того, что вы делаете. Это форматирование ячейки делает их похожими. – Taosique

ответ

0

Этот UDF выполнит эту работу. Копировать и вставить в модуль:

Function ConvertUSDToEUR(Amount As Range) As String 
Dim TempStr As String: TempStr = Amount.Value 
TempStr = Replace(TempStr, ",", " ") 
TempStr = Replace(TempStr, ".", ",") 
ConvertUSDToEUR = TempStr 
End Function 

Выход:

enter image description here

+0

Извините. Не работает. –

+0

@DarkSide работает отлично, просто скопируйте и вставьте функцию в модуль –

0

При значении в A1, В В1 входят:

=TEXT(A1,"#,##0.00") 

и в C1 введите:

=SUBSTITUTE(SUBSTITUTE(B1,","," "),".",",") 

Например:

enter image description here

Примечание:

Также можно преобразовать значения "на месте", но это потребует VBA.

EDIT # 1:

Вот два макроса, которые изменят форматирование "на месте". Таким образом, результаты все равно будут числами, но внешний вид изменится.Скажем, у нас есть список чисел(не формулы):

enter image description here

Выбрать значения и запустить этот макрос:

Sub MakeUS() 
    Dim r As Range 
    For Each r In Selection 
     r.NumberFormat = "#,##0.00" 
    Next r 
End Sub 

производить:

enter image description here

и этот макрос:

Sub MakeEUR() 
    Dim r As Range, v1 As String, v2 As String, DQ As String 
    DQ = Chr(34) 
    For Each r In Selection 
     v1 = Format(r.Value, "#,##0.00") 
     v2 = Replace(Replace(v1, ",", " "), ".", ",") 
     r.NumberFormat = DQ & v2 & DQ & ";;;" 
    Next r 
End Sub 

производить:

enter image description here

Если столбец содержал формулы, подход будет несколько иным.

+0

Вот что я ищу. –

+0

@DarkSide Посмотреть мой ** ИЗМЕНИТЬ # 1 ** –

+0

Привет, Гари. Он отлично работает, если моя система Windows настроена на английском (США). Но поскольку моя система Windows настроена с евро, она не работает. Кстати, каковы проблемы с формулами? Спасибо, что помогли мне. Dark Side –

Смежные вопросы