Страницы: 1
RSS
Поменять текст в ячейках на числа макросом.
 
Добрый день, форумчане!

Суть такова - из некой АСУ выгружаются данные, вроде как в эксель и формат xls.
Однако, несмотря на то, что формат ячейки стоит именно числовой, все цифры на самом деле текст, и сводная таблица их не считает. А если двойной клац по ячейке - то сразу эта ячейка числом становится.
Вопрос - как макросом подправить их, чтобы он превратились в числа?

Копи-спец. пасте не помогает, пробовал записать макрос - он вообще лепит формулу в ячейку с ее же значением.
 
Каждому столбцу - "текст по столбцам".
Записать в макрос.
Можно записать по одному столбцу, поставить в цикл по нужным столбцам.
 
Запишите в любую ячейку 1, скопируйте ее.
Выделите вашу таблицу, спецвставка - умножить
 
Вот например почти из-под "пера" рекордера:
Код
Sub tt()
    Dim cl As Range
    Application.ScreenUpdating = False
    For Each cl In ActiveSheet.UsedRange.Columns
    cl.TextToColumns Destination:=cl(1), DataType:=xlDelimited, _
                         TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
                         Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
                                                                                     :=Array(1, 1), TrailingMinusNumbers:=True
    Next
    Application.ScreenUpdating = True
End Sub

Если мешают нули - можно добавить в код смену формата.

Даже так крч:
Код
Sub tt()
    Dim cl As Range
    Application.ScreenUpdating = False
    For Each cl In ActiveSheet.UsedRange.Columns: cl.TextToColumns: Next
    Application.ScreenUpdating = True
End Sub
Изменено: Hugo - 16.04.2013 18:13:51
 
Можно так:
Код
activesheet.usedrange.formula=activesheet.usedrange.formula
В примере нет ни одного дробного числа. Если дробные числа выгружаются с десятичным разделителем запятая, в левой части надо написать .formulaLocal
 
Сколько ответов-то! Спасибо всем!!!

Писал вчера с работы, только вот прочитал. Применил последнее, просто и работает! Дробных у меня нет в принципе. А что означает вообще данное выражение? Правая и левая часть равенства совершенно ведь одинаковы!?
 
Код
Range("A2:V30").Value = Range("A2:V30").Value
 ;)
 
Цитата
CTR пишет:
А что означает вообще данное выражение?
Можно сказать, что в каждую ячейку повторно вводится формула, которая там уже есть. Как будто двойной клац по ячейке. То есть если ячейка имеет числовой или Общий формат, а формула является текстовым представлением числа, то в ячейке получается число.
 
А, вот теперь понятно!  :)  
Еще раз всем спасиб!
 
Попробуй нужные ячейки на 1 умножить, и будут тебе числа вместо текста)
 
Александр Симонов, Вы знакомы с автором?
Страницы: 1
Читают тему
Наверх