Преобразовать в число excel весь столбец vba

I have columns of numbers that, for whatever reason, are formatted as text. This prevents me from using arithmetic functions such as the subtotal function. What is the best way to convert these «text numbers» to true numbers?

Here is a screenshot of the specific issue:
Error

I’ve tried these snippets to no avail:

Columns(5).NumberFormat = "0"

and

 Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

Teamothy's user avatar

Teamothy

1,9903 gold badges15 silver badges24 bronze badges

asked Apr 21, 2016 at 13:41

aLearningLady's user avatar

aLearningLadyaLearningLady

1,9384 gold badges20 silver badges42 bronze badges

4

Use the below function (changing [E:E] to the appropriate range for your needs) to circumvent this issue (or change to any other format such as «mm/dd/yyyy»):

[E:E].Select
With Selection
    .NumberFormat = "General"
    .Value = .Value
End With

P.S. In my experience, this VBA solution works SIGNIFICANTLY faster on large data sets and is less likely to crash Excel than using the ‘warning box’ method.

answered Apr 21, 2016 at 13:41

aLearningLady's user avatar

aLearningLadyaLearningLady

1,9384 gold badges20 silver badges42 bronze badges

3

I had this problem earlier and this was my solution.

With Worksheets("Sheet1").Columns(5)
    .NumberFormat = "0"
    .Value = .Value
End With

answered Apr 21, 2016 at 15:20

BerticusMaximus's user avatar

0

This can be used to find all the numeric values (even those formatted as text) in a sheet and convert them to single (CSng function).

For Each r In Sheets("Sheet1").UsedRange.SpecialCells(xlCellTypeConstants)
    If IsNumeric(r) Then
       r.Value = CSng(r.Value)
       r.NumberFormat = "0.00"
    End If
Next

answered Sep 2, 2017 at 21:29

Jones's user avatar

JonesJones

1812 silver badges4 bronze badges

1

This converts all text in columns of an Excel Workbook to numbers.

Sub ConvertTextToNumbers()
Dim wBook As Workbook
Dim LastRow As Long, LastCol As Long
Dim Rangetemp As Range

