Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.09.2012, 09:23   #1
Ppaa
Форумчанин
 
Регистрация: 20.12.2010
Сообщений: 107
По умолчанию Автоматическое преобразование текста в число в столбцах

Здравствуйте!

В результате кривого импорта из одной системы в Excel получается таблица, в которой все числа преобразованы в текст, в результате ни одна формула не работает.

Можно ли в Excel 2007 преобразовать 2 рядом стоящих столбца чисел из текста в числа с помощью какой-либо функции или макроса, без использования ручного выделения столбцов?

Изменение формата ячеек в числовой не помогает.
Ppaa вне форума Ответить с цитированием
Старый 05.09.2012, 09:29   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Запишите рекордером процедуру выделения поочерёдно этих столбцов и "текст по столбцам - готово".
Будет без использования ручного выделения столбцов
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 05.09.2012, 10:40   #3
Ppaa
Форумчанин
 
Регистрация: 20.12.2010
Сообщений: 107
По умолчанию

Это я уже пробовал, но макрос записался неправильно.

Вместо выделения диапазона ячеек L15:M1654 (последний адрес всегда меняется)
почему-то выделился диапазон, указанный в тексте макроса
А вместо преобразования в текст - скроллинг.
Sub Ìàêðîñ3()
'
' Ìàêðîñ3 Ìàêðîñ
'
' Ñî÷åòàíèå êëàâèø: Ctrl+j
'
Range("L15:M15").Select
Range(Selection, Selection.End(xlDown)).Select
ActiveWindow.ScrollRow = 1645
ActiveWindow.ScrollRow = 1624
ActiveWindow.ScrollRow = 1557
ActiveWindow.ScrollRow = 1426
ActiveWindow.ScrollRow = 1220
ActiveWindow.ScrollRow = 885
ActiveWindow.ScrollRow = 633
ActiveWindow.ScrollRow = 413
ActiveWindow.ScrollRow = 170
ActiveWindow.ScrollRow = 68
ActiveWindow.ScrollRow = 28
ActiveWindow.ScrollRow = 1
End Sub
Ppaa вне форума Ответить с цитированием
Старый 05.09.2012, 10:43   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Я говорил "поочерёдно" - т.е. выделили один столбец, преобразовали, выделили второй - преобразовали...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 05.09.2012, 10:50   #5
Ppaa
Форумчанин
 
Регистрация: 20.12.2010
Сообщений: 107
По умолчанию

Аналогично, скроллинг, но не преобразование.

Sub Ìàêðîñ4()
'
' Ìàêðîñ4 Ìàêðîñ
'
' Ñî÷åòàíèå êëàâèø: Ctrl+k
'
Range(Selection, Selection.End(xlDown)).Select
ActiveWindow.ScrollRow = 1645
ActiveWindow.ScrollRow = 1624
ActiveWindow.ScrollRow = 1578
ActiveWindow.ScrollRow = 1399
ActiveWindow.ScrollRow = 1179
ActiveWindow.ScrollRow = 874
ActiveWindow.ScrollRow = 692
ActiveWindow.ScrollRow = 569
ActiveWindow.ScrollRow = 440
ActiveWindow.ScrollRow = 352
ActiveWindow.ScrollRow = 306
ActiveWindow.ScrollRow = 258
ActiveWindow.ScrollRow = 237
ActiveWindow.ScrollRow = 213
ActiveWindow.ScrollRow = 188
ActiveWindow.ScrollRow = 167
ActiveWindow.ScrollRow = 143
ActiveWindow.ScrollRow = 124
ActiveWindow.ScrollRow = 103
ActiveWindow.ScrollRow = 95
ActiveWindow.ScrollRow = 63
ActiveWindow.ScrollRow = 33
ActiveWindow.ScrollRow = 12
ActiveWindow.ScrollRow = 1
Range("M15").Select
Range(Selection, Selection.End(xlDown)).Select
ActiveWindow.ScrollRow = 1640
ActiveWindow.ScrollRow = 1602
ActiveWindow.ScrollRow = 1503
ActiveWindow.ScrollRow = 1348
ActiveWindow.ScrollRow = 1161
ActiveWindow.ScrollRow = 973
ActiveWindow.ScrollRow = 719
ActiveWindow.ScrollRow = 550
ActiveWindow.ScrollRow = 413
ActiveWindow.ScrollRow = 271
ActiveWindow.ScrollRow = 175
ActiveWindow.ScrollRow = 100
ActiveWindow.ScrollRow = 68
ActiveWindow.ScrollRow = 41
ActiveWindow.ScrollRow = 28
ActiveWindow.ScrollRow = 4
ActiveWindow.ScrollRow = 1
End Sub
Ppaa вне форума Ответить с цитированием
Старый 05.09.2012, 10:55   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Вот так нужно записывать:
Код:
Sub Macro2()
'
' Macro2 Macro
' Macro recorded 05.09.2012 by Hugo
'

'
    Columns("L:L").Select
    Selection.TextToColumns Destination:=Range("L1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(1, 1), TrailingMinusNumbers:=True
End Sub
Ну и думаю можно это преобразовать в такое:
Код:
Sub Macro3()
    Columns("M:M").TextToColumns
End Sub
Но не испытывал - не на чем...
P.S. Испытал - работает.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 06.09.2012, 11:39   #7
Ppaa
Форумчанин
 
Регистрация: 20.12.2010
Сообщений: 107
По умолчанию

Выяснилось, что в заголовке рабочей таблицы есть объединенные ячейки, поэтому с наскока она не работает.
Прикладываю пример. Преобразовывать нужно в диапазоне L1:M1654
Вложения
Тип файла: zip sample.zip (75.8 Кб, 29 просмотров)
Ppaa вне форума Ответить с цитированием
Старый 06.09.2012, 12:13   #8
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Ну и делайте тогда вручную - можно текст по столбцам, можно через спецвставку умножать на 1.

Или
Код:
Sub Macro3()
    Range("L15:L1654").TextToColumns
    Range("M15:M1654").TextToColumns
End Sub
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 06.09.2012 в 12:19.
Hugo121 вне форума Ответить с цитированием
Старый 06.09.2012, 12:58   #9
Ppaa
Форумчанин
 
Регистрация: 20.12.2010
Сообщений: 107
По умолчанию

Спасибо, работает!
Ppaa вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразование в число (Delphi) pinch000 Общие вопросы Delphi 3 25.04.2012 21:02
преобразование строки в число acronis2000 Общие вопросы C/C++ 19 04.06.2011 20:42
автоматическое изменение размер текста в label bbk_serg Компоненты Delphi 15 04.02.2011 00:46
Преобразование в число (Delphi) I.nessa Помощь студентам 14 14.12.2010 15:18
Преобразование строки символов в число. pa6kevi4 Общие вопросы C/C++ 2 15.09.2009 20:46