Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Преобразовать в число - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Преобразовать в число (Макросы Sub)
Преобразовать в число
kazako1 Дата: Среда, 25.09.2013, 09:59 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
В ячейке число сохранено как текст. Чтоб ошибку исправить нужно его "преобразовать в число". Как это можно сделать с помощью макросов?
 
Ответить
СообщениеВ ячейке число сохранено как текст. Чтоб ошибку исправить нужно его "преобразовать в число". Как это можно сделать с помощью макросов?

Автор - kazako1
Дата добавления - 25.09.2013 в 09:59
kazako1 Дата: Среда, 25.09.2013, 10:03 | Сообщение № 2
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
проблема решена функцией ЗНАЧЕН
 
Ответить
Сообщениепроблема решена функцией ЗНАЧЕН

Автор - kazako1
Дата добавления - 25.09.2013 в 10:03
KuklP Дата: Среда, 25.09.2013, 12:44 | Сообщение № 3
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
А поиском бы воспользовались, или пример выложили бы, глядишь - и на месте все сделало бы. Но... дело Ваше. Раз устраивает - пользуйтесь.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеА поиском бы воспользовались, или пример выложили бы, глядишь - и на месте все сделало бы. Но... дело Ваше. Раз устраивает - пользуйтесь.

Автор - KuklP
Дата добавления - 25.09.2013 в 12:44
Неопытный Дата: Среда, 25.09.2013, 13:05 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
В продолжение темы: В примере в столбце А выгруженные числа из xml в текстовом виде. Необходимо, чтобы правильно работал иакрос преобразования к нормальным числам при любом системном разделителе (запятая или точка).Можно ли упростить приведенный макрос.
К сообщению приложен файл: 1203728.rar (91.7 Kb)
 
Ответить
СообщениеВ продолжение темы: В примере в столбце А выгруженные числа из xml в текстовом виде. Необходимо, чтобы правильно работал иакрос преобразования к нормальным числам при любом системном разделителе (запятая или точка).Можно ли упростить приведенный макрос.

Автор - Неопытный
Дата добавления - 25.09.2013 в 13:05
SkyPro Дата: Среда, 25.09.2013, 14:02 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
В вашем файле достаточно этого:
[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]

А вообще, на форуме было много подобных тем. Используйте поиск.
Вот даже в готовых решениях есть тема.
И вы там отписывались.


skypro1111@gmail.com

Сообщение отредактировал SkyPro - Среда, 25.09.2013, 14:14
 
