У меня есть макрос в Excel, который пытается преобразовать текст в число (валюта) столбца.

Значения в ячейках - это текст, который выглядит так: «8 765,43 долларов США», цель - получить значение валюты, которое выглядит как «8,765,43 долларов США».

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

Столбцы ("Н: Н").Выбрать

Выбор.Заменить что:= "", Замена:= "", LookAt:= xlPart, _ SearchOrder:= xlByRows, MatchCase:= False, SearchFormat:= False, _ ReplaceFormat:= False

Selection.Replace What:="USD", Replacement:="", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False

    Selection.Replace What:=",", Replacement:="", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False

Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False

Selection.NumberFormat = "[$$-409]#,##0.00"

Все изменения сделаны правильно, за исключением того, что число выглядит следующим образом: 8.765,43, но не суммируется с другими числами и не является "валютой", пока я не войду в ячейку и не нажму клавишу "ENTER" в конце числа , затем он преобразуется в число, сумму взносов и появляется знак "$".

Спасибо,

2 ответа2

1

В «USD 8 765,43» между долларом США и номером есть пробел, который все еще будет в конце и запрещать Excel распознавать его как число.

Измените свою первую замену, чтобы удалить это также:

Выбор.Заменить на что:= "USD", Rep ...

0

Попробуйте умножить каждую ячейку в вашем выборе на 1. Это заставляет Excel пересчитывать и применять форматы:

Dim cell As Range 
For Each cell In Selection 
If Not IsError(cell) Then cell = val(cell) * 1 
Next cell

Поместите этот кусок кода сразу после вашего

Выбор.NumberFormat = "[$$ - 409] #, ## 0,00"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .