PolarBearGG
@PolarBearGG
I know that I know nothing

Как автоматически изменить некорректные поля на числа?

Бывает что человек неправильно заполнил таблицу или спарсилось плохо и значение числовые показывает как текст в формате 1 123,32 и нужно много вручную менять на 1123.32 и т.д. Как можно автоматизировать этот процесс?
  • Вопрос задан
  • 54 просмотра
Решения вопроса 1
ну или макросом
Код надо вставить в новый модуль
Public Function SanitData(ByRef rng As Range) As Double
   Dim data As String
   Dim ret As Double
   
   data = SanitizeNumbers(CStr(rng.Value))
   
   SanitData = IIf(Len(data) > 0, CDbl(data), 0)
End Function

Private Function SanitizeNumbers(ByVal data As String) As String
    Dim pos As Long
    Dim char As Long

    data = Replace(data, ".", ",")
    pos = 1
    Do While pos <= Len(data)
        char = Asc(mid$(data, pos, 1))
        If Not (Chr(char) Like "[0-9,]") Then
            data = Replace(data, Chr(char), "")
            pos = pos - 1
        End If
        pos = pos + 1
    Loop
    SanitizeNumbers = data
End Function


Вызов макроса на фото
5cb5b90a54c1c300558303.jpeg
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы