Страницы: Пред. 1 2
RSS
При извлечении числа из текста съедается запятая в дробной части
 
Не о символах писать надо. В тексте перед значением, похожим на число, куча пробелов и после него еще текст.
Костыль:
Код
Sub Txt_to_Digital2()
    Dim sText As String
    Dim i As Long
     
    For i = 1 To 8
        sText = Application.Trim$(Cells(i, 1).Value)
        sText = Split(sText, " ")(0)
        sText = Replace(sText, ",", ".")
        Cells(i, 10).Value = sText
        
        If Not IsNumeric(Cells(i, 10).Value) Then _
            Cells(i, 10).Value = Replace(sText, ".", ",")
    Next i
End Sub
 
Цитата
написал:
Не о символах писать надо. В тексте перед значением, похожим на число, куча пробелов и после него еще текст.
Еще раз подчеркиваю. Речь именно о символах! Я прекрасно знаю и умею разделять по пробелу. Здесь не тот случай!
 
Код из сообщения №31. Выводит на лист нужный результат. Найдите там упоминание о номере символа
 
Код
Sub Txt_to_DigitalBMV()
    Dim i As Long
    On Error Resume Next
    For i = 1 To 8
        T = Split(LTrim(Cells(i, 1)), "  ")(0)
        T1 = Replace(Replace(Replace(T, ".", ","), " ", ""), Chr(160), "")
        d = CDbl(T)
        If Err <> 0 Then
            Cells(i, 7).Value = T
            Err.Clear
        Else
            Cells(i, 7).Value = d
        End If
    Next i
    On Error GoTo 0
End Sub
По вопросам из тем форума, личку не читаю.
 
Цитата
написал:
Найдите там упоминание о номере символа
Вот именно. Он обязан там быть. А фрагментов " " быть не должно
 
Цитата
ixet написал: фрагментов " " быть не должно
Это о чем?

Макрос из №31 не выполняет то, что нужно?
 
ixet, Вы приводите пример данных и нужный результат, в ответ получаете код ,который обрабатывает данные и дает указанный результат , но с вашей точки зрения он работает некорректно. Резонный вопрос, вам шашечки или ехать?
По вопросам из тем форума, личку не читаю.
 
Цитата
написал:
в ответ получаете код ,который обрабатывает данные и дает указанный результат
Результат даёт и мой код. Вопрос был не в этом
 
Цитата
ixet написал: Вопрос был не в этом
! Интрига затягивается :)

Вы показали пример данных и пример результата.
Цитата
ixet написал: Все варианты, которые могут быть в столбце A, в файле приведены.
Показанные процедуры возвращают результат, совпадающий с Вашим. Что не так?
Если так важно брать текст именно между указанным номерами символов - ну, добавьте MID при получении текста в переменную. Проблема в чем?
 
Цитата
vikttur написал: Что не так?
Цитата
ixet написал: неужели нельзя сократить?
ixet,  можно но вам нужно коротко но не эффективно или нормально?
По вопросам из тем форума, личку не читаю.
 
Если коротко тогда наверно так
Код
Public Sub Txt_to_Digital1()
Dim XX, i&
Columns(2).NumberFormat = "General"
For i = 1 To 8
    XX = Trim(Mid(Cells(i, 1), 4, 12))
    If IsNumeric(XX) = True Then XX = CDbl(XX)
    Cells(i, 2) = XX
Next i
End Sub
 
Цитата
написал: Если коротко тогда наверно так
Спасибо, именно это и требовалось! Работает. Действительно, зачем я писал промежуточные результаты в ячейку, если можно обойтись переменной. И проблема была именно в этом: при записи в ячейку сбивались форматы.
Строка с NumberFormat похоже лишняя, и без нее работает.

Цитата
написал: Все варианты, которые могут быть в столбце A, в файле приведены.
Да, поймали на слове. Забыл про это сказать: крайне редко, но бывают строки, в которых два соседних поля слиты без разделяющего пробела
Изменено: ixet - 22.11.2021 07:19:24
 
Цитата
написал:
Игорь, я не знаю уже как объяснять.
не знаете как обьяснять - решайте сами, не пишите задач без условий задач. никто такую задачу не решит
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
написал:
не пишите задач без условий задач. никто такую задачу не решит
Евгений Смирнов задачу понял совершенно правильно, спасибо ему
 
и на 42 сообщении неожиданно
Цитата
ixet написал:
Забыл про это сказать: крайне редко, но бывают строки, в которых два соседних поля слиты без разделяющего пробела
А теперь внимание : вопрос, в теме, которая по названию должна решить преобразование числа записанного текстом в нормальное число, независимо от десятичного разделителя, не должно быть? ни то что нужно оставить текст не тронутым если там не число, ни метод нахождения числа в строке не разделенной на части ...

Если у вас четко N символов отводится под число, то просто LEFT без MID использовать
По вопросам из тем форума, личку не читаю.
Страницы: Пред. 1 2
Наверх