'Enter here the path of your workbook
Set wBook = Workbooks.Open("yourWorkbook")
LastRow = Cells.Find(What:="*", After:=Range("A1"), SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
LastCol = Cells.Find(What:="*", After:=Range("A1"), SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column

For c = 1 To LastCol
Set Rangetemp = Cells(c).EntireColumn
Rangetemp.TextToColumns DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
    Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
    :=Array(1, 1), TrailingMinusNumbers:=True
Next c
End Sub

answered Jan 11, 2017 at 15:39

ConertVBA's user avatar

1

''Convert text to Number with ZERO Digits and Number convert ZERO Digits  

Sub ZERO_DIGIT()
 On Error Resume Next
 Dim rSelection As Range
 Set rSelection = rSelection
 rSelection.Select
 With Selection
  Selection.NumberFormat = "General"
  .Value = .Value
 End With
 rSelection.Select
  Selection.NumberFormat = "0"
 Set rSelection = Nothing
End Sub

''Convert text to Number with TWO Digits and Number convert TWO Digits  

Sub TWO_DIGIT()
 On Error Resume Next
 Dim rSelection As Range
 Set rSelection = rSelection
 rSelection.Select
 With Selection
  Selection.NumberFormat = "General"
  .Value = .Value
 End With
 rSelection.Select
  Selection.NumberFormat = "0.00"
 Set rSelection = Nothing
End Sub

''Convert text to Number with SIX Digits and Number convert SIX Digits  


Sub SIX_DIGIT()
 On Error Resume Next
 Dim rSelection As Range
 Set rSelection = rSelection
 rSelection.Select
 With Selection
  Selection.NumberFormat = "General"
  .Value = .Value
 End With
 rSelection.Select
  Selection.NumberFormat = "0.000000"
 Set rSelection = Nothing
End Sub



answered Mar 14, 2020 at 9:10

Mahesh S's user avatar

0

The solution that for me works is:

For Each xCell In Selection

  xCell.Value = CDec(xCell.Value)

Next xCell 

answered Feb 22, 2018 at 17:56

Camilo Vargas's user avatar

Using aLearningLady’s answer above, you can make your selection range dynamic by looking for the last row with data in it instead of just selecting the entire column.

The below code worked for me.

Dim lastrow as Integer

lastrow = Cells(Rows.Count, 2).End(xlUp).Row

Range("C2:C" & lastrow).Select
With Selection
    .NumberFormat = "General"
    .Value = .Value
End With

answered Feb 10, 2019 at 18:18

Mikey's user avatar

MikeyMikey

701 gold badge1 silver badge10 bronze badges

The solution that worked for me many times is:

Sub ConvertTextToNumber()

With Range("A1:CX500") 'you can change the range 
.NumberFormat = "General"
.Value = .Value 
End With

End Sub

answered Sep 23, 2021 at 19:03

Hakob TARPOSHYAN's user avatar

For large datasets a faster solution is required.

Making use of ‘Text to Columns’ functionality provides a fast solution.

Example based on column F, starting range at 25 to LastRow

Sub ConvTxt2Nr()

Dim SelectR As Range
Dim sht As Worksheet
Dim LastRow As Long

Set sht = ThisWorkbook.Sheets("DumpDB")

LastRow = sht.Cells(sht.Rows.Count, "F").End(xlUp).Row

Set SelectR = ThisWorkbook.Sheets("DumpDB").Range("F25:F" & LastRow)

SelectR.TextToColumns Destination:=Range("F25"), DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
    Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
    :=Array(1, 1), TrailingMinusNumbers:=True

End Sub

answered Jan 15, 2019 at 7:07

Louis's user avatar

LouisLouis

392 bronze badges

1

From the recorded macro one gets the code below; for a new application you just need to update selection and range:

Sub num()

Columns("B:B").Select
Selection.TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
    Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
    :=Array(1, 1), TrailingMinusNumbers:=True
End Sub

L.Dutch's user avatar

L.Dutch

9263 gold badges17 silver badges38 bronze badges

answered Dec 14, 2022 at 14:59

A Albuquerque's user avatar

I had problems making above codes work. To me multiplying with 1 did the trick:-)

    Cells(1, 1).Select
    Cells(1, 1) = ActiveCell * 1 

answered Dec 23, 2021 at 12:13

Jacob Hald's user avatar

Преобразование текста в число с помощью кода VBA Excel. Массовое преобразование чисел из текстового формата в числовой в заданном диапазоне.

Преобразование текста в число

Преобразование чисел, записанных как текст, в числовой формат осуществляется в VBA Excel с помощью функций преобразования типов данных. Числа в текстовом формате могут быть получены из:

  • ячеек рабочего листа с текстовым форматом;
  • элементов управления формы (TextBox, ListBox, ComboBox);
  • строковых переменных;
  • выражений, возвращающих число в виде текста;
  • текстового поля функции InputBox.

В большинстве случаев VBA Excel сам распознает текст как число без всяких преобразований:

Sub Primer1()

    Debug.Print 23.1254 * 5.2  ‘Результат: 120,25208

    Debug.Print «23,1254» * «5,2» ‘Результат: 120,25208

    Debug.Print TypeName(«23,1254») ‘Результат: String

    Debug.Print TypeName(CDbl(«23,1254»)) ‘Результат: Double

End Sub

Обратите внимание на разделитель дробной части.

Преобразование смешанной строки

Преобразование в число строки, в начале которой имеются цифры, а далее идут другие символы, осуществляется в VBA Excel с помощью функции Val. Из других символов распознается только точка (.) в качестве разделителя дробной части.

Sub Primer2()

    Debug.Print Val(«021.36abcde»)  ‘Результат: 21,36

    Debug.Print Format(Val(«021.36abcde»), «000.0»)  ‘Результат: 021,4

End Sub

Массовое преобразование чисел

Иногда требуется массовое преобразование чисел из текстового формата в числовой в заданном диапазоне рабочего листа.

Пример преобразования диапазона ячеек с текстовым форматом в общий формат и значений ячеек из строки в число на примере объекта Selection:

Sub Primer3()

Dim MyCell As Range

    Selection.NumberFormat = «General»

        For Each MyCell In Selection

            If IsNumeric(MyCell) Then MyCell = MyCell * 1

        Next

End Sub

Сначала выбранному диапазону присваивается общий формат ("General"). Но текстовые значения в ячейках еще не преобразовались в числа. Обходим циклом все ячейки диапазона, и, если текстовое значение ячейки можно интерпретировать как число, умножаем это значение на единицу. После этого текст будет преобразован в число.


Numeric values are defined by data types like integer or byte. These data types are used for optimizing the processing and memory allocation in Excel. In this guide, we’re going to show you how to convert string into number in Excel VBA.

Download Workbook

Data types in VBA

Like in some other programming languages, VBA uses data types to identify what variables it can store and how they are stored. Most of the data types in VBA define numeric values. Here is a brief list of numeric data types:

Data type Storage Range
Byte 1 byte 0 to 255
Integer 2 bytes -32,768 to 32,767
Long 4 bytes -2,147,483,648 to 2,147,483,647
Single 4 bytes -3.402823E38 to -1.401298E-45 for negative values; 1.401298E-45 to 3.402823E38 for positive values
Double 8 bytes -1.79769313486231E308 to-4.94065645841247E-324 for negative values; 4.94065645841247E-324 to 1.79769313486232E308 for positive values
LongLong 8 bytes

-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807

Valid on 64-bit platforms only.

Currency 8 bytes -922,337,203,685,477.5808 to 922,337,203,685,477.5807
Decimal 14 bytes +/-79,228,162,514,264,337,593,543,950,335 with no decimal point;
+/-7.9228162514264337593543950335 with 28 places to the right of the decimal

Since there are many numeric data types, there are many functions to convert a string into number in Excel VBA.

Functions to a convert string into number in Excel VBA

All conversion functions use the same syntax: Each requires a single string argument to convert into a number. For example:

Each function returns an error If the string argument either is not a numeric or is outside the range of the data type being converted.

CInt(«A») returns a type mismatch error, because the «A» is not a numeric value.

CByte(«1250») returns an overflow exception.

Function Return type Example
CByte Byte CByte(«65.75») returns 66
CCur Currency CCur(«$256,000.50») returns 256000.5
CDbl Double CDbl(128.239856 * 4.8 * 0.04) returns 24.622052352
CDec Decimal CDec(«15000000.5678») returns 15000000.5678
CInt Integer CInt(«1234.56») returns 1235
CLng Long CLng(«1,500,000.88») returns 15000001
CLngLng LongLong CLngLng(«1,250,500,000.88») returns 1250500001
CSng Single CSng(«5.67854») returns 5.67854

Bonus: Use IsNumeric function to verify value

To avoid type mismatch errors, you can use the IsNumeric function to check if the expression is numeric or not. The function returns Boolean value based on the expression. TRUE if the expression is numeric, FALSE otherwise.

Here is a sample function that can check the data first, and convert the it into an integer if it is numeric. If the argument is not a valid number, the function returns 0.

Function ConvertInt(arg As String) As Integer
 If IsNumeric(arg) Then ConvertInt = CInt(arg)
End Function
 

stevie4

Пользователь

Сообщений: 70
Регистрация: 11.01.2013

#1

22.07.2014 09:40:58

Здравствуйте!
При выгрузке информации из БД в Excel, у меня некоторые числовые данные выгружаются в текстовом формате, мне необходимо перевести в числовой. Вручную, выделив диапазон, а потом преобразовать в число VBA это действие макрорекодером не прописывает. Я нашел в интернете макрос, который производит данное действие. Но мне необходимо, чтобы макрос менял текст на число только в столбце A. Что нужно в коде поправить? Я если честно не могу понять, как он работает.

Код
Sub Repair_Value()   ' в выделенных ячейках исправить экспортированные как текст данные чтобы нормально опознались числа
    Dim rArea As Range
    On Error Resume Next
    ActiveWindow.RangeSelection.SpecialCells(xlCellTypeConstants).Select
    If Err Then Exit Sub
    With Application: .ScreenUpdating = False: .EnableEvents = False: .Calculation = xlManual: End With
    For Each rArea In Selection.Areas
    rArea.FormulaLocal = rArea.FormulaLocal
    Next rArea
    With Application: .ScreenUpdating = True: .EnableEvents = True: .Calculation = xlAutomatic: End With
End Sub

Спасибо.

 

JayBhagavan

Пользователь

Сообщений: 11833
Регистрация: 17.01.2014

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

#2

22.07.2014 09:48:02

Цитата
stevie4 пишет: в выделенных ячейках исправить экспортированные как текст данные чтобы нормально опознались числа

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

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

 

stevie4

Пользователь

Сообщений: 70
Регистрация: 11.01.2013

JayBhagavan

, я ступил. Спасибо большое :)

 

JeyCi

Пользователь

Сообщений: 3357
Регистрация: 27.11.2013

#4

22.07.2014 10:52:33

Цитата
stevie4 пишет: Вручную, выделив диапазон, а потом преобразовать в число VBA
Код
Sub kaz_111()
Dim cl As Range
For Each cl In Selection
If Not IsEmpty(cl) Then
cl = --cl
End If
Next
End Sub

как-то так я обычно делаю: выделяю диапазон ручками и прогоняю этот код… имхо
(авторские права не присваиваю — код вроде от Казанского… или по мотивам его строк)

p.s. а ваша фраза rArea.FormulaLocal = rArea.FormulaLocal ‘честно говоря для меня загадка…

Изменено: JeyCi22.07.2014 10:58:31

чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок — обратитесь к собеседнику на ВЫ — ответ на ваш вопрос получите — а остальное вас не касается (п.п.п. на форумах)

 

The_Prist

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#5

22.07.2014 13:32:45

Цитата
JeyCi пишет:
а ваша фраза rArea.FormulaLocal = rArea.FormulaLocal ‘честно говоря для меня загадка…

Это позволяет преобразовать текст в число не поячеечно, а диапазону сразу(в коде выше это области). Будет гораздо быстрее, чем прогонять каждую ячейку.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

Hugo

Пользователь

Сообщений: 23257
Регистрация: 22.12.2012

#6

22.07.2014 13:48:48

Запишите рекордером оперецию «текст по столбцам» этому столбцу — будет небольшой понятный макрос.
Который можо ещё сократить до

Код
Columns("A:A").TextToColumns 

Изменено: Hugo22.07.2014 13:51:21

 

Мотя

Пользователь

Сообщений: 3218
Регистрация: 25.12.2012

Возможно, Ваше ПО в «конфликте» с настройками EXCEL — использовать системные разделители (Язык и Региональные стандарты (Настройка региональных параметров (Числа))).
Полагаю, в ПО нет возможности изменить настройку системных разделителей.
Если экспорт из ПО в EXCEL — регламентная работа, имеет смысл попробовать изменить региональные настройки перед экспортом информации из ПО в EXCEL.
Возможно, эксперимент будет положительным.

 

Подскажите, а как преобразовать число в текст?
Нужен массив с этим результатом.

Спасибо

Изменено: MonsterBeer09.06.2016 11:27:30

Когда я ем,я глух и нем, хитер и быстр, и дьявольски умен.

 

The_Prist

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

Варианты выше в теме чем не устраивают?

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

The_Prist, нужны числа сохраненные как текст…

Когда я ем,я глух и нем, хитер и быстр, и дьявольски умен.

 

The_Prist

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#11

09.06.2016 11:52:35

а-а-а…что-то упустил. В общем случае как-то так:

Код
Sub ToText()
    Dim rr As Range, rc As Range, v
    On Error Resume Next
    Set rr = Selection.SpecialCells(xlCellTypeConstants)
    If rr Is Nothing Then
        MsgBox "В выделенных ячеек нет ячеек для преобразования", vbInformation, "www.excel-vba.ru"
        Exit Sub
    End If
    On Error GoTo 0
    Application.ScreenUpdating = 0
    For Each rc In rr.Cells
        v = rc.Value
        If IsNumeric(v) Then
            rc.Formula = "'" & rc.Formula
        End If
    Next
    Application.ScreenUpdating = 1
End Sub

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

Спасибо!

Когда я ем,я глух и нем, хитер и быстр, и дьявольски умен.

 

voice

Пользователь

Сообщений: 23
Регистрация: 24.06.2016

#13

08.12.2016 21:16:00

Подскажите, а если у меня есть макрос, выделяющий определенные столбцы, в которым нужно преобразовать текст в число, то как их объединить с вашим примером? Как я понял, нужно делать в два шага, а можно одним?

Код
Range("B3:C20000,E3:E20000,G3:G20000,I3:J20000,L3:L20000").Select
 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

#14

09.12.2016 01:23:57

Вопрос не по теме

Return to VBA Code Examples

You may be required to convert numbers stored as text to actual numbers in your VBA code. In this tutorial, we are going to go over the functions that you need to use to convert a string to an integer, long, double, decimal or currency data type (Click here to learn about converting numbers to strings)

Convert String to Integer

You can use the CInt or CLng function to convert a string to an integer. If the fraction is less than .5 the function will round down, if the fraction is greater than or equal to .5 the function will round up. The following code will convert a string to an integer:

MsgBox CInt("7.55")

The result is:
Using the CInt Function in VBA

The following code uses the CLng function to convert a string to an integer:

MsgBox CLng("13.5")

The result is:

Using the CLng Function in VBA

Note: You can use the CInt or CLng function to convert a string to an integer or long (respectively) data types. The Long Data type is the same as an integer data type except larger numbers are allowed. In the past, the distinction was required because of memory constraints. In modern programming, there’s no reason not to use the long data type since memory is no longer an issue. So it’s always better to use a long data type instead of an integer.

You can use the Immediate Window to see how the value would be processed if not converted to an integer:

Debug.Print "13.5" + "13.5"

Using the Immediate Window
Usually, the text will be stored as a variable and this variable will need to be converted to a number data type as shown in the code below:

Sub Using_Variables()

Dim valueOne As String
valueOne = 5
MsgBox CLng(valueOne) + CLng(valueOne)

End Sub

Convert String to Decimal

You can use the CDbl or CDec function to convert a string to a decimal. The following code would convert a string to a double data type:

MsgBox CDbl("9.1819")

The result is:

Converting a String to a Double Decimal Type

The following code would convert a string to a decimal data type:

MsgBox CDec("13.57") + CDec("13.4")

The result is:

Converting a string to a decimal data type in VBA

You can use the Immediate Window to see how the value would be processed if not converted to a double or decimal data type:

Debug.Print "13.57" + "13.4"

The result is:

Using Debug.Print to Display values

Note: The decimal data type can store larger numbers than the double data type, so it’s always advisable to use the decimal data type when you are uncertain.

Convert String to Currency

You can use the CCur function to convert a string to a currency. The following code would convert a string to a currency data type:

Range("A1").Value = CCur("18.5")

The result is:

Converting a String to the Currency Data Type

VBA Coding Made Easy

Stop searching for VBA code online. Learn more about AutoMacro — A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!
vba save as

Learn More!

I have to columns with exported numbers, which are stored as text.

enter image description here

I tried to convert those data to numbers with this code.

Sub FormatColumns()
 Columns(9).NumberFormat = "0"
 Columns(10).NumberFormat = "0"
End Sub

It has done the job correctly (or it seems so), but I am still not able to work with those data as with numbers, but Excel tell me, that it is stored as number.

enter image description here

But when I verify it via formula =ISTEXT(), it always shows me TRUE

Could you help me with it, please? All tutorials and advices, which I’ve found on Google was via Formating cells or =VALUE(), but VALUE fucntion doesnt work for me, it shows me #VALUE.

Thank you in advance!

asked Jun 29, 2017 at 13:46

Srpic's user avatar

1

Another solution is:

Sub Macro1()

    Range("A:A").Select 'Range of values you need converted

    For Each Cell In Selection
    Cell.Value = (Cell.Value * 1)
    Next

End Sub

A non-vba equivalent solution is to have a «1» entered in a cell, copy that cell, select the range you would like converted to numbers, right click and press Paste Special -> Multiply.

This will leave all values in that range as numbers without changing the format. Tested with ISTEXT.

Make sure your settings also match with commas replacing decimals otherwise it may continue to have issues.

answered Jun 29, 2017 at 13:59

Busse's user avatar

BusseBusse

8636 silver badges15 bronze badges

0

you must replace «,» ~~> «.»

Sub FormatColumns()
 With Columns("i:j")
    .Replace ",", "."
    .NumberFormat = "#,###.00"
 End With
End Sub

answered Jun 29, 2017 at 14:13

Dy.Lee's user avatar

Dy.LeeDy.Lee

7,4771 gold badge11 silver badges14 bronze badges

0

Check entire relevant region is set to Number format first.

Selection the relevant region and do a global replace of for nothing («space» to «leave empty»). Then depending upon your locale try a global replace of , to ..

Next enter 1 in a spare cell, copy that cell, select the entire relevant region and Paste Special, Option, Multiply.

If that does not work switch . back to , and repeat the Paste Special.

answered Jun 29, 2017 at 13:59

pnuts's user avatar

pnutspnuts

58k11 gold badges85 silver badges137 bronze badges

Its the comma, needs to be . so 405,90 = 405.90

answered Jun 29, 2017 at 14:01

Nathan_Sav's user avatar

Nathan_SavNathan_Sav

8,4562 gold badges13 silver badges20 bronze badges

Converting numbers stored as text to numbers via Macro

Sub macro() 
    Range("F:F").Select 'specify the range which suits your purpose
    With Selection 
        Selection.NumberFormat = "General" 
        .Value = .Value 
    End With 
End Sub 

answered Jun 29, 2017 at 13:53

Rick's user avatar

RickRick

195 bronze badges

1

Hilight the numbers you with to «fix» and run:

Sub fixNumbers()
    With Selection
        .NumberFormat = "General"
        .Value = .Value
    End With
End Sub

answered Jun 29, 2017 at 13:56

Gary's Student's user avatar

Gary’s StudentGary’s Student

95.3k9 gold badges58 silver badges98 bronze badges

1

Преобразование текста в число в vba

