Консультация № 88048
22.05.2007, 12:56
0.00 руб.
0 1 1
Доброго времени суток.
Пытаюсь создать макрос импорта текстового файла и его обработки. А проблема в седующем. В файле есть числа в виде 46.005 (т.е. разделитель целой части и дроби точка). Кроме того в ячейке присутствуют пробелы. После форматирования ячеек как <i> Selection.NumberFormat = "_(* #,##0,00_);_(* (#,##0,00);_(* ""-""??_);_(@_)" </i>, замены точки на запятую и убирания лишних пробелов число принимает вид "46005" а должно "46,01" (т.е. теряются еще и ноли после запятой). Причем это происходит не со всеми числами, например "36.450" спокойно преобразуется в "36,45"
Как бы от этого избавиться и затавить Эксель открывать данные так, как нужно.
Решение сменить в настройка разделитель на точку не подходит. Нужна именно запятая.

Обсуждение

Неизвестный
22.05.2007, 19:38
общий
это ответ
Здравствуйте, Другов-Кручинский Владимир Валерьевич!
Посмотрите приложенный код, с его помощью я решал проблемы подобные Вашей.
Евгений.

Приложение:
Sub ConvertToNumber() Dim iR As Integer, vData, s, iLen As Integer, sF, iC As Integer, oCol As Object Set oCol = Application.InputBox("Укажите столбец в котором" & vbCrLf & _ "необходимо преобразовать текст в число:", , , , , , , 8) iC = oCol.Column Application.ScreenUpdating = False For iR = 1 To ActiveSheet.UsedRange.Rows.Count vData = Trim(Cells(iR, iC).Value) If vData <> "" Then sF = "" For iLen = 1 To Len(vData) s = Mid(vData, iLen, 1) If IsNumeric(s) Or s = "," Then sF = sF & s End If Next With Cells(iR, iC) If IsNumeric(sF) And sF <> "" Then .Value = 0 .NumberFormat = "General" .Formula = CDbl(sF) End If End With End If Next iREnd Sub
Форма ответа