Ответить
СообщениеВ вашем файле достаточно этого:
[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
Дата добавления - 25.09.2013 в 14:02
Неопытный Дата: Среда, 25.09.2013, 14:38 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
А вообще, на форуме было много подобных тем. Используйте поиск.
Вот даже в готовых решениях есть тема.
И вы там отписывались.

SkyPro!Спасибо.
Оба Ваших макроса в данном случае дали правильный результат при любых системных разделителях (точка, запятая)

Смотрел ранее макросы Alex_ST http://www.excelworld.ru/forum/3-5329-1, но только второй. Про который он пишет, что он дает достоверный результат всегда,но для данного случая он дал неправильный результат. Сейчас посмотрел, оказалось, что в моем случае правильный результат дает первый макрос, о котором он пишет, что он не всегда дает правильный результат.
 
Ответить
Сообщение
А вообще, на форуме было много подобных тем. Используйте поиск.
Вот даже в готовых решениях есть тема.
И вы там отписывались.

SkyPro!Спасибо.
Оба Ваших макроса в данном случае дали правильный результат при любых системных разделителях (точка, запятая)

Смотрел ранее макросы Alex_ST http://www.excelworld.ru/forum/3-5329-1, но только второй. Про который он пишет, что он дает достоверный результат всегда,но для данного случая он дал неправильный результат. Сейчас посмотрел, оказалось, что в моем случае правильный результат дает первый макрос, о котором он пишет, что он не всегда дает правильный результат.

Автор - Неопытный
Дата добавления - 25.09.2013 в 14:38
RAN Дата: Среда, 25.09.2013, 14:50 | Сообщение № 7
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
А вот такой файлик было бы любопытно глянуть.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеА вот такой файлик было бы любопытно глянуть.

Автор - RAN
Дата добавления - 25.09.2013 в 14:50
Неопытный Дата: Среда, 25.09.2013, 14:56 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Для такого формата чисел как в приложенном файле, правильно сработал второй макрос от SkyProс приведенный выше.
Макрос, который я приводил в примере в сообщении 4, тоже правильно сработал. Оба макроса от Alex_ST сработали неправильно.
Все пять упоминаемых макросов в прикрепленном примере.
К сообщению приложен файл: 9736172.rar (11.4 Kb)
 
Ответить
СообщениеДля такого формата чисел как в приложенном файле, правильно сработал второй макрос от SkyProс приведенный выше.
Макрос, который я приводил в примере в сообщении 4, тоже правильно сработал. Оба макроса от Alex_ST сработали неправильно.
Все пять упоминаемых макросов в прикрепленном примере.

Автор - Неопытный
Дата добавления - 25.09.2013 в 14:56
Неопытный Дата: Среда, 25.09.2013, 18:08 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
А для такого примера чисел как в приложенном файле в вариантах с разными системными разделителями, правильно сработал первый макрос от SkyPro приведенный выше,Первый макрос от Alex_ST и макрос из сообщения #4, остальные два неправильно.
К сообщению приложен файл: 0369940.rar (12.3 Kb)


Сообщение отредактировал Неопытный - Среда, 25.09.2013, 18:09
 
Ответить
СообщениеА для такого примера чисел как в приложенном файле в вариантах с разными системными разделителями, правильно сработал первый макрос от SkyPro приведенный выше,Первый макрос от Alex_ST и макрос из сообщения #4, остальные два неправильно.

Автор - Неопытный
Дата добавления - 25.09.2013 в 18:08
RAN Дата: Среда, 25.09.2013, 21:25 | Сообщение № 10
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
А интересный файлик
Пишу рекордером
[vba]
Код
Sub Макрос3()
      Range("B1:B7").Select
      Selection.Copy
      Range("A1:A7").Select
      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd, SkipBlanks _
          :=False, Transpose:=False
' или   
'    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd, SkipBlanks:= _
          False, Transpose:=False
End Sub
[/vba]
При записи все выполняется правильно.
Запускаю макрос - умножает на 1000.

При повторном запуске умножения не происходит.

В чем причина - не понятно.
Чудны дела твои...


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Среда, 25.09.2013, 21:27
 
Ответить
СообщениеА интересный файлик
Пишу рекордером
[vba]
Код
Sub Макрос3()
      Range("B1:B7").Select
      Selection.Copy
      Range("A1:A7").Select
      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd, SkipBlanks _
          :=False, Transpose:=False
' или   
'    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd, SkipBlanks:= _
          False, Transpose:=False
End Sub
[/vba]
При записи все выполняется правильно.
Запускаю макрос - умножает на 1000.

При повторном запуске умножения не происходит.

В чем причина - не понятно.
Чудны дела твои...

Автор - RAN
Дата добавления - 25.09.2013 в 21:25
Неопытный Дата: Среда, 25.09.2013, 21:41 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Во всех трех файлах(сообщения #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]
чтобы не реагировал на пустую ячейку и когда в ячейке явно не число.

Автор - Неопытный
Дата добавления - 25.09.2013 в 21:41
RAN Дата: Пятница, 04.10.2013, 20:32 | Сообщение № 12
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
решил поднять тему.
Может кто прокомментирует проблему?


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщениерешил поднять тему.
Может кто прокомментирует проблему?

Автор - RAN
Дата добавления - 04.10.2013 в 20:32
Michael_S Дата: Пятница, 04.10.2013, 22:28 | Сообщение № 13
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
Все макросы, что есть в файлах не смотрел. Такой не подходит?
[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
[/vba]

Автор - Michael_S
Дата добавления - 04.10.2013 в 22:28
RAN Дата: Пятница, 04.10.2013, 22:49 | Сообщение № 14
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Миш, меня интересует не макрос, а мой пост 10..


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеМиш, меня интересует не макрос, а мой пост 10..

Автор - RAN
Дата добавления - 04.10.2013 в 22:49
Serge_007 Дата: Пятница, 04.10.2013, 23:16 | Сообщение № 15
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Запускаю макрос - умножает на 1000.
Андрей, это ты о чём? В коде нет умножения на 1000


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Запускаю макрос - умножает на 1000.
Андрей, это ты о чём? В коде нет умножения на 1000

Автор - Serge_007
Дата добавления - 04.10.2013 в 23:16
RAN Дата: Пятница, 04.10.2013, 23:18 | Сообщение № 16
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
В коде нет, в файле - есть.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеВ коде нет, в файле - есть.

Автор - RAN
Дата добавления - 04.10.2013 в 23:18
Serge_007 Дата: Пятница, 04.10.2013, 23:23 | Сообщение № 17
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
В каком?


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеВ каком?

Автор - Serge_007
Дата добавления - 04.10.2013 в 23:23
RAN Дата: Пятница, 04.10.2013, 23:49 | Сообщение № 18
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Цитата
К сообщению приложен файл: 0369940.rar


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Пятница, 04.10.2013, 23:51
 
Ответить
Сообщение
Цитата
К сообщению приложен файл: 0369940.rar

Автор - RAN
Дата добавления - 04.10.2013 в 23:49
Serge_007 Дата: Суббота, 05.10.2013, 00:35 | Сообщение № 19
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Нифига в нем на 1000 тоже не умножается...


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеНифига в нем на 1000 тоже не умножается...

Автор - Serge_007
Дата добавления - 05.10.2013 в 00:35
RAN Дата: Суббота, 05.10.2013, 00:48 | Сообщение № 20
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Ошибочка вышла.
Цитата (Неопытный, 25.09.2013 в 14:56, в сообщении № 8)
К сообщению приложен файл: 9736172.rar(


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеОшибочка вышла.
Цитата (Неопытный, 25.09.2013 в 14:56, в сообщении № 8)
К сообщению приложен файл: 9736172.rar(

Автор - RAN
Дата добавления - 05.10.2013 в 00:48
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Преобразовать в число (Макросы Sub)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!