Страницы: 1 2 След.
RSS
Преобразование значение ячейки из текста в число
 
Здравствуйте уважаемые коллеги.  Помогите, пожалуйста, решить следующий вопрос:  
В таблице имеются числовые значения, представленные в текстовом виде. Эти данные необходимо   преобразовать в числовой формат.  
     
Cells(1, 1).Select  
Selection.NumberFormat = "0.00"  
 
Указанный код макроса меняет формат ячеек, но при дальнейшем использовании этих данных в свободной таблицы, расчет значений не производиться так как сами значения не преобразованы в числовой формат.    
Например: после выполнения выше указанного макроса, пока не нажмешь на преобразованную ячейку двойным кликом, данные не преобразовываются.
 
Если хотите именно макросом, сделайте так:  
 
With Cells(1, 1)  
.NumberFormat = "0.00"  
.value=.value*1  
End With
Редко но метко ...
 
Если без макроса, то вставляем 1 в ячейку, копируем, а потом спецвставкой, з параметром умножить и вся любовь.Очень полезная штука
 
{quote}{login=GIG_ant}{date=01.07.2011 04:59}{thema=}{post}  
 
With Cells(1, 1)  
.NumberFormat = "0.00"  
.value=.value*1  
End With  
 
 
Помогло! Как теперь сделать если не одну ячейку, а почти весь столбец.  
например:  
 
Range(Cells(2, col), Cells(lLastRow, col)).Select  
'col - определенный столбец  
'lLastRow- последняя заполненная ячейка  
 
{/post}{/quote}
 
Если без цикла, то спец.вставкой:  
With Range(Cells(2, col), Cells(iLastRow, col))  
.Copy  
.PasteSpecial Paste:=xlPasteValues  
.NumberFormat = "0.00"  
.Value = .Value  
End With
 
Доброго дня всем!  
Извините, за непрошеное ввмешательство, но мне єто тоже интересно.  
Если, например,  на базе вашего кода я пишу пользовательськую функцию  
 
Function Число()  
Dim objCell As Object  
For Each objCell In objRange  
With Range(Cells(2, col), Cells(iLastRow, col))  
.Copy  
.PasteSpecial Paste:=xlPasteValues  
.NumberFormat = "0.00"  
.Value = .Value  
End With  
 End If  
Next  
End Function  
 
Выдает ошибку значение.  
Что я не так сделал?  
С ув. Муля!
 
For Each objCell In objRange  
objRange - что это такое?
 
Это вообще не функция. Обзовите ее sub. Функция должна возвращать значение.
Я сам - дурнее всякого примера! ...
 
Ну обозвал  
Sub Число()  
Dim objCell As Object  
For Each objCell In objRange  
With Range(Cells(2, col), Cells(iLastRow, col))  
.Copy  
.PasteSpecial Paste:=xlPasteValues  
.NumberFormat = "0.00"  
.Value = .Value  
End With  
 End If  
Next  
End Sub  
 
Все равно не работает.  
Ругается на строке End If  
 
С ув. Муля!
 
{quote}{login=RAN}{date=02.07.2011 12:59}{thema=}{post}For Each objCell In objRange  
objRange - что это такое?{/post}{/quote}  
Я так понимаю что єто обект  
С ув. Муля!, который мне надо преобразовать в число
 
>> Все равно не работает.  
Правильно не работает. У Вас там куча необъявленых переменных к-рым не присвоено никаких значений, End If без If и вообще все это бессмыслица. Попробуйте так:  
Sub Число()  
   Dim c As Range, iLastRow&, col&  
   col = 2: iLastRow = 100  
   For Each c In Range(Cells(2, col), Cells(iLastRow, col))  
       c.Copy  
       c.PasteSpecial Paste:=xlPasteValues  
       c.NumberFormat = "0.00"  
       c.Value = c.Value  
   Next  
End Sub
Я сам - дурнее всякого примера! ...
 
Ув. KukLP!  
К сожалению не работает и ваш макрос.  
А вообще, то меня интересует пользоваиельськая функция на эту тему.
 
A каким образом не работает макрос KukLP?  
Т.е. что, по вашему он должен делать, и как вы его запускаете?  
И что значит пользовательская функция на эту тему?
 
Прочитал сообщение Мули, посмотрел на код Сергея - с кодом всё в порядке. Не поленился проверить - <STRONG>работает</STRONG>. Муля, Вы в следующий раз пишите лучше так: "У МЕНЯ не работает" с указанием ЧТО именно не сработало: не запустился макрос, вместо чисел написал в ячейки нецензурное слово, выдал ошибку и выключил компьютер... <BR>Скорее всего Вы его просто не запустили.
 
{quote}{login=Юрий М}{date=02.07.2011 04:09}{thema=}{post}Скорее всего Вы его просто не запустили.{/post}{/quote}:-)  
Муля, выложите кусок таблицы, где не работает(правила). Может все проще. Тот перебор, что у Вас - самый неэффективный метод. Глядишь и функцию поможем сделать. А так как Вы, надергать строк из разных макросов, не понимая что они значат...  
Пользуйтесь, пока выходные, планетянам скучно:-)
Я сам - дурнее всякого примера! ...
 
Хлопцы! Простите меня дурака, п-та!!!  
Я то своейдурной головой, думал что он должен,например, слово "один", превращать в цифру "1". А он оказывается текстовый форматЮ меняет на числовой.
 