​Смотрите также​​ Проверил — работает.​
​ Sub​: Исправить формат экспортированных​, то это​ в диапазоне.​
​ Chr(160), «», 1,​ ‘чтобы код быстрее​
​ команду Специальная вставка.​ правда не в​ по умолчанию 9​
​ в ячейке в​ 1 To R.Columns.Count​Sub m() Dim​ можно распространить на​
​ все править ручками.​ за компьютером, отвечаете​countervector​Silenser1588​KuklP​
​ как текст чисел​ хоть и меняет​
​undefined7​

​ , vbBinaryCompare) temp​​ сработал, т.к. работать​
​ В группе Операция​ курсе…​ как я посмотрел​
​ текст)​ R.Cells(i, j).Value =​

​ i&, x As​​ еще 12 столбцов​
​dzug​
​ на вопросы, а​: Здраствуйте.​: не могли бы​

​: Да Саш, невнимателен​​Erdni​
​ формат ячейки на​:​
​ = Replace(temp, «,»,​ с VBA-массивами быстрее​

​ выбираю параметр умножить​​Если сохранять в​Hugo121​Попробовал записать макрос​
​ Val(R.Cells(i, j).Value) Next​ Double i =​
​ справа?​: Попробуйте вот так​ когда вы отдыхаете?Работаете​Спасибо за ответы​ Вы написать пример,​Мне на планете​: Спасибо! Проблема решена​ числовой, но выглядит​
​undefined7​ «.», 1, ,​ ‘в некоторых случаях,​ и нажимаю кнопку​ dbf как есть​: cstr() преобразовывает в​

planetaexcel.ru

Преобразовать текст в число

​ используя эту функцию​​ Next End SubЗаодно​
​ 1 Do For​Watcher_1​ (для первого столбца​ ли вы по​ на предыдущие мои​ не совсем пойму…​ попадался примерчик, где​Hugo​

​ он как текстовый​​, у меня код​ vbTextCompare) Chislo =​ чем с объектами​

​ ОК.​​ — получается не​ текст — а​ получилось следующее:​
​ удаляет пробелы и​ j = 1​

​: Вот так​​ до первой пустой​​ своим специальностям за​​ темы: KukLP, ikki,​
​ Спасибо​ ни твой, ни​: Обычно достаточно​ (например, «019» всё​ из сообщения #4​ Val(temp) .Cells(i, j).Value​ (Excel-ячейка является объектом).​

​теперь диапазон сохранён​​ то?​ эксель преобразовывает назад.​ActiveCell.FormulaR1C1 = «=TEXT(RC[-1],0)»не​ неразрывные пробелы.​ To 12 If​Sub m() Dim​ ячейки) :​

​ деньги?​​ Hugo, Юрий М.​KuklP​ мой способ не​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Columns(номер).TextToColumns​
​ так же имеет​ (http://www.cyberforum.ru/post4317945.html) не работает.​ = Chislo Next​ ‘Символ «&» соединяет​ как числа.​Ну если что​ Он ведь не​ совсем то​А применительно к​ Len(Cells(i, j)) =​ i&, x As​Sub m() Dim​Наверное нужно создать​

​Вы меня многому​​: Я его уже​ работали. Только оба​Mr_Vit​ ноль впереди)​нужно выделить по​ Next End With​ фрагменты текста в​Делаю то же​ — задать столбцу​ дурак — видит​

​Чтото на подобии​​ данному коду?​ 0 Then Exit​

​ Double i =​​ i&, x As​ еще одну тему​
​ научили.​ написал в Сообщение​ последовательно. Автор писал,​: Добрый день!​Буду благодарен ответам.​ одному столбцу, у​ End SubВместо строки​ одну строку. myArray()​ самое и записываю​ текстовый формат, выгрузить​ что это число.​

​Sub m_1() Columns(«A»).NumberFormat​​SLTK​
​ Do x =​ 1 Do For​ Double i =​ по этим вопросам,​

​Но чем больше​​ № 5. Выделяете​
​ что из 1С,​Заранее извиняйте если​Manyasha​ меня работает​ 3 можете указать​ = Range(«A1:A» &​ макрорекордером — но​ в него массив​Тогда перед тем,​ = «0.00» End​: Есть ли в​ Cells(i, j) +​ j = 1​ 1 Do If​ чтобы не нарушить​ учусь, тем больше​

​ нужный столбец и​​ но до этого​​ было уже подобное,​
​:​

​undefined7​​ конкретный лист и​ myLastRow).Value ‘3. Изменяем​ диапазон не преобразовывается​ текстовых чисел. Их​
​ как писать это​ SubСпасибо.​ VB функция которая​ 1 Cells(i, j)​
​ To 12 If​ Len(Cells(i, 1)) =​ правила форума, только​ вопросов.​

​ запускаете макрос.​​ у меня с​ поиском не нашёл.​Erdni​
​, попробуйте с помощью​

​ диапазон:​​ тип данных в​​ из теста в​​ можно получить или​ «тексточисло» в ячейку​Hugo121​

​ преобразует строку в​​ = x -​
​ Len(Cells(i, j)) =​ 0 Then Exit​ как её назвать?​В одном из​KuklP​ выборками из 1С​Не получается сделать​,​ вашего кода (http://www.cyberforum.ru/post4317945.html)​Set r =​ VBA-массиве. For i​ числа.​ перекладыванием в текстовый​ — сделайте ей​: Зачем?​ число и обратно?​ 1 Next i​ 0 Then Exit​ Do x =​Jonny_5​ ответов в теме​: Вот еще:​ таких проблем не​

​ следующее:​​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Selection.NumberFormat = «0»​

​ преобразовать текст, который​​ Sheets(«Лист1»).Range(«A1:E100»)​​ = 1 To​​Range(«B2»).Select Selection.Copy Range(«C2»).Select​
​ массив (текстового типа),​ текстовый формат.​Есть ведь фукнции​(Каждый символ комп​ = i +​

​ Do x =​​ Cells(i, 1) +​: Добрый день!​ «Функция DeJoin» мне​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub www()​ было.​Создаю макрос -​Или, если с​ находится в ячейке​undefined7​ UBound(myArray, 1) Step​ Range(Selection, Selection.End(xlDown)).Select Range(«C2:D2»).Select​ или индивидуально преобразовав​Я спрашивал зачем​ листа, тот же​ воспринимает как число,​ 1 Loop For​ Cells(i, j) +​ 1 Cells(i, 1)​помогите решить проблемку.​ дали хороший макрос.​Cells.Replace «.», «.»,​KuklP​

​ выделяю столбцы, далее​ десятичной частью нужно,​

CyberForum.ru

Функция которая преобразует строку в число и обратно в VB

​ «A1», в формат​​: Нашёл ещё 1​ 1 myArray(i, 1)​ Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlDivide,​ каждый элемент массива.​
​ — не ответите?​ TRIM() например.​ вот как увидеть​ j = 1​ 1 Cells(i, j)​

​ = x -​​ Есть таблица exel​Но вот проблема​
​ xlPart​: Да я уж​

​ жму на появившийся​​ то​ «Дата».​ способ:​
​ = CDbl(myArray(i, 1))​ SkipBlanks _ :=False,​
​voidex​Sub test() myvalue​
​Хотя непонятно зачем​ строку со стороны​
​ To 12 Cells(i,​
​ = x -​ 1 i =​ в одной из​
​ — нужно перевести​Cells.Replace «,», «.»,​ потерял его давно.​ ромбик(преобразовать текст в​Код200?’200px’:»+(this.scrollHeight+5)+’px’);»>Selection.NumberFormat = «0.00»​Я в ячейку​
​1. Выделяем столбец​

CyberForum.ru

Как преобразовать число в текст (на подобии =текст() )

​ Next i ‘4.​​ Transpose:=False Application.CutCopyMode =​: И как я​ = Cells(5, 1)​voidex​ компа???)​ j).Formula = «=SUM(«​ 1 Next i​ i + 1​
​ колонок находятся числовые​ значение элемента массива​ xlPart​
​ А искать на​ число)​
​DJ_Marker_MC​
​ «A1» поместил данные​ с данными для​ Вставляете данные из​

​ FalseПочему макрорекордер не​​ понимаю @ -​
​ Cells(3, 3).NumberFormat =​: Вроде удлаось использовать​Grankin_Denis​
​ & Cells(1, j).Address​

​ = i +​​ Loop End Sub​ данные в текстовом​ из текстового формата​End Sub​ планете… Легче иголку​сохраняюсь, выполняю, макрос​

​: Я юзаю такой​​ вот таким кодом:​ изменения формата (допустим,​

​ VBA-массива «myArray» на​​ запоминает эти действия?​ текстовй формат​ «@» Cells(3, 3)​ ActiveCell.FormulaR1C1 = «=TEXT(RC[-1],0)»​: f(x)=Str(x) переводит число​ & «:» &​ 1 Loop End​Busine2009​ формате. Какможно средствами​ в числовой​
​Silenser1588​ в стоге.​ не работает?.​ код:​
​Sub Procedure_2() ActiveCell.Value​ у нас были​ Excel-лист. Range(«A1:A» &​ Можно ли как-то​а какие еще​ = CStr(myvalue) End​ как было нужно,​ в строку​
​ Cells(i — 1,​ Sub​: файл по любому​

​ VBA преобразовать текст​​(«12″ преобразовать в​: ЭТО НЕЗАБЫВАЕМО!​RAN​_Boroda_​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub Repair_Value()’ в выделенных​ = CStr(«28.03.2013») End​
​ записаны штрих-коды в​ myLastRow).Value = myArray()​ по другому автоматизировать​ есть «знаки» для​ Sub​
​ но если кто​f(x)=Val(x) переводит строку​
​ j).Address & «)»​Vasil_M​ надо открывать: ни​ в числовые данные?​ 12)​Silenser1588​

​:​​: Попробуйте так​ ячейках исправить экспортированные​ Subтот что я​ числовом формате)​ End Sub​ данный процесс?​ numberforma?​voidex​ знает функции vba​ в число​ Next End Sub​:​ вручную, ни с​Busine2009​Вот пример:​: я извиняюсь, а​
​А искать на планете…​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub ttt2()​ как текст данные​
​ записал выше макрорекордером​
​2. Выбираем меню​не всегда получается​KoGG​просто исходя из​

​: Из сапа выгружается​​ поделитесь​palva​Vasil_M​Watcher_1​ помощью VBA нельзя​
​: Sub m_1() Columns(«A»).NumberFormat​KuklP​ что конкретно делает​ Легче иголку в​
​Range(«A1»).SpecialCells(xlLastCell).Offset(,1).Copy​ чтобы нормально опознались​ — не преобразовывает​ Данные, в группе​ получить код с​: Код показывает принцип:​Integer %​ excel файл, его​Hugo121​: Функция Chr по​

​: Все работает. Спасибо.​​Премного благодарю!​ работать с закрытыми​ = «0.00» End​
​: Для целых:​ последний макрос, в​ стоге.​
​Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd​
​ числа​
​ даты, а только​
​ Работа с данными​
​ помощью макрорекордера. Так​
​Кликните здесь для​
​Long &​
​ нужно будет отформатировать​

​: В VBA есть​​ коду символа создает​KoGG​Апострофф​

​ файлами. Я пока​​ Sub​[a1] = CLng(x(1))​ двух словах, просто​

CyberForum.ru

Преобразовать диапазон из текста в числа

​Вот эту бы надпись,​​Application.CutCopyMode = False​Dim rArea As​ текст в числа,​ нажимаем на кнопку​ задумали программисты из​ просмотра всего текста​Single !​ макросом и сохранить​ cstr()​ односимвольную строку, например​:​: x = Cells(i,​ не знаю, как​Jonny_5​ + CLng(x(2)) +​ интересно?​
​ да на планету,​End Sub​
​ Range​ спасибо за заметку​ инструмента Текст по​ организации «Microsoft».​ Sub Макрос1() Dim​Double #​
​ 2003 офисов в​voidex​MsgBox Chr(71) &​Watcher_1​ j) + 1​ это сделать -​: Ячейки «по хитрому»​ CLng(x(3))​KuklP​ над окном поиска!​

​Alex_ST​​On Error Resume​
​Erdni​ столбцам (в версиях​undefined7​ myArray() As Variant​String $​ dbf, а после​: Кстати как не​ Chr(72)​, вновь нужна помощь…​ Cells(i, j) =​ надо смотреть в​ преобразованы в текст,​Для дробных -​: В двух словах,​Silenser1588​:​ Next​: Здравствуйте!​ от 2007)​: Преобразует в числа​ Dim myLastRow As​Currency @​ загружать в старую​ странно cstr не​или что то​Стоит автофильтр. Необходимо:​ x — 1​ интернете.​ пример прилагаю.​ cdbl.​ меняет точки и​: у меня ничего​_Boroda_​ActiveWindow.RangeSelection.SpecialCells(xlCellTypeConstants).Select​Подскажите каким кодом​3. В новом​ выделенную область.​ Long Dim i​не вяжется)​ программу которая читает​ хочет преобразовывать в​ же самое,​ промежуточные итоги и​А ещё можно​Jonny_5​колонку «А» нужно​Hugo​ запятые на системный​ не происходит​
​,​If Err Then​ в VBA можно​ окне последовательно выбираем:​Применять для преобразования​

