В продолжение темы: В примере в столбце А выгруженные числа из xml в текстовом виде. Необходимо, чтобы правильно работал иакрос преобразования к нормальным числам при любом системном разделителе (запятая или точка).Можно ли упростить приведенный макрос.
В продолжение темы: В примере в столбце А выгруженные числа из xml в текстовом виде. Необходимо, чтобы правильно работал иакрос преобразования к нормальным числам при любом системном разделителе (запятая или точка).Можно ли упростить приведенный макрос.Неопытный
Sub rep() With Range([a1], Cells(Rows.Count, 1).End(xlUp)) .NumberFormat = "0.00000" .Replace What:=".", Replacement:="." .Value = .Value End With End Sub
[/vba]
С умножением на единицу: [vba]
Код
Sub rep2() Application.ScreenUpdating = False On Error Resume Next With Range([a1], Cells(Rows.Count, 1).End(xlUp)) .NumberFormat = "0.0000" .Replace What:=".", Replacement:="." .Replace What:=",", Replacement:="." End With
For Each cell In Range([a1], Cells(Rows.Count, 1).End(xlUp)) If IsNumeric(cell.Value) Then cell.Value = cell.Value * 1 End If Next Application.ScreenUpdating = True End Sub
[/vba]
А вообще, на форуме было много подобных тем. Используйте поиск. Вот даже в готовых решениях есть тема. И вы там отписывались.
В вашем файле достаточно этого: [vba]
Код
Sub rep() With Range([a1], Cells(Rows.Count, 1).End(xlUp)) .NumberFormat = "0.00000" .Replace What:=".", Replacement:="." .Value = .Value End With End Sub
[/vba]
С умножением на единицу: [vba]
Код
Sub rep2() Application.ScreenUpdating = False On Error Resume Next With Range([a1], Cells(Rows.Count, 1).End(xlUp)) .NumberFormat = "0.0000" .Replace What:=".", Replacement:="." .Replace What:=",", Replacement:="." End With
For Each cell In Range([a1], Cells(Rows.Count, 1).End(xlUp)) If IsNumeric(cell.Value) Then cell.Value = cell.Value * 1 End If Next Application.ScreenUpdating = True End Sub
[/vba]
А вообще, на форуме было много подобных тем. Используйте поиск. Вот даже в готовых решениях есть тема. И вы там отписывались.SkyPro
skypro1111@gmail.com
Сообщение отредактировал SkyPro - Среда, 25.09.2013, 14:14
А вообще, на форуме было много подобных тем. Используйте поиск. Вот даже в готовых решениях есть тема. И вы там отписывались.
SkyPro!Спасибо. Оба Ваших макроса в данном случае дали правильный результат при любых системных разделителях (точка, запятая)
Смотрел ранее макросы Alex_ST http://www.excelworld.ru/forum/3-5329-1, но только второй. Про который он пишет, что он дает достоверный результат всегда,но для данного случая он дал неправильный результат. Сейчас посмотрел, оказалось, что в моем случае правильный результат дает первый макрос, о котором он пишет, что он не всегда дает правильный результат.
А вообще, на форуме было много подобных тем. Используйте поиск. Вот даже в готовых решениях есть тема. И вы там отписывались.
SkyPro!Спасибо. Оба Ваших макроса в данном случае дали правильный результат при любых системных разделителях (точка, запятая)
Смотрел ранее макросы Alex_ST http://www.excelworld.ru/forum/3-5329-1, но только второй. Про который он пишет, что он дает достоверный результат всегда,но для данного случая он дал неправильный результат. Сейчас посмотрел, оказалось, что в моем случае правильный результат дает первый макрос, о котором он пишет, что он не всегда дает правильный результат.Неопытный
Для такого формата чисел как в приложенном файле, правильно сработал второй макрос от SkyProс приведенный выше. Макрос, который я приводил в примере в сообщении 4, тоже правильно сработал. Оба макроса от Alex_ST сработали неправильно. Все пять упоминаемых макросов в прикрепленном примере.
Для такого формата чисел как в приложенном файле, правильно сработал второй макрос от SkyProс приведенный выше. Макрос, который я приводил в примере в сообщении 4, тоже правильно сработал. Оба макроса от Alex_ST сработали неправильно. Все пять упоминаемых макросов в прикрепленном примере.Неопытный
А для такого примера чисел как в приложенном файле в вариантах с разными системными разделителями, правильно сработал первый макрос от SkyPro приведенный выше,Первый макрос от Alex_ST и макрос из сообщения #4, остальные два неправильно.
А для такого примера чисел как в приложенном файле в вариантах с разными системными разделителями, правильно сработал первый макрос от SkyPro приведенный выше,Первый макрос от Alex_ST и макрос из сообщения #4, остальные два неправильно.Неопытный
Во всех трех файлах(сообщения #4,8 и 9) при любых разделителях правильно срабатывает только макрос из сообщения #4, только там перед строкой: arr(m, 1) = arr(m, 1) + 1 надо добавить пару строк: [vba]
Код
If arr(m, 1) = "" Then arr(m, 1) = 0 If IsNumeric(arr(m, 1)) = False Then MsgBox ("Это не число,в столбце А в строке " & m): Exit Sub
[/vba] чтобы не реагировал на пустую ячейку и когда в ячейке явно не число.
Во всех трех файлах(сообщения #4,8 и 9) при любых разделителях правильно срабатывает только макрос из сообщения #4, только там перед строкой: arr(m, 1) = arr(m, 1) + 1 надо добавить пару строк: [vba]
Код
If arr(m, 1) = "" Then arr(m, 1) = 0 If IsNumeric(arr(m, 1)) = False Then MsgBox ("Это не число,в столбце А в строке " & m): Exit Sub
[/vba] чтобы не реагировал на пустую ячейку и когда в ячейке явно не число.Неопытный
Все макросы, что есть в файлах не смотрел. Такой не подходит? [vba]
Код
Sub t() Dim rn(), i rn = Range(Cells(1, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 1)).Value For i = 1 To UBound(rn) rn(i, 1) = Val(Replace(rn(i, 1), ",", ".")) Next Cells(1, 2).Resize(UBound(rn)) = rn End Sub
[/vba]
Все макросы, что есть в файлах не смотрел. Такой не подходит? [vba]
Код
Sub t() Dim rn(), i rn = Range(Cells(1, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 1)).Value For i = 1 To UBound(rn) rn(i, 1) = Val(Replace(rn(i, 1), ",", ".")) Next Cells(1, 2).Resize(UBound(rn)) = rn End Sub