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:
I’ve tried these snippets to no avail:
Columns(5).NumberFormat = "0"
and
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Teamothy
1,9903 gold badges15 silver badges24 bronze badges
asked Apr 21, 2016 at 13:41
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
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
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
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
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
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
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
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
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
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
9263 gold badges17 silver badges38 bronze badges
answered Dec 14, 2022 at 14:59
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
Преобразование текста в число с помощью кода 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 |
#1 22.07.2014 09:40:58 Здравствуйте!
Спасибо. |
||
JayBhagavan Пользователь Сообщений: 11833 ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64 |
#2 22.07.2014 09:48:02
В комментарии ясно указано, что макрос с выделенным диапазоном работает. Выделили столбец А, запустили макрос. <#0> |
||
stevie4 Пользователь Сообщений: 70 |
JayBhagavan
, я ступил. Спасибо большое |
JeyCi Пользователь Сообщений: 3357 |
#4 22.07.2014 10:52:33
как-то так я обычно делаю: выделяю диапазон ручками и прогоняю этот код… имхо p.s. а ваша фраза rArea.FormulaLocal = rArea.FormulaLocal ‘честно говоря для меня загадка… Изменено: JeyCi — 22.07.2014 10:58:31 чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок — обратитесь к собеседнику на ВЫ — ответ на ваш вопрос получите — а остальное вас не касается (п.п.п. на форумах) |
||||
The_Prist Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
#5 22.07.2014 13:32:45
Это позволяет преобразовать текст в число не поячеечно, а диапазону сразу(в коде выше это области). Будет гораздо быстрее, чем прогонять каждую ячейку. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||
Hugo Пользователь Сообщений: 23257 |
#6 22.07.2014 13:48:48 Запишите рекордером оперецию «текст по столбцам» этому столбцу — будет небольшой понятный макрос.
Изменено: Hugo — 22.07.2014 13:51:21 |
||
Мотя Пользователь Сообщений: 3218 |
Возможно, Ваше ПО в «конфликте» с настройками EXCEL — использовать системные разделители (Язык и Региональные стандарты (Настройка региональных параметров (Числа))). |
Подскажите, а как преобразовать число в текст? Спасибо Изменено: MonsterBeer — 09.06.2016 11:27:30 Когда я ем,я глух и нем, хитер и быстр, и дьявольски умен. |
|
The_Prist Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
Варианты выше в теме чем не устраивают? Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
The_Prist, нужны числа сохраненные как текст… Когда я ем,я глух и нем, хитер и быстр, и дьявольски умен. |
|
The_Prist Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
#11 09.06.2016 11:52:35 а-а-а…что-то упустил. В общем случае как-то так:
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||
Спасибо! Когда я ем,я глух и нем, хитер и быстр, и дьявольски умен. |
|
voice Пользователь Сообщений: 23 |
#13 08.12.2016 21:16:00 Подскажите, а если у меня есть макрос, выделяющий определенные столбцы, в которым нужно преобразовать текст в число, то как их объединить с вашим примером? Как я понял, нужно делать в два шага, а можно одним?
|
||
vikttur Пользователь Сообщений: 47199 |
#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:
The following code uses the CLng function to convert a string to an integer:
MsgBox CLng("13.5")
The result is:
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"
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:
The following code would convert a string to a decimal data type:
MsgBox CDec("13.57") + CDec("13.4")
The result is:
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:
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:
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!
Learn More!
I have to columns with exported numbers, which are stored as text.
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.
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
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
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.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
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_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
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 StudentGary’s Student
95.3k9 gold badges58 silver badges98 bronze badges
1
Преобразование текста в число в vba
Смотрите также Проверил — работает.
Sub: Исправить формат экспортированных, то это в диапазоне.
Chr(160), «», 1, ‘чтобы код быстрее
команду Специальная вставка. правда не в по умолчанию 9
в ячейке в 1 To R.Columns.CountSub m() Dim можно распространить на
все править ручками. за компьютером, отвечаетеcountervectorSilenser1588KuklP
как текст чисел хоть и меняет
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 ForWatcher_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 IfSub 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 AsSub m() DimНаверное нужно создать
Вы меня многому: Я его уже работали. Только обаMr_Vit ноль впереди)нужно выделить по Next End With фрагменты текста вДелаю то же — задать столбцу дурак — видит
Чтото на подобии данному коду? 0 Then Exit
Double i = i&, x As еще одну тему
научили. написал в Сообщение последовательно. Автор писал,: Добрый день!Буду благодарен ответам. одному столбцу, у End SubВместо строки одну строку. myArray() самое и записываю текстовый формат, выгрузить что это число.
Sub m_1() Columns(«A»).NumberFormatSLTK
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 ToRange(«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,
voidexSub 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 EndBusine2009 формате. Какможно средствами в числовой
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просто исходя из
: Из сапа выгружается поделитесьpalvaVasil_MWatcher_1 помощью VBA нельзя
: Sub m_1() Columns(«A»).NumberFormatKuklP что конкретно делает Легче иголку в
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 = FalseDim rArea As текст в числа, нажимаем на кнопку задумали программисты из просмотра всего текстаSingle ! макросом и сохранить cstr() односимвольную строку, например:: x = Cells(i, не знаю, какJonny_5 + CLng(x(2)) + интересно?
да на планету,End Sub
Range спасибо за заметку инструмента Текст по организации «Microsoft». Sub Макрос1() DimDouble #
2003 офисов вvoidexMsgBox Chr(71) &Watcher_1 j) + 1 это сделать -: Ячейки «по хитрому» CLng(x(3))KuklP над окном поиска!
Alex_STOn Error Resume
Erdni столбцам (в версияхundefined7 myArray() As VariantString $ dbf, а после: Кстати как не Chr(72), вновь нужна помощь… Cells(i, j) = надо смотреть в преобразованы в текст,Для дробных -: В двух словах,Silenser1588: Next: Здравствуйте! от 2007): Преобразует в числа Dim myLastRow AsCurrency @ загружать в старую странно 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 только дбф файлы,
текст ,тоесть excelMsgBox 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) Вас знаков препинанияSilenser1588Mr_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
выбираю н-ое кол-во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
«A» в последней вставляю 1, копирую
гораздо лучше вариант
как то задатьvoidex
ReplaceFormat:=False R.Replace What:=":
LastRow) oCell.Errors(xlNumberAsText).Ignore =: тогда другой вопрос: ответы! Всё верно! нажимаю ШИФТ+ЭНТЕР -> работает.Mr_Vit = xlAutomatic: End выбора. Нужно выбратьЕсли в диапазоне i = 1 строке ‘и нажать B2 выделяю диапазон чем FormulaR1C1 = длину поля в
: Нужно какую нибудь «, Replacement:=»», LookAt:=xlPart,Watcher_1 True Next oCell можно ли как + мгновення реакция!
курсор переходит наSilenser1588: Да он телепат! With не «Число сохранено
есть буквы - To .Rows.Count For сочетание клавиш «Ctrl
C22, На вкладке «=TEXT(RC[-1],0)» excel, как в функцию 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 =
как можно реализовать?:
все таки только
У меня вопросы: этот ШИФТ+ЕНТЕР в
: Применяйте макрос от: Можно проще: и запускаете макрос.Если прописать: данный метод хорош, = CStr(.Cells(i, j).Value)
«A»).End(xlUp).Row ‘2. Берём кнопку со стрелкой текстовые и нетекстовые 5 итд.. и =текст() (тесть 1 To R.Rows.CountVasil_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
: Так