​ As Long ‘1.​​Hugo121​ только дбф файлы,​
​ текст ,тоесть excel​MsgBox Chr(&H47) &​ смещение ячейки вниз​ так x =​
​: Спасибо большое все​
​ преобразовать в число.​: Проблема?​ разделитель. Эксель дальше​я уже и​Саня, ты телепат​ Exit Sub​ выполнить операцию, выполняемую​ Формат исходных данных​ текстовых чисел после​ Определяем последнюю строку​: Включите рекордер, позадавайте​ поэтому нужно чтобы​ не смещает текст​ Chr(&H48)​ на одну, для​ exp(Cells(i, j)) Cells(i,​ заработало.​Busine2009​Достаточно​ сам конвертирует строку​ на «1» умножал​ что ли?​With Application: .ScreenUpdating​ «руками» в Excel​ = фиксированной ширины,​ сканера,1С и других​ с данными в​
​ форматов, выключите. И​ поля были в​

​ влево и не​​дает строку ‘GH’​ этих самых итогов.​
​ j) = log(x)​Busine2009​:​[a1] = —x(1)​ в число. Поскольку​ и что только​
​Я вот несколько​ = False: .EnableEvents​ следующим образом:​ (шаг 2 пропускаем),​ случаев.​ столбце «A», чтобы​ смотрите код.​
​ текстовом формате, еще​ появляется зеленый треугольничек,​Функция Asc(‘…’) дает​Vasil_M​Но обычно, если​: Мой вариант (вернее​Jonny_5​
​ + x(2) +​ в кодах у​ не делал…​ раз прочёл пост​ = False: .Calculation​
​В некоторых ячейках,​ Формат данных столбца​Удаляет неразрывные пробелы.​
​ ‘знать, сколько строк​gandalf​ не уверен насчет​ говорящий о том,​ ASCII код первого​: Sub Текст_в_числа() ‘​ без претензий, пишут​

​ из интернета взятый):​​,​​ x(3)​​ Вас знаков препинания​Silenser1588​Mr_Vit​