Мда... Про сумму прописью знаем, а сумму из прописи...:-)
Я сам - дурнее всякого примера! ...
 
{quote}{login=KukLP}{date=02.07.2011 05:06}{thema=}{post}Мда... Про сумму прописью знаем, а сумму из прописи...:-){/post}{/quote}  
Сергей привет, если задаться целью  сделать такой код, то его сделать можно.  
если есть логика , как говориться "туда", значит есть и оттуда.
Спасибо
 
{quote}{login=Муля}{date=02.07.2011 01:24}{thema=}{post}Ну обозвал  
Sub Число()  
Dim objCell As Object  
For Each objCell In objRange{/post}{/quote}стиль объявления переменных прям как мой ^_^    
Как в школе учили)
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
{quote}{login=R Dmitry}{date=02.07.2011 06:40}{thema=Re: }{post}{quote}{login=KukLP}{date=02.07.2011 05:06}{thema=}{post}Мда... Про сумму прописью знаем, а сумму из прописи...:-){/post}{/quote}  
Сергей привет, если задаться целью  сделать такой код, то его сделать можно.  
если есть логика , как говориться "туда", значит есть и оттуда.{/post}{/quote}Да я не о том. Не проще ли набрать число, чем текст с последующим преобразованием его в число. Как-то в жизни не встречалось.
Я сам - дурнее всякого примера! ...
 
{quote}{login=KukLP}{date=02.07.2011 09:03}{thema=Re: Re: }{post}{quote}{login=R Dmitry}{date=02.07.2011 06:40}{thema=Re: }{post}{quote}{login=KukLP}{date=02.07.2011 05:06}{thema=}{post}Мда... Про сумму прописью знаем, а сумму из прописи...:-){/post}{/quote}  
Сергей привет, если задаться целью  сделать такой код, то его сделать можно.  
если есть логика , как говориться "туда", значит есть и оттуда.{/post}{/quote}Да я не о том. Не проще ли набрать число, чем текст с последующим преобразованием его в число. Как-то в жизни не встречалось.{/post}{/quote}  
 
Ну не знаю как у Муля, но в жизни все может  быть, иногда в различных "экспортах" из различных программ встречается и не такое :)  
 
хотя такого честно не встречал ни разу :)
Спасибо
 
Самый простой пример, где это пригодится.  
У ведомости начисления зарплаты месяц словом, а вот у сводной - желательно цифрами.  
У всевозможных отчетах. В одном месте месяц словом, а в другоя цифрами. Анализ деятельности и так далее.  
Но если такая трансформация очень сложная, то не надо надрываться. Придумаю че нитьдр.  
 
С ув. Муля!
 
я вижу это как-то так...  
 
внимание - заготовка, чисто для примеру. ограничено целыми числами от 1 до 999999 и нет проверок на ошибки.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Здраствуйте ПЛАНЕТЯНЕ!  
Ув. ikki! \Великолепная штука. А если бы с милионами и назваными вами проверками, было бы гениальною  
Большое спасибо!!!  
гениально
 
{quote}{login=Муля}{date=02.07.2011 10:50}{thema=}{post}Самый простой пример, где это пригодится. У ведомости начисления зарплаты месяц словом, а вот у сводной - желательно цифрами. <...> В одном месте месяц словом, а в другоя цифрами.{/post}{/quote}  
Просто нужно нормально вводить данные: месяц в виде ДАТЫ, а отображать его в нужном виде уже форматированием. Тогда не потребуются вот такие выкрутасы. Лечите причину, а не следствие.
 
{quote}{login=ikki}{date=03.07.2011 12:02}{thema=было скучно :)}{post}я вижу это как-то так...  
 
внимание - заготовка, чисто для примеру. ограничено целыми числами от 1 до 999999 и нет проверок на ошибки.{/post}{/quote}  
Добавил миллионы и миллиарды на базе файла Александра (ikki), проверку на ошибки не делал
 
{quote}{login=Муля}{date=03.07.2011 12:18}{thema=}{post}Здраствуйте ПЛАНЕТЯНЕ!  
Ув. ikki! \Великолепная штука. А если бы с милионами и назваными вами проверками, было бы гениальною  
Большое спасибо!!!  
гениально{/post}{/quote}  
 
ну вот Вам и домашнее задание - доработать макрос :)  
 
если более серьёзно - то всё-таки не вижу я в такой задаче практического смысла.  
а для "от нечего делать" - предполагаемая реализация довольно муторная (например, надо корректно обрабатывать варианты, когда есть миллины, но нет тысяч; кроме того, надо отслеживать "уровни" чисел-строк - т.е. чтобы макрос понимал, что "пятьсот пять" - это правильно, а "пять пятьсот" - неправильно...)  
 
короче - ну её нафиг, такую задачку.  
сорри.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
{quote}{login=MCH}{date=03.07.2011 12:53}{thema=Re: было скучно :)}{post}  
Добавил миллионы и миллиарды на базе файла Александра (ikki), проверку на ошибки не делал{/post}{/quote}  
 
вот как...    
отличный вариант  
честно говоря, про рекурсию я забыл начисто :(
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Чуток сократил код: UDF - пропись2число2()
 
{quote}{login=MCH}{date=03.07.2011 01:16}{thema=}{post}Чуток сократил код: UDF - пропись2число2(){/post}{/quote}  
Можно (нужно) еще добавить Option Compare Text
Страницы: 1 2 След.
Читают тему
Наверх