​ = xlManual: End​ содержащих числа есть​ = текстовый.​​Sub Текст_в_числа() Dim​​ обработать. Можно и​: я делаю так:​ длины полей тк​ что это число​ символа строки, например​ Пере вводит выделенную​
​ как-то так Cells(i,​Sub m_1() Dim​а если сделать​
​Юрий М​ нет, он оставляет​: делаю руками -​, а так и​ With​ зелёный треугольничек сверху​После нажатия на​ temp As String,​

CyberForum.ru

VBA-код для «Преобразовать в число» (Макросы/Sub)

​ целый столбец ‘взять,​​ Cells(3, 3).value=»‘» &​
​ пока что не​ форматированное как тест​Asc(‘GH’) это 71.​ область. Применять для​ j)=cdbl(Cells(i, j))​
​ oCell As Range​ формат «Общий» -​: Файл не смотрел…​ их нетронутыми.​ всё хорошо. макрос​ не понял, какой​For Each rArea​ слева в самой​ кнопку Готово изменится​ Chislo As Double​ но это может​ Cells(3, 3).value​ проверили​Sub test() myvalue​
​ Если нужен код​
​ преобразования текстовых чисел​
​Vasil_M​ Dim LastRow As​ ведь когда исправляешь​MsgBox Val(«12») *​Silenser1588​ — не работает.​ макрос он выполняет,​ In Selection.Areas​
​ ячейке. И при​

​ как формат ячеек,​​ Set r =​​ занять несколько секунд.​​undefined7​​Если все получится,​
​ = Cells(5, 1)​ второго символа строки​ после сканера. Set​
​: Или так, если​

​ Long Columns(«A»).NumberFormat =​​ ошибку «Преобразовать в​ 2​
​: не знаю в​ от чего это​ какой ромбик нажимает,​rArea.FormulaLocal = rArea.FormulaLocal​ выборе такой ячейки,​
​ так и формат​ Application.Selection With r​
​ 'Код ниже делает​: Такая ситуация, есть​
​ то это упростит​
​ Cells(3, 3) =​ s, то приходится​
​ R = Application.Selection​ не работаете с​ "General" LastRow =​ число", то формат​MsgBox CDbl("12") *​
​ какую тему написать...​ может зависить?​
​ что не работает...​
​Next rArea​
​ рядом появляется восклиц.​ введённых данных.​ .Replace What:=" ",​ действие, аналогичное тому,​ диапазон C22 который​
​ жизнь многим людям​

​ CStr(myvalue) End Sub​ писать что-то в​

​ R.Replace What:=Chr(160), Replacement:=»»,​​ процентами:​ Cells.SpecialCells(xlCellTypeLastCell).Row For Each​

​ ячейки становится не​​ 2​:D

​ выбираю н-ое кол-во​​KuklP​
​А ты прямо​

excelworld.ru

Макрос на преобразование в число.

​With Application: .ScreenUpdating​​ значёк. При нажатии​
​Columns(«N:N»).TextToColumns Destination:=Range(«N1″), DataType:=xlFixedWidth,​ Replacement:=»», LookAt:=xlPart, _​ если ‘сделать активной​
​ сохранён как текст,​______________​
​И еще такой​ роде​ LookAt:=xlPart, _ SearchOrder:=xlByRows,​Cells(i, j)=val(Cells(i, j).value)​ oCell In Range(«A1:»​
​ «Числовой», а «Общий»?​countervector​

​ ячеек, курсор находится​​: Давайте пример, где​
​ сразу готовое решение​
​ = True: .EnableEvents​
​ на восклиц. значёк,​
​ _ FieldInfo:=Array(0, 1),​
​ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False,​

​ ячейку в столбце​​ в ячейке B2​​Спасибо, теперь заработало,​​ вопрос, можно ли​
​Asc(Mid(s,2,1))​ MatchCase:=False, SearchFormat:=False, _​
​Watcher_1​ & «A» &​​Jonny_5​​: Спасибо всем за​ на «первой»(белая ячейка),​ у Вас не​ даёшь!​ = True: .Calculation​
​ выпадает списочек для​ TrailingMinusNumbers:=True​ _ ReplaceFormat:=False For​biggrin

​ «A» в последней​​ вставляю 1, копирую​
​ гораздо лучше вариант​

​ как то задать​​voidex​
​ ReplaceFormat:=False R.Replace What:="​:​

​ LastRow) oCell.Errors(xlNumberAsText).Ignore =​​: тогда другой вопрос:​dry​ ответы! Всё верно!​ нажимаю ШИФТ+ЭНТЕР ->​ работает.​Mr_Vit​ = xlAutomatic: End​ выбора. Нужно выбрать​Если в диапазоне​ i = 1​ строке ‘и нажать​ B2 выделяю диапазон​ чем FormulaR1C1 =​ длину поля в​

​: Нужно какую нибудь​​ «, Replacement:=»», LookAt:=xlPart,​Watcher_1​ True Next oCell​ можно ли как​ + мгновення реакция!​biggrin

​ курсор переходит на​​Silenser1588​​: Да он телепат!​ With​ не «Число сохранено​

​ есть буквы -​ To .Rows.Count For​ сочетание клавиш «Ctrl​

​ C22, На вкладке​​ «=TEXT(RC[-1],0)»​ excel, как в​sad​ функцию VBA, которая​ _ SearchOrder:=xlByRows, MatchCase:=False,​, А подсчет автосуммы​ End Sub​

​ нибудь исправить эту​​Немного обобщил: смотрите​ крайнюю ячейку(из выделенных).​: Макрос_1​всё заработало,​End Sub​

​ как текст», а​​ то он преобразовывает​ j = 1​ + Стрелка вверх».​

​ Главная в группе​​Hugo121​

​ access? тоесть например​​ бы выполняла то​ SearchFormat:=False, _ ReplaceFormat:=False​ по каждому столбцу​

​Vasil_M​​ ошибку макросом? или​ файл!​ так вот. как​KuklP​

​KuklP​​Выделяете нужный диапазон​ «Преобразовать в число».​ их в нули,​ To .Columns.Count temp​ myLastRow = Cells(Rows.Count,​

​ Буфер обмена нажимаю​​: В dbf есть​
​ 1 знак или​
​ же самое что​ For i =​
​ как можно реализовать?​:​
​ все таки только​

​У меня вопросы:​​ этот ШИФТ+ЕНТЕР в​smile

​: Применяйте макрос от​​: Можно проще:​ и запускаете макрос.​Если прописать:​ данный метод хорош,​ = CStr(.Cells(i, j).Value)​

​ «A»).End(xlUp).Row ‘2. Берём​​ кнопку со стрелкой​ текстовые и нетекстовые​ 5 итд..​ и =текст() (тесть​ 1 To R.Rows.Count​Vasil_M​А как это​ открывать файл и​ вы весь день​ макросе написать?​

​ Среда, 27.04.2011, 16:00.​​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub KuklP(): Selection.TextToColumns: End​_Boroda_​Selection.NumberFormat = «#,##0.00″​ когда нету букв​ temp = Replace(temp,​ данные в VBA-массив,​ Вставить и выбираю​ числовые поля? Я​Просто excel сохраняет​ преобразования чего либо​ For j =​

excelworld.ru

​: Так​

Понравилась статья? Поделить с друзьями:
  • Преобразовать в число excel весь лист
  • Преобразовать в число excel весь диапазон
  • Преобразовать в целое число excel
  • Преобразовать в формат даты vba excel
  • Преобразовать в таблицу word онлайн