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

Функции преобразования типов данных в VBA Excel. Наименования функций, синтаксис, типы возвращаемых данных, диапазоны допустимых значений выражения-аргумента.

Синтаксис функций преобразования

Выражение (аргумент) – это любое строковое или числовое выражение, возвращающее значение, входящее в диапазон допустимых значений для аргумента. Выражение может быть представлено переменной или другой функцией.

Если аргумент, переданный в функцию, не входит в диапазон типа, в который преобразуются данные, происходит ошибка.

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

Наименования функций преобразования типов, типы возвращаемых данных, диапазоны допустимых значений для аргумента:

Функция Тип данных Диапазон значений аргумента
CBool Boolean Любое допустимое строковое или числовое выражение.
CByte Byte От 0 до 255.
CCur Currency От -922 337 203 685 477,5808 до 922 337 203 685 477,5807.
CDate Date Любое допустимое выражение даты.
CDbl Double От -1,79769313486231E308 до -4,94065645841247E-324 для отрицательных значений; от 4,94065645841247E-324 до 1,79769313486232E308 для положительных значений.
CDec Decimal 79 228 162 514 264 337 593 543 950 335 для чисел без десятичных знаков. Для чисел с 28 десятичными знаками диапазон составляет 7,9228162514264337593543950335. Наименьшим возможным числом, отличным от нуля, является число 0,0000000000000000000000000001.
CInt Integer От -32 768 до 32 767, дробная часть округляется.
CLng Long От -2 147 483 648 до 2 147 483 647, дробная часть округляется.
CSng Single От -3,402823E38 до -1,401298E-45 для отрицательных значений; от 1,401298E-45 до 3,402823E38 для положительных значений.
CStr String Результат, возвращаемый функцией CStr, зависит от аргумента Выражение.
CVar Variant Диапазон совпадает с типом Double  для числовых значений и с типом  String  для нечисловых значений.

Дополнительно для VBA7:

Функция Тип данных Диапазон значений аргумента
CLngLng LongLong От -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807, дробная часть округляется. Действительно только для 64-разрядных платформ.
CLngPtr LongPtr От -2 147 483 648 до 2 147 483 647 для 32-разрядных платформ, от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 для 64-разрядных платформ, дробная часть округляется в обоих типах систем.

Примеры преобразования типов

Функция CBool

Функция CBool используется для преобразования выражений в тип данных Boolean.

Dim a

a = CBool(10) ‘Результат: True

a = CBool(0) ‘Результат: False

a = CBool(«True») ‘Результат: True

a = CBool(«Test») ‘Результат: Error

Dim a, b, c

a = «Test1»

b = «Test2»

c = CBool(a = b) ‘Результат: False

c = CBool(a <> b) ‘Результат: True

Функция CByte

Функция CByte используется для преобразования выражений в тип данных Byte.

Dim a, b, c

a = 654

b = 3.36

c = a / b ‘Результат: 194,642857142857

c = CByte(c) ‘Результат: 195

c = a * b ‘Результат: 2197,44

c = CByte(c) ‘Результат: Error

Функция CCur

Функция CCur используется для преобразования выражений в тип данных Currency.

Dim a, b, c

a = 254.6598254

b = 569.2156843

c = a + b ‘Результат: 823,8755097

c = CCur(a + b) ‘Результат: 823,8755

Функция CDate

Функция CDate используется для преобразования выражений в тип данных Date. Она распознает форматы даты в соответствии с национальной настройкой системы.

Dim a As String, b As Date, c As Double

a = «28.01.2021»

b = CDate(a) ‘Результат: #28.01.2021#

c = CDbl(b) ‘Результат: 44224

Dim a

a = CDate(44298.63895) ‘Результат: #12.04.2021 15:20:05#

a = CDate(44298) ‘Результат: #12.04.2021#

a = CDate(0.63895) ‘Результат: #15:20:05#

Функция CDbl

Функция CDbl используется для преобразования выражений в тип данных Double.

Dim a As String, b As String, c As Double

a = «45,3695423»

b = «548955,756»

c = CDbl(a) + CDbl(b) ‘Результат: 549001,1255423

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

Функция CDec

Функция CDec используется для преобразования выражений в тип данных Decimal.

Dim a As String, b As Double, c

a = «5,9228162514264337593543950335»

b = 5.92281625142643

c = CDec(a) CDec(b) ‘Результат: 0,0000000000000037593543950335

Dim a As Double, b As String, c

a = 4.2643E14

b = CStr(a) ‘Результат: «4,2643E-14»

c = CDec(a) ‘Результат: 0,000000000000042643

Функция CInt

Функция CInt используется для преобразования выражений в тип данных Integer.

Dim a As String, b As Integer

a = «2355,9228»

b = CInt(a) ‘Результат: 2356

Функция CLng

Функция CLng используется для преобразования выражений в тип данных Long.

Dim a As Date, b As Long

a = CDate(44298.63895) ‘Результат: #12.04.2021 15:20:05#

b = CLng(a) ‘Результат: 44299

a = CDate(b) ‘Результат: #13.04.2021#

Функция CSng

Функция CSng используется для преобразования выражений в тип данных Single.

Dim a As String, b As Single

a = «3,2365625106»

b = CSng(a) ‘Результат: 3,236562

Функция CStr

Функция CStr используется для преобразования выражений в тип данных String.

Dim a As Single, b As String

a = 5106.23

b = CStr(a) ‘Результат: «5106,23»

Функция CVar

Функция CVar используется для преобразования выражений в тип данных Variant.

Dim a As Double, b As String, c

a = 549258.232546

b = «Новое сообщение»

c = CVar(a) ‘Результат: 549258,232546 (Variant/Double)

c = CVar(b) ‘Результат: «Новое сообщение» (Variant/String)

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


Most times, you won’t need to «convert»; VBA will do safe implicit type conversion for you, without the use of converters like CStr.

The below code works without any issues, because the variable is of Type String, and implicit type conversion is done for you automatically!

Dim myVal As String
Dim myNum As Integer

myVal = "My number is: "
myVal = myVal & myNum

Result:

«My number is: 0»

You don’t even have to get that fancy, this works too:

Dim myString as String
myString = 77

«77»

The only time you WILL need to convert is when the variable Type is ambiguous (e.g., Type Variant, or a Cell’s Value (which is Variant)).

Even then, you won’t have to use CStr function if you’re compounding with another String variable or constant. Like this:

Sheet1.Range("A1").Value = "My favorite number is " & 7

«My favorite number is 7»

So, really, the only rare case is when you really want to store an integer value, into a variant or Cell value, when not also compounding with another string (which is a pretty rare side case, I might add):

Dim i as Integer
i = 7
Sheet1.Range("A1").Value = i

7

Dim i as Integer
i = 7
Sheet1.Range("A1").Value = CStr(i)

«7»

Return to VBA Code Examples

We have already covered an introduction to string functions in our VBA Strings and Substrings Functions tutorial. In this tutorial, we are going to look at how to convert an integer to a string (click here to learn about converting Strings to Numbers). The reason you would want to convert a number or date to a string is in order to use string manipulation functions on these values.

The VBA CStr Function

The VBA CStr Function allows you to convert a number, date or boolean data type to a string.

MsgBox CStr (88)

The syntax of the CStr Function is:

CStr(expression) where expression is the number or date that you want to convert.

The following code shows you how numbers are outputted compared to text, including by using the CStr Function.

Sub UsingTheConvertToStringFunction()


Debug.Print CStr(8)
Debug.Print "Text"
Debug.Print 8
Debug.Print 2


End Sub

This uses Debug.Print to output the results to the Immediate Window.

Converting An Integer To A String in VBA

Both CStr(8) and the word Text are displayed as text and are left aligned whereas the two numbers are right aligned within the immediate window.

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!

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

​Смотрите также​​.Columns(4).TextToColumns​ сохранив только значения​ Case 2 1654​ L10(6, 2) =​ As Integer Dim​ = «цента» Naim_Sotye_5​ txt & Sotni(vl)​ «миллион » mln(2)​
​ миллионов 999 тысяч​ макрос работает, но​ Replace(Temp, Chr(160), «»,​
​ For Each rn​ Excel, когда современные​
​ текстом. Иногда такие​
​Cells(i, j)=val(Cells(i, j).value)​не вяжется)​voidex​

​.Columns(6).TextToColumns​​- добавляем фильтр​
​ LETTERS = Format(d,​ «шестьдесятого» 1584 L10(7,​ LETTERS As String,​
​ = «центов» Case​

​ Case 5 ‘​​ = «миллиона «​ 999 .​ если в выбранном​ 1, , vbBinaryCompare)​ In Selection rn​ эффективные менеджеры под​

​ ячейки помечаются зеленым​​Watcher_1​Hugo121​

​: Нужно какую нибудь​​.Columns(7).TextToColumns​ для заголовка​ «00») & «​ 1) = «семьдесят»:​ LETTDAY As String,​ «евро» Naim_Valuta_1 =​ — десятки тысяч​ mln(3) = «миллиона​Sub Перевести_выделенное_число_в_текст() Dim​ диапазоне есть текст,​
​ Temp = Replace(Temp,​ = Val(Replace(Replace(rn, Chr(160),​ стол ходили зеленого​ индикатором, который вы,​
​:​: Включите рекордер, позадавайте​ функцию VBA, которая​End With​В конечном виде​ » & LETTMONTH​ L10(7, 2) =​ LETTMONTH As String,​
​ «евро» Naim_Valuta_2 =​ vl = Mid(SumInt,​ » mln(4) =​

​ SumBase As Double,​​ то выдается ошибка.​ «,», «.», 1,​ «»), » «,​ уголка-индикатора еще не​ скорее всего, видели:​Watcher_1​
​ форматов, выключите. И​ бы выполняла то​Vitality​ получаем отчет, как​ & » «​
​ «семьдесятого» 1585 L10(8,​ LETTYEAR As String​
​ «евро» Naim_Valuta_5 =​ shag, 1) If​ «миллиона » mln(5)​ SumText As String​ Эта проблема решена​ , vbTextCompare) Chislo​

​ «»)) Next End​​ было в принципе​Причем иногда такой индикатор​, А подсчет автосуммы​ смотрите код.​ же самое что​: Добавил лист с​ в листе changed.​ & Format(y, «;##»)​ 1) = «восемьдесят»:​ Dim n1000 As​ «евро» Naim_Sotye_1 =​ vl = 1​ = «миллионов «​ With Selection SumText​ в предыдущем посте,​ = Val(Temp) r.Cells(i,​
​ SubА если так​ (он появился только​ не появляется (что​
​ по каждому столбцу​
​gandalf​ и =текст() (тесть​ исходным файлом и​Вопрос, почему часть​

​ & » года»​​ L10(8, 2) =​ Integer, n100 As​ «цент» Naim_Sotye_2 =​ And Mid(SumInt, shag​ mln(6) = «миллионов​
​ = .Text SumText​ там где вводили​ j).Value = Chislo​ пере введёт?​
​ с 2003 года).​ гораздо хуже).​ как можно реализовать?​: я делаю так:​ преобразования чего либо​ то, что получилось​ значений получается в​ 1655 Case 3​ «восемьдесятого» 1586 L10(9,​ Integer, n10 As​

​ «цента» Naim_Sotye_5 =​​ + 1, 1)​ » mln(7) =​ = Replace(SumText, «​
​ Temp и Chislo.​ Next Next End​Vasil_M​
​ Алгоритм такой:​
​В общем и целом,​
​Vasil_M​
​ Cells(3, 3).value=»‘» &​
​ в ячейке в​
​ после макроса. Как​
​ формате текст и​
​ 1656 LETTERS =​

​ 1) = «девяносто»:​​ Integer, n1 As​ «центов» Case «гривны»​ <> 0 Then​

​ «миллионов » mln(8)​​ «, «», 1,​ В данном случае​ SubПростое удаление неразрывного​

CyberForum.ru

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

​: Благодарю всех за​​в любую пустую ячейку​
​ появление в ваших​: Так​ Cells(3, 3).value​ текст)​ пример, ячейчка F10​ плывут запятые для​ UCase(Left(LETTDAY, 1)) &​ L10(9, 2) =​

​ Integer ‘ МЕСЯЦА​​ Naim_Valuta_1 = «гривна»​ GoTo LblNextX Else​ = «миллионов «​

​ , vbTextCompare) ‘​​ весь текст заменяется​ пробела таинственным образом​ помощь.​
​ введите 1​ данных чисел-как-текст обычно​

​Sub m() Dim​​Jonny_5​​Попробовал записать макрос​​ c неправильной десятичной​
​ GL Cost?​ Mid(LETTDAY, 2) &​ «девяностого» ‘ СОТНИ​ m(1) = «января»​ Naim_Valuta_2 = «гривны»​ txt = txt​ mln(9) = «миллионов​

​ Удаляем в числе​​ на 0. Как​ отбрасывает дробную часть.​Если стоит автофильтр​скопируйте ее​ приводит к большому​ i&, x As​: Добрый день!​

​ используя эту функцию​​ запятой и F9​SkyPro​ » » &​ 1587 L100(0, 1)​
​ m(2) = «февраля»​ Naim_Valuta_5 = «гривен»​ & Desyatki(vl) ‘​ » ‘——————————————— tys(0)​ пробелы SumText =​ только разберусь с​dzug​ и нужны промежуточные​выделите ячейки с числами​ количеству весьма печальных​ Double i =​помогите решить проблемку.​ получилось следующее:​

​ с текстом вместо​​: Может вот эти​ LETTMONTH & «​ = «»: L100(0,​ m(3) = «марта»​ Naim_Sotye_1 = «копейка»​ — если конец​ = «тысяч «​ Replace(SumText, «‘», «»,​ этим — подредактирую​: Всем привет. Решил​

​ итоги и смещение​​ в текстовом формате​ последствий:​

​ 1 Do For​​ Есть таблица exel​ActiveCell.FormulaR1C1 = «=TEXT(RC[-1],0)»не​
​ числа.​ строки мешают?​ » & LETTYEAR​ 2) = «»​ m(4) = «апреля»​ Naim_Sotye_2 = «копейки»​ триады от 11​ tys(1) = «тысяча​ 1, , vbTextCompare)​ пост.​ «открыть» для себя​

​ итогов на ячейку​​ и поменяйте у​
​перестает нормально работать сортировка​ j = 1​ в одной из​ совсем то​

​M73568​​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Selection.NumberFormat = «#,##0.00″​
​ & » года»​ 1588 L100(1, 1)​ m(5) = «мая»​ Naim_Sotye_5 = «копеек»​ до 19 то​ » tys(2) =​ ‘ Удаляем в​Евгений_Пермь​ возможности VBA, но​ вниз, то код​ них формат на​ — «псевдочисла» выдавливаются​ To 12 If​ колонок находятся числовые​Чтото на подобии​: Как минимум строчку​

​Selection.NumberFormat = «#,##0″​​ 1657 End Select​​ = «сто»: L100(1,​
​ m(6) = «июня»​

​ Case «» Naim_Valuta_1​​ перескакиваем на единицы,​ «тысячи » tys(3)​ числе знаки ‘​: Прежде чем «менять​
​ идет тяжело, попытаюсь​ следующий:​ числовой (ничего не​ вниз, а не​
​ Len(Cells(i, j)) =​ данные в текстовом​Sub m_1() Columns(«A»).NumberFormat​ с​

​Попробуйте :​​ 1658 ДАТАПРОПИСЬЮ =​ 2) = «сотого»​ m(7) = «июля»​
​ = «» Naim_Valuta_2​

​ иначе — формируем​​ = «тысячи «​​ SumText = Replace(SumText,​​ шрифт на числовой»​ это исправить путем​Sub m() Dim​

​ произойдет)​​ располагаются по-порядку как​
​ 0 Then Exit​ формате. Какможно средствами​ = «0.00» End​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Selection.NumberFormat = «0.00000»​Код200?’200px’:»+(this.scrollHeight+5)+’px’);»>Selection.NumberFormat = «0.000»​ LETTERS End Function​ 1589 L100(2, 1)​ m(8) = «августа»​ = «» Naim_Valuta_5​ десятки Case 4​ tys(4) = «тысячи​ «,», «.», 1,​ , проверьте функцией:​ изучения материала на​ i&, x As​щелкните по ячейкам с​ положено:​ Do x =​ VBA преобразовать текст​ SubСпасибо.​Перенести в самый​+рекомендую почистить код,​Sasha_Smirnov​

​ = «двести»: L100(2,​​ m(9) = «сентября»​

​ = «» Naim_Sotye_1​​ ‘ — единицы​​ » tys(5) =​​ , vbTextCompare) ‘​
​IsNumeric(r.Cells(i, j))​ этом форуме (до​ Double i =​ псевдочислами правой кнопкой​функции типа​

​ Cells(i, j) +​​ в числовые данные?​Hugo121​ конец макроса, результат​ убрать все ActiveWindow.ScrollRow​:​ 2) = «двухсотого»​ m(10) = «октября»​ = «» Naim_Sotye_2​ тысяч vl =​ «тысяч » tys(6)​ Меняем , на​Можно еще вот​ этого просматривал только​ 1 Do For​ мыши и выберите​ВПР (VLOOKUP)​ 1 Cells(i, j)​Busine2009​: Зачем?​ будет точнее​ и тому подобный​Восемьдесятого​

​ 1590 L100(3, 1)​ 1554 m(11) =​

CyberForum.ru

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

​ = «» Naim_Sotye_5​​ Mid(SumInt, shag, 1)​
​ = «тысяч «​ . SumText =​ так сделать:​ ролики с youtube’a,​
​ j = 1​ команду​
​не находят требуемые​ = x -​: Sub m_1() Columns(«A»).NumberFormat​
​Есть ведь фукнции​SkyPro​ мусор.​?! А может,​
​ = «триста»: L100(3,​ «ноября» 1555 m(12)​ = «» Case​ If shag >​ tys(7) = «тысяч​
​ Replace(SumText, Chr(160), «»,​Sub Текст_число() Dim​
​ но таким «глубоких»​

​ To 12 If​​Специальная вставка (Paste Special)​
​ значения, потому как​ 1 Next i​ = «0.00» End​
​ листа, тот же​: епрст! )​

​Vitality​​восьмунадесятого​
​ 2) = «трехсотого»​
​ = «декабря» ‘​ Else Naim_Valuta_1 =​ 2 Then If​

​ » tys(8) =​​ 1, , vbBinaryCompare)​
​ i As Integer​ основ я пока​
​ Len(Cells(i, j)) =​или используйте сочетание​

​ для них число​​ = i +​ Sub​ TRIM() например.​
​Что бы записать​: В них я​
​Лучше уж степлер​ 1591 L100(4, 1)​ ЕДИНИЦЫ 1556 L1(0,​ Valuta Naim_Valuta_2 =​ (Mid(SumInt, shag -​ «тысяч » tys(9)​ ‘ Удаляем в​ For i =​
​ не нашел). Ранее​ 0 Then Exit​ клавиш​ и такое же​ 1 Loop For​Jonny_5​

planetaexcel.ru

Преобразование чисел-как-текст в нормальные числа

​Хотя непонятно зачем​ в ячейку запятую,​ устанавливаю числовой формат​Что ж, посмотрим​ = «четыреста»: L100(4,​ 1) = «»:​ Valuta Naim_Valuta_5 =​ 2, 1) =​ = «тысяч «​ числе неразрывные пробелы​ 75 To 109​ пользовался просто макрорекодером,​ Do x =​Ctrl+Alt+V​

Число как текст в Excel

​ число-как-текст различаются:​ j = 1​: Ячейки «по хитрому»​

​voidex​ в коде ВБА​ с двумя знаками​ на отзывы бухгалтеров​ 2) = «четырехсотого»​ L1(0, 0) =​

​ shag — 1,​ Error Resume Next​ .Collapse Direction:=wdCollapseEnd .TypeText​ On Error Resume​ часть функций он​ 1 Cells(i, j)​ вариант​ ошибочно​ j).Formula = «=SUM(«​​ пример прилагаю.​​ ActiveCell.FormulaR1C1 = «=TEXT(RC[-1],0)»​​Попробуйте поменять в​​ столбца H, числовой​​_shark​​ = «пятьсот»: L100(5,​ = «» 1557​

​ «сотых» Naim_Sotye_5 =​ 1) = 0​ shag = 0​ Text:=» » &​ Next If .Value​ просто не записывает,​ = x -​Значения (Values)​многие другие функции Excel​

Способ 1. Зеленый уголок-индикатор

​ & Cells(1, j).Address​колонку «А» нужно​ как было нужно,​ макросе все строки​ с 5ю знаками​:​ 2) = «пятисотого»​ L1(1, 1) =​ «сотых» End Select​ And vl =​ SumInt = Int(SumBase)​ Число_в_текст(SumBase, «руб») End​​ <> «» Then​ с чем и​​ 1 Next i​

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

​и​ также перестают нормально​ & «:» &​

​ преобразовать в число.​ но если кто​ где меняется точка​ для G. Почему​Sasha_Smirnov​ 1593 L100(6, 1)​​ «одна»: L1(1, 0)​ If shag =​ «0») Then GoTo​ For x =​ With End Sub​​ .Value = .Value​

Способ 2. Повторный ввод

​ столкнулся недавно.​ = i +​Умножить (Multiply)​ работать:​ Cells(i — 1,​Busine2009​ знает функции vba​ на запятую :​ они могут быть​, у​ = «шестьсот»: L100(6,​​ = «первое»: L1(1,​​ 1 Then shag​ LblNextX End If​ Len(SumInt) To 1​ Public Function Число_в_текст(ByVal​​ + 0 End​​Суть проблемы: при​​ 1 Loop For​​По-сути, мы выполняем то​и т.д.​ j).Address & «)»​:​

​ поделитесь​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Replace What:=».», Replacement:=»,»​ неверные?​KoGG​

Способ 3. Формула

​ 2) = «шестисотого»​ 2) = «первого»​ = 2 If​ Sclon_Tys = Edinicy(vl)​ Step -1 shag​

Преобразование текста в число формулой

​ SumBase As Double,​ With Next i​ копировании значений из​ j = 1​ же самое, что​Особенно забавно, что естественное​ Next End Sub​Jonny_5​Hugo121​на:​SkyPro​’а тоже хороший код​ 1594 L100(7, 1)​

​ 1558 L1(2, 1)​ vl = 0​ & tys(vl) ‘​ = shag +​ ByVal Valuta As​ End Sub это​ 1С/excel с удаленки​

Способ 4. Специальная вставка

​ To 12 Cells(i​ и в прошлом​ желание просто изменить​Vasil_M​,​: В VBA есть​Код200?’200px’:»+(this.scrollHeight+5)+’px’);»>Replace What:=».», Replacement:=».»​: Vitality, пробовали убрать​ (:​ = «семьсот»: L100(7,​

  • ​ = «две»: L1(2,​ Or vl >​
  • ​ — вводим переменную​
  • ​ 1 Select Case​ String) As String​ на тот случай,​ на рабочий стол​ + 1, j).Formula​ способе — умножение​
  • ​ формат ячейки на​: Все работает. Спасибо.​а если сделать​ cstr()​​Вот так, короче:Код200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub​​ диезы?​Sasha_Smirnov​​ 2) = «семисотого»​
  • ​ 0) = «второе»:​ 4 Or (Mid(SumInt,​​ Sclon_Tys из-за иного​​ x Case 12​​ ‘Переводит цифровое значение​

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

​ если в ячейках​ компа копируются значения​ = «=SUBTOTAL(9, «​ содержимого ячеек на​ числовой — не​KoGG​ формат «Общий» -​voidex​

Способ 5. Текст по столбцам

​ changeView()​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Range(«H:H»).NumberFormat = «0.00» ‘число​: никому так и​ 1595 L100(8, 1)​ L1(2, 2) =​ shag — 1,​ склонения тысяч в​ ‘ — сотни​ в текстовое предложение.​ имеются текстовые и​​ с пробелами, которые​ & Cells(1, j).Address​​ единицу — но​​ помогает. Т.е. вы,​​:​ ведь когда исправляешь​: Кстати как не​With Sheets(1)​ и два знака​ не пригодился.​ = «восемьсот»: L100(8,​ «второго» 1559 L1(3,​

​ 2) > 10​ русском языке If​​ миллиардов vl =​​ ‘Параметр Valuta: ‘​ пустые выражения и​​ приходится постоянно обрабатывать,​​ & «:» &​ не формулами, а​ буквально, выделяете ячейки,​Watcher_1​

Преобразование текста в число через инструмент Текст по столбцам

​ ошибку «Преобразовать в​​ странно cstr не​​.Columns(«A:A»).TextToColumns Destination:=Range(«A1»), DataType:=xlFixedWidth,​ после запятой​voidex​

Способ 6. Макрос

​ 2) = «восьмисотого»​ 1) = «три»:​ And Mid(SumInt, shag​ vl = 1​ Mid(SumInt, shag, 1)​ «руб» — рубли,​ их нужно оставить.​ чтобы применять к​​ Cells(i — 1,​​ напрямую из буфера.​​ щелкаете по ним​​, вновь нужна помощь…​ число», то формат​ хочет преобразовывать в​​ _​​Range(«G:G»).NumberFormat = «0.00000»​: И как я​

​ 1596 L100(9, 1)​ L1(3, 0) =​ — 1, 2)​ Then Sclon_Tys =​

​ txt = txt​ ‘ «дол» -​КаТеРиНкАя​​ ним формулы.​ j).Address & «)»​​Если псеводчисла, которые надо​ правой кнопкой мыши,​Стоит автофильтр. Необходимо:​​ ячейки становится не​​ текст ,тоесть excel​​FieldInfo:=Array(Array(0, 1), Array(19,​ ‘число и пять​ понимаю @ -​

​ = «девятьсот»: L100(9,​ «третье»: L1(3, 2)​ < 20) Then​ «одна » &​ & Sotni(vl) Case​

P.S.

​ доллары, ‘ «евр»​: Помогите пожалуйста написать​Раньше просто заменял​ Next End Sub​ преобразовать, вдобавок еще​ выбираете​ промежуточные итоги и​ «Числовой», а «Общий»?​ не смещает текст​ 1), Array(69, 1),​ знаков после запятой​ текстовй формат​ 2) = «девятисотого»​

planetaexcel.ru

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

​ = «третьего» 1560​​ txt = txt​
​ tys(vl) ‘ -​ 11 ‘ -​ — евро, ‘​ программу в VBA=)Дана​ этот лишний пробел​TatNsk​ и записаны с​Формат ячеек (Format Cells)​

​ смещение ячейки вниз​​Jonny_5​ влево и не​ Array(72, 2), Array(86,​Перезапишите макрорекордером установку​а какие еще​ ‘ ТЫСЯЧИ 1597​ L1(4, 1) =​ + Naim_Valuta_5 Else​ для тысяч склонение​

​ десятки миллиардов vl​​ «грив»- гривны, ‘​ строка S, содержащая​
​ и на этом​: Лучше так:​ неправильными разделителями целой​, меняете формат на​ на одну, для​: тогда другой вопрос:​
​ появляется зеленый треугольничек,​ 1), _​ формата ячейки​ есть «знаки» для​ L1000(1) = «тысячного»​ «четыре»: L1(4, 0)​ If vl =​ «один» и «два»​ = Mid(SumInt, shag,​ «» — без​ дату в виде​ все. Решил это​Cells(i, j) =​ и дробной части​Числовой (Number)​ этих самых итогов.​ можно ли как​ говорящий о том,​Array(89, 2), Array(105,​Vitality​ numberforma?​ 1598 L1000(2) =​ = «четвертое»: L1(4,​ 1 Then txt​

​ неприменимо ( поэтому​​ 1) If vl​
​ наименования, ‘ прочие​ ДД.ММ.ГГГГ, например «14.03.2008».​ дело автоматизировать, но​

​ Cells(i, j) *​​ или тысяч, то​, жмете​

​Vasil_M​​ нибудь исправить эту​ что это число​ 2)), TrailingMinusNumbers:=True​: SkyPro, диезы попробовал​
​просто исходя из​ «двухтысячного» 1599 L1000(3)​
​ 2) = «четвертого»​ = txt +​ вводим переменную Sclon_Tys​ = «1» And​ текстовые наименования валют​ Разработать программу, преобразующую​ проблем стало еще​
​ 1​ можно использовать другой​ОК​: Sub Текст_в_числа() ‘​
​ ошибку макросом? или​ форматированное как тест​.Columns(«A:G»).EntireColumn.AutoFit​ убрать, но не​Integer %​

​ = «трехтысячного» 1600​​ 1561 L1(5, 1)​ Naim_Valuta_1 Else txt​ ) If vl​ Mid(SumInt, shag +​
​ используются без склонения.​ дату в таком​ больше. После замены​ikki​ подход. Выделите исходный​- и ничего​ Пере вводит выделенную​ все таки только​Sub test() myvalue​.Columns(«F:F»).Replace What:=».», Replacement:=».»​ помогло. Каким образом​Long &​ L1000(4) = «четырехтысячного»​ = «пять»: L1(5,​ = txt +​ = 2 Then​ 1, 1) <>​ Dim Edinicy(0 To​ виде в текстовую​ появилась новая проблема​: а обосновать? чем​ диапазон с данными​ не происходит! Совсем!​ область. Применять для​ открывать файл и​
​ = Cells(5, 1)​

​.Columns(«G:G»).Replace What:=»,», Replacement:=»»​​ можно перезаписать установку​
​Single !​ 1601 L1000(5) =​ 0) = «пятое»:​ Naim_Valuta_2 End If​ Sclon_Tys = «две​ 0 Then GoTo​ 19) As String​ запись даты. Вывести​ — цифры преобразовались​ именно лучше?​ и нажмите кнопку​Возможно, «это не баг,​ преобразования текстовых чисел​ все править ручками.​ Cells(3, 3) =​.Columns(«G:G»).Replace What:=».», Replacement:=».»​ формата ячейки?​Double #​

​ «пятитысячного» 1602 L1000(6)​​ L1(5, 2) =​ Sotye = CInt((SumBase​ » & tys(vl)​
​ LblNextX Else txt​ Dim Desyatki(0 To​ в ячейку А1​ в текст и​TatNsk​Текст по столбцам (Text​ а фича», конечно,​ после сканера. Set​dzug​ CStr(myvalue) End Sub​.Columns(«D:D»).Replace What:=»,», Replacement:=»»​SkyPro​String $​ = «шеститысячного» 1603​ «пятого» 1562 L1(6,​ — SumInt) *​ ‘ — для​ = txt &​ 9) As String​ активного рабочего стола​ их нужно заменить​: Вот и я​ to columns)​ но нам от​ R = Application.Selection​

​: Попробуйте вот так​​И еще такой​.Columns(«D:D»).Replace What:=».», Replacement:=».»​: нажать запись макроса​Currency @​ L1000(7) = «семитысячного»​ 1) = «шесть»:​ 100) StrSotye =​ тысяч склонение «один»​ Desyatki(vl) ‘ -​ Dim Sotni(0 To​ строку S, а​ на числа.​ о том. Пишем​на вкладке​ этого не легче.​ R.Replace What:=Chr(160), Replacement:=»»,​ (для первого столбца​ вопрос, можно ли​
​.Columns(«F:F»).NumberFormat = «0.00000»​ и изменить форматирование​не вяжется)​ 1604 L1000(8) =​ L1(6, 0) =​ Format(Sotye, «00») txt​ и «два» неприменимо​ если конец триады​ 9) As String​
​ в ячейку А2​Sub БезПробелов() ‘​ и ничего не​Данные (Data)​ Так что давайте-к​ LookAt:=xlPart, _ SearchOrder:=xlByRows,​ до первой пустой​ как то задать​.Columns(«D:D»).NumberFormat = «0.00»​ ячейки. После чего​Вернуться к обсуждению:​ «восьмитысячного» 1605 L1000(9)​
​ «шестое»: L1(6, 2)​ = txt &​ ( поэтому вводим​ от 11 до​ Dim mlrd(0 To​ – преобразованное значение​ БезПробелов Макрос ‘​ объесняем.​. На самом деле​ рассмотрим несколько способов​ MatchCase:=False, SearchFormat:=False, _​ ячейки) :​ длину поля в​.Columns(«G:G»).NumberFormat = «0.00»​ подставить те строки,​Как преобразовать число​ = «девятитысячного» 1606​ = «шестого» 1563​ » » &​ переменную Sclon_Tys )​ 19 то перескакиваем​ 9) As String​ (т.е., например, «14​ Удаляет пробелы между​С таким подходом​ этот инструмент предназначен​ исправить ситуацию -​ ReplaceFormat:=False R.Replace What:=»​Sub m() Dim​ excel, как в​End With​ которые получились в​ в текст (на​ SYM(1) = «тысяча»​ L1(7, 1) =​ StrSotye & «​ If shag >​ на единицы, иначе​ Dim mln(0 To​ марта 2008 г.»),​ цифрами ‘ Сочетание​ берем:​ для деления слипшегося​ один из них​ «, Replacement:=»», LookAt:=xlPart,​ i&, x As​ access? тоесть например​End Sub​ макрос, который вы​ подобии =текст() )​ 1607 SYM(2) =​ «семь»: L1(7, 0)​ » Select Case​

​ 1 Then If​​ — формируем десятки​ 9) As String​ но не именно​ клавиш: Ctrl+у Cells.Replace​Dim a As​ текста по столбцам,​ вам обязательно поможет.​
​ _ SearchOrder:=xlByRows, MatchCase:=False,​ Double i =​ 1 знак или​Vitality​

​ записали ранее.​​Следующий ответ​ «тысячи» 1608 SYM(3)​ = «седьмое»: L1(7,​ Left(StrSotye, 1) Case​ Mid(SumInt, shag -​ Case 10 ‘​
​ Dim tys(0 To​ эту дату, а​ What:=»*», Replacement:=»» Cells.Select​ Double a =​ но, в данном​Если на ячейке с​ SearchFormat:=False, _ ReplaceFormat:=False​ 1 Do If​ 5 итд..​: Теперь всё работает,​SkyPro​Vitality​ = «тысяч» 1609​ 2) = «седьмого»​ «0», «2», «3»,​ 1, 1) =​ — единицы миллиардов​ 9) As String​ любую ввести? Я​ Dim i As​ [A1] [A1] =​ случае, мы используем​ числом с текстовом​ For i =​ Len(Cells(i, 1)) =​Просто excel сохраняет​ спасибо!)​: Вы бы более​: Добрый день. При​ d = Day(ДАТА)​ 1564 L1(8, 1)​

​ «4», «5», «6»,​​ 1 Then Sclon_Tys​ vl = Mid(SumInt,​ Dim SumInt, x,​
​ вот попробовала начать,​

​ Double i =​ aи получаем тоже​
​ его с другой​ формате вы видите​ 1 To R.Rows.Count​ 0 Then Exit​ по умолчанию 9​Erdni​ подробно описали ситуацию​ запуске макроса числовые​ ‘ число 1610​ = «восемь»: L1(8,​ «7», «8», «9»​ = Edinicy(Mid(SumInt, shag​ shag, 1) If​ shag, vl As​ но зависла=( Помогите​ 1 Do For​ самое (хотя это,​

CyberForum.ru

Преобразование любой даты в текст

​ целью.​​ зеленый уголок-индикатор, то​ For j =​ Do x =​ как я посмотрел​: Здравствуйте!​ (что конкретно нужно​ значения почему-то частично​ If d Mod​ 0) = «восьмое»:​ PereKluch = Right(StrSotye,​ — 1, 2))​ shag > 1​ Integer Dim txt,​ пожалуйста решение дальше​ j = 1​ вероятно, аналог функции​Пропустите первых два шага​ считайте, что вам​ 1 To R.Columns.Count​ Cells(i, 1) +​Hugo121​Подскажите каким кодом​ получить из каких​
​ отображаются в виде​ 10 = 0​ L1(8, 2) =​ 1) Case Else​ & «тысяч «​ Then If Mid(SumInt,​ Sclon_Tys As String​ продолжить=)​ To 999 If​ Cdbl).​ нажатием на кнопку​ повезло. Можно просто​ R.Cells(i, j).Value =​ 1 Cells(i, 1)​: cstr() преобразовывает в​ в VBA можно​ данных) + файл​ текста, плюс меняется​ Then 1611 LETTDAY​

​ «восьмого» 1565 L1(9,​​ PereKluch = StrSotye​ End If txt​ shag — 1,​ Dim Naim_Valuta_1 As​Sub дата() Dim​ Len(Cells(i, j)) =​А быстрее ли​Далее (Next)​ выделить все ячейки​ Val(R.Cells(i, j).Value) Next​ = x -​ текст — а​ выполнить операцию, выполняемую​ примера с исходными​ положение десятичного знака​ = IIf(ПАДЕЖ =​ 1) = «девять»:​ End Select Select​ = txt &​ 1) = 1​ String, Naim_Valuta_2 As​ s, d As​ 0 Then Exit​ операция *1 чем​

CyberForum.ru

Макрос преобразование цифр в слова

​, а на третьем​​ с данными и​
​ Next End SubЗаодно​ 1 i =​ эксель преобразовывает назад.​ «руками» в Excel​ данными, и что​ (см. приложение). Например,​ 1, L10(d /​
​ L1(9, 0) =​ Case PereKluch Case​ Sclon_Tys ‘-КОНЕЦ БЛОКА_______________________​ Then txt =​ String, Naim_Valuta_5 As​

​ Date, i As​​ Do Cells(i, j)​ +1, затем -1​ воспользуйтесь кнопкой​ нажать на всплывающий​
​ удаляет пробелы и​ i + 1​ Он ведь не​ следующим образом:​ должно получиться.​

​ ячейка G5 в​​ 10, 0), L10(d​ «девятое»: L1(9, 2)​ «1» txt =​ Case 3 ‘​
​ txt & Edinicy(Mid(SumInt,​ String Dim Naim_Sotye_1​ Integer s =​
​ = CDbl(Cells(i, j))​ тут вопрос.​Дополнительно (Advanced)​ желтый значок с​
​ неразрывные пробелы.​ Loop End Sub​ дурак — видит​В некоторых ячейках,​На данный момент​ листе original -​ / 10, 2))​ = «девятого» 1566​ txt & Naim_Sotye_1​ — сотни vl​ shag — 1,​ As String, Naim_Sotye_2​ InputBox(«S = «)​ Next i =​Только зачем все​. Откроется диалоговое окно,​ восклицательным знаком, а​А применительно к​Busine2009​ что это число.​ содержащих числа есть​ единственное, что могу​ 142,13882 как число,​ 1612 Else 1613​ L1(10, 1) =​ Case «2», «3»,​ = Mid(SumInt, shag,​ 2)) & «миллиардов​ As String, Naim_Sotye_5​ d = Split(s,​ i + 1​ это, если функция​ где можно задать​ затем выбрать команду​ данному коду?​: файл по любому​Тогда перед тем,​ зелёный треугольничек сверху​ посоветовать — скопируйте​ а в листе​ If d 0​ «десять»: L1(10, 0)​ «4» txt =​ 1) txt =​ » Else txt​ As String Dim​ «:») s1 =​ Loop Range(«B2»).Select End​ Val специально для​ имеющиеся сейчас в​Преобразовать в число (Convert​countervector​ надо открывать: ни​ как писать это​ слева в самой​ данные листа ориджинал​ changed эта же​ And n100 =​ = «десятое»: L1(10,​ txt & Naim_Sotye_2​ txt & Sotni(vl)​ = txt &​ Sotye As Integer,​ «» Dim M(20)​ SubПротестировал этот код​ топика предназначена (по​ нашем тексте символы-разделители:​ to number)​: Здраствуйте.​ вручную, ни с​ «тексточисло» в ячейку​ ячейке. И при​ и вставьте на​ ячейка 14 213​ 0 And n10​ 2) = «десятого»​ Case Else txt​ Case 2 ‘​ Edinicy(vl) & mlrd(vl)​ StrSotye As String​ M(1) = «января»​ на обычных числах​ описанию).​После нажатия на​:​Спасибо за ответы​ помощью VBA нельзя​ — сделайте ей​ выборе такой ячейки,​ лист чейнджед только​ 882,00000. С чем​ = 0 And​ 1567 L1(11, 1)​ = txt &​ — десятки vl​ ‘числа в диапозоне​ Dim PereKluch As​ M(2) = «февраля»​ без вставки -​m-ch​Готово​Все числа в выделенном​ на предыдущие мои​ работать с закрытыми​ текстовый формат.​ рядом появляется восклиц.​ значения.​ может быть связана​ n1 = 0​ = «одиннадцать»: L1(11,​ Naim_Sotye_5 End Select​ = Mid(SumInt, shag,​ от 11 до​ String Edinicy(0) =​ M(3) = «марта»​ все работает, не​: Убрать лишнюю строку​Excel преобразует наш​ диапазоне будут преобразованы​ темы: KukLP, ikki,​ файлами. Я пока​Я спрашивал зачем​ значёк. При нажатии​Vitality​ проблема?​ Then 1628 LETTYEAR​ 0) = «одиннадцатое»:​ Число_в_текст = UCase(Left(txt,​ 1) If vl​ 19 склоняются на​ «» Edinicy(1) =​ M(4) = «апреля»​ обрабатываются правда значения,​ кода с оператором​ текст в нормальные​ в полноценные.​ Hugo, Юрий М.​ не знаю, как​ — не ответите?​ на восклиц. значёк,​: Пробовал. Не помогло.​По файлу: original​ = Trim(LETTYEAR &​ L1(11, 2) =​ 1)) & Right(txt,​ = «1» And​ «миллиардов» независимо от​ «один » Edinicy(2)​ M(5) = «мая»​ если идет пустая​ и переменной всяко​ числа.​Если зеленых уголков нет​Вы меня многому​ это сделать -​Sub test() myvalue​ выпадает списочек для​ Записал отдельно макрос​ — лист, в​ » » &​ «одиннадцатого» 1568 L1(12,​ Len(txt) — 1)​ Mid(SumInt, shag +​ последнего числа триады​ = «два «​ M(6) = «июня»​ колонка между данными,​ лучше.​Если подобные преобразования вам​ совсем, то проверьте​ научили.​ надо смотреть в​ = Cells(5, 1)​ выбора. Нужно выбрать​ на разбивку по​ котором данные во​ L1000(n1000)) 1629 ElseIf​ 1) = «двенадцать»:​ End Function​ 1, 1) <>​ Else txt =​ Edinicy(3) = «три​ M(7) = «июля»​ но это и​Код *1 Val​ приходится делать часто,​ — не выключены​Но чем больше​ интернете.​ Cells(3, 3).NumberFormat =​ не «Число сохранено​ столбцам и изменение​ время записи макроса,​ n1000 > 0​ L1(12, 0) =​seha1986​ 0 Then GoTo​ txt & Edinicy(vl)​ » Edinicy(4) =​ M(8) = «августа»​ понятно, значит массив​ cSng cDbl 10Y00777,121432​ то имеет смысл​ ли они в​ учусь, тем больше​Jonny_5​ «@» Cells(3, 3)​ как текст», а​ текстового формата на​ в changed -​ Then 1630 LETTYEAR​ «двенадцатое»: L1(12, 2)​: А это полезный​ LblNextX Else txt​ & mlrd(vl) End​ «четыре » Edinicy(5)​ M(9) = «сентября»​ заканчивается и дальше​ Ошибка 10 Ошибка​ автоматизировать этот процесс​ настройках вашего Excel​ вопросов.​: Спасибо большое все​ = CStr(myvalue) End​ «Преобразовать в число».​ числовой. всё равно​ данные после запуска​ = Trim(LETTYEAR &​ = «двенадцатого» 1569​ код, кот. должен​ = txt &​ If ‘-КОНЕЦ БЛОКА_______________________​ = «пять «​ M(10) = «ноября»​ макрос не работает.​ Ошибка 10000777,121433 10000777,121433​ при помощи несложного​ (​В одном из​ заработало.​ Sub​Если прописать:​ криво получается -​ макроса, macros -​ » » &​ L1(13, 1) =​ идти всегда в​ Desyatki(vl) ‘ -​ Case 9 ‘​ Edinicy(6) = «шесть​ M(11) = «декабря»​ Далее решил протестировать​ 10000777 10000777 10000777,121433​ макроса. Нажмите сочетание​Файл — Параметры -​ ответов в теме​Busine2009​voidex​Selection.NumberFormat = «#,##0.00″​ часть в текстовом​ кнопка с назначенным​ L1(n1000, 1)) 1631​ «тринадцать»: L1(13, 0)​ связки с предыдущими,​ если конец триады​ — сотни миллионов​ » Edinicy(7) =​Toxa33rus​ с вставкой с​ 0,121434 0,121434 0​ клавиш Alt+F11 или​ Формулы — Числа,​ «Функция DeJoin» мне​: Мой вариант (вернее​: Из сапа выгружается​, то это​ формате, часть в​ макросом, плюс оригинальный​ If n1000 =​ = «тринадцатое»: L1(13,​ особенно в фин.​ от 11 до​ vl = Mid(SumInt,​ «семь » Edinicy(8)​: Dim s, d​ удаленки — обрабатывается​ 0,1214340031147 0,121434 1.121436​ откройте вкладку​ отформатированные как текст​ дали хороший макрос.​ из интернета взятый):​ excel файл, его​ хоть и меняет​ числовом и плывает​ файл с данными​ 1 Then 1632​ 2) = «тринадцатого»​ учреждениях — преобразование​ 19 то перескакиваем​ shag, 1) txt​ = «восемь «​ As Date, i​ только первый столбец​ Ошибка 1,121436 Ошибка​Разработчик (Developer)​ или с предшествующим​Но вот проблема​Sub m_1() Dim​ нужно будет отформатировать​ формат ячейки на​ десятичная запятая (см.​ (блокнот).​ LETTYEAR = LETTYEAR​ 1570 L1(14, 1)​ даты в текст.​ на единицы, иначе​ = txt &​ Edinicy(9) = «девять​ As Integer s​ и все. Подскажите​ Ошибка Из таблицы​и нажмите кнопку​ апострофом​ — нужно перевести​ oCell As Range​ макросом и сохранить​ числовой, но выглядит​ приложение).​Poltava​ & » «​ = «четырнадцать»: L1(14,​Sub Перевести_выделенную_дату_в_текст() Dim​ — формируем десятки​ Sotni(vl) Case 8​ » Edinicy(11) =​ = InputBox(«S =​ пожалуйста как это​ видны результаты работы​Visual Basic​).​ значение элемента массива​ Dim LastRow As​ 2003 офисов в​ он как текстовый​Матраскин​: Вы хоть обьясните​ & SYM(1) 1633​ 0) = «четырнадцатое»:​ SumBase As String,​ Case 1 ‘​ ‘ — десятки​ «одиннадцать » Edinicy(12)​ «) s_arr=split(s, «.»)​ исправить, уже несколько​ функций. С Val()​. В появившемся окне​Если ячеек немного, то​ из текстового формата​ Long Columns(«A»).NumberFormat =​ dbf, а после​ (например, «019» всё​: выделяешь первое «неправильное»​ что должно из​ ElseIf n1000 <​ L1(14, 2) =​ SumText As String​ — единицы vl​ миллионов vl =​ = «двенадцать «​ Dim M(1 to​ дней думаю над​ я думаю все​ редактора добавьте новый​ можно поменять их​ в числовой​ «General» LastRow =​ загружать в старую​ так же имеет​ число, проматываешь в​ чего получиться, а​ 5 Then 1634​ «четырнадцатого» 1571 L1(15,​ On Error Resume​ = Mid(SumInt, shag,​ Mid(SumInt, shag, 1)​ Edinicy(13) = «тринадцать​ 12) M(1) =​ этим, пытался преобразовывать​ понятно, cSng -​ модуль через меню​ формат на числовой,​(«12» преобразовать в​ Cells.SpecialCells(xlCellTypeLastCell).Row For Each​ программу которая читает​ ноль впереди)​ конец столбца, зажимаешь​ то у вам​ LETTYEAR = LETTYEAR​ 1) = «пятнадцать»:​ Next With Selection​ 1) If shag​ If vl =​ » Edinicy(14) =​ «января» M(2) =​ код в свои​ 0,121434 <> 0,1214340031147,​Insert — Module​ а затем повторно​ 12)​ oCell In Range(«A1:»​ только дбф файлы,​Буду благодарен ответам.​ шифт и нажимаешь​ макрос это куча​ & » «​ L1(15, 0) =​ SumText = .Text​ > 2 Then​ «1» And Mid(SumInt,​ «четырнадцать » Edinicy(15)​ «февраля» M(3) =​ комбинации, но особо​ одинаковые результаты только​и скопируйте туда​ ввести данные, чтобы​Вот пример:​ & «A» &​ поэтому нужно чтобы​Manyasha​ на ячейку в​ записанного макроредактором мусора​ & SYM(2) 1635​ «пятнадцатое»: L1(15, 2)​ SumText = Replace(SumText,​ If (Mid(SumInt, shag​ shag + 1,​ = «пятнадцать «​ «марта» M(4) =​ в этом не​ у «*1» и​ следующий код:​ изменение формата вступило-таки​KuklP​ LastRow) oCell.Errors(xlNumberAsText).Ignore =​ поля были в​:​ этом же столбце….или​ из которого нужно​ Else 1636 LETTYEAR​ = «пятнадцатого» 1572​ » «, «»,​ — 2, 1)​ 1) <> 0​ Edinicy(16) = «шестнадцать​ «апреля» M(5) =​ преуспел, в итоге​ «cDbl» ну и​Sub Convert_Text_to_Numbers() Selection.NumberFormat​ в силу. Проще​: Для целых:​ True Next oCell​ текстовом формате, еще​Erdni​ не в этом​ найти 10 нужных​ = LETTYEAR &​ L1(16, 1) =​ 1, , vbTextCompare)​ = 0 And​ Then GoTo LblNextX​ » Edinicy(17) =​ «мая» M(6) =​ немного упростил предложенные​ соответственно +1 и​ = «General» Selection.Value​ всего это сделать,​[a1] = CLng(x(1))​ End Sub​ не уверен насчет​,​ же, вообщем отмечаешь​ строк но без​ » » &​ «шестнадцать»: L1(16, 0)​ ‘ Удаляем в​ Mid(SumInt, shag -​ Else txt =​ «семнадцать » Edinicy(18)​ «июня» M(7) =​ варианты и на​ -1 дадут то​ = Selection.Value End​ встав на ячейку​ + CLng(x(2)) +​Vasil_M​

​ длины полей тк​​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Selection.NumberFormat = «0»​ конец выделения. Возвращаешься​ понимания того что​ SYM(3) 1637 End​ = «шестнадцатое»: L1(16,​ числе пробелы SumText​ 1, 1) =​
​ txt & Desyatki(vl)​ = «восемнадцать «​ «июля» M(8) =​ этом. По мере​ же самое. Про​ Sub​ и нажав последовательно​ CLng(x(3))​:​ пока что не​Или, если с​ назад и выбираешь​ нужно сделать это​ If 1638 End​ 2) = «шестнадцатого»​ = Replace(SumText, «‘»,​ 0 And vl​ ‘ — если​ Edinicy(19) = «девятнадцать​ «августа» M(9) =​ изучения VBA вернуть​ +/- написал выше,​Теперь после выделения диапазона​ клавиши​Для дробных -​А как это​ проверили​ десятичной частью нужно,​ Преобразовать текст в​ фактически невозможно.​ If 1639 If​ 1573 L1(17, 1)​ «», 1, ,​ = «0») Then​ конец триады от​ » ‘——————————————— Desyatki(0)​ «сентября» M(10) =​ к этому вопросу,​ умножать на 1​ всегда можно открыть​F2​ cdbl.​ можно распространить на​Если все получится,​ то​ число.​Vitality​ n100 > 0​ = «семнадцать»: L1(17,​ vbTextCompare) ‘ Удаляем​ GoTo LblNextX End​ 11 до 19​ = «» Desyatki(1)​ «октября» M(11) =​ как только расширю​ или преобразовывать (cDbl)​ вкладку​(вход в режим​Hugo​ еще 12 столбцов​ то это упростит​Код200?’200px’:»+(this.scrollHeight+5)+’px’);»>Selection.NumberFormat = «0.00»​M73568​: Есть отчет по​ And n10 =​ 0) = «семнадцатое»:​ в числе знаки​ If If shag​ то перескакиваем на​ = «десять «​ «ноября» M(12) =​ свои навыки, но​ тут кому как​Разрабочик — Макросы (Developer​ редактирования, в ячейке​: Проблема?​ справа?​ жизнь многим людям​DJ_Marker_MC​: Чуть проще, выделил​ складским остаткам. Он​ 0 And n1​ L1(17, 2) =​ ‘ SumText =​ > 1 Then​ единицы, иначе -​ Desyatki(2) = «двадцать​ «декабря» otvet=s_arr(0) &​ быть может вы​ нравится.​ — Macros)​ начинает мигаеть курсор)​Достаточно​Watcher_1​______________​: Я юзаю такой​ пустую ячейку, нажал​ приходит в формате​ = 0 Then​ «семнадцатого» 1574 L1(18,​ Replace(SumText, «,», «.»,​ If Mid(SumInt, shag​ формируем десятки Case​ » Desyatki(3) =​ » » &​ сможете помочь мне​сенкс​, выбрать наш макрос​ и затем​[a1] = —x(1)​: Вот так​Спасибо, теперь заработало,​ код:​ копировать, выделил столбцы​ блокнота (во вложении).​ 1640 LETTYEAR =​ 1) = «восемнадцать»:​ 1, , vbTextCompare)​ — 1, 1)​ 7 ‘ -​ «тридцать » Desyatki(4)​ M(s_arr(1)) & «​ разобраться с этим​KoGG​ в списке, нажать​Enter​ + x(2) +​Sub m() Dim​ гораздо лучше вариант​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub Repair_Value()’ в выделенных​ D:G, в меню​ Цель: получить экселеваримый​ Trim(LETTYEAR & «​ L1(18, 0) =​ ‘ Меняем ,​ = 1 Then​ единицы миллионов vl​ = «сорок «​ » & s_arr(2)​ пораньше.​: померил скорость:​ кнопку​. Также вместо​ x(3)​ i&, x As​ чем FormulaR1C1 =​ ячейках исправить экспортированные​ выбрать «Специальная вставка»,​ отчет из этого​ » & L100(n100,​ «восемнадцатое»: L1(18, 2)​ на . SumText​ txt = txt​ = Mid(SumInt, shag,​ Desyatki(5) = «пятьдесят​ cells(1,1).value = s​sj156​Sub www() Dim​Выполнить (Run​F2​Юрий М​ Double i =​ «=TEXT(RC[-1],0)»​ как текст данные​ и отметить «Сложить»,​ блокнота.​ 2)) 1641 ElseIf​ = «восемнадцатого» 1575​ = Replace(SumText, Chr(160),​ & Edinicy(Mid(SumInt, shag​ 1) If shag​ » Desyatki(6) =​ cells(2,1).value = otvet​: Вам за ответом​ t!, c#, i&​)​можно просто делать​: Файл не смотрел…​ 1 Do For​Hugo121​ чтобы нормально опознались​ и ОК​Т.е. вначале копирую​ n100 > 0​ L1(19, 1) =​ «», 1, ,​ — 1, 2))​ > 2 Then​ «шестьдесят » Desyatki(7)​neDark​ далеко ходить не​ t = Timer​- и моментально​ двойной щелчок левой​MsgBox Val(«12») *​ j = 1​: В dbf есть​ числа​Vitality​ данные из блокнота​ Then 1642 LETTYEAR​ «девятнадцать»: L1(19, 0)​ vbBinaryCompare) ‘ Удаляем​ Else: txt =​ If (Mid(SumInt, shag​ = «семьдесят «​: Всем привет.​ надо. Посмотрите предыдущий​ For i =​ преобразовать псевдочисла в​ кнопкой мыши по​ 2​ To 12 If​ текстовые и нетекстовые​Dim rArea As​: вопрос не в​ в эксель. Что​ = Trim(LETTYEAR &​ = «девятнадцатое»: L1(19,​ в числе неразрывные​ txt & Edinicy(vl)​ — 2, 1)​ Desyatki(8) = «восемьдесят​Подскажите есть ли​ пост и исправьте​ 1 To 10000000​ полноценные.​ ячейке.​MsgBox CDbl(«12″) *​ Len(Cells(i, j)) =​ числовые поля? Я​ Range​ том, как вручную​ делает макрос:​ » » &​ 2) = «девятнадцатого»​ пробелы SumBase =​ Else txt =​ = 0 And​ » Desyatki(9) =​ макрос для MS​ так же т.е.​ c = «123,456»​Также можно добавить этот​Само-собой, что если ячеек​ 2​ 0 Then Exit​ правда не в​On Error Resume​ преобразовать «неправильное» текстовое​- выделаем столбец​ L100(n100, 1)) 1643​ 1576 L1(20, 1)​ SumText .Collapse Direction:=wdCollapseEnd​ txt & Edinicy(vl)​ Mid(SumInt, shag -​ «девяносто » ‘———————————————​ Office 2007, который​ два вложенных цикла​ * 1 Next​ макрос в личную​ много, то такой​countervector​ Do x =​ курсе…​ Next​ число в число,​ А​ End If 1644​ = «двадцать»: L1(20,​ SumBase1 = DateSerial(Mid(SumBase,​ End If ‘-КОНЕЦ​ 1, 1) =​ Sotni(0) = «»​ преобразовывает цифры в​ FOR​ i Debug.Print Timer​ книгу макросов, чтобы​ способ, конечно, не​: Спасибо всем за​ Cells(i, j) +​Если сохранять в​ActiveWindow.RangeSelection.SpecialCells(xlCellTypeConstants).Select​ а прежде всего​- идем в​ If n10 >​ 0) = «двадцатое»:​ 7, 4), Mid(SumBase,​ БЛОКА_______________________ End Select​ 0 And vl​ Sotni(1) = «сто​ словесное написание денежных​For i =​ — t t​ использовать позднее в​ подойдет.​ ответы! Всё верно!​ 1 Cells(i, j)​ dbf как есть​If Err Then​ в том, что​ данные -> текст​ 0 And n1​ L1(20, 2) =​ 4, 2), Mid(SumBase,​ LblNextX: Next x​ = «0») Then​ » Sotni(2) =​ единиц? или что​ 1 To r.Rows.Count​ = Timer For​ любом файле.​Можно быстро преобразовать псевдочисла​ + мгновення реакция!​ = x -​ — получается не​ Exit Sub​ вместо 142,13882 я​ в столбцах, выбираем​ = 0 Then​ «двадцатого» ‘ ДЕСЯТКИ​ 1, 2)) .TypeText​ If InStr(1, LCase(Valuta),​ GoTo LblNextX End​ «двести » Sotni(3)​ то наподобие!​ For j =​ i = 1​С датами бывает та​ в нормальные, если​Немного обобщил: смотрите​ 1 Next i​ то?​With Application: .ScreenUpdating​ получаю 14 213​ с разделителями. Разбиваем​ 1645 LETTYEAR =​ 1577 L10(0, 1)​ Text:=» » &​ «руб») > 0​ If If shag​ = «триста «​Например: 1 234,​ 1 To r.Columns.Count​ To 10000000 c​ же история. Некоторые​ сделать рядом с​ файл!​ = i +​Ну если что​ = False: .EnableEvents​ 882,00000. Во-вторых, макрос​ отчет на столбцы.​

​ Trim(LETTYEAR & «​​ = «»: L10(0,​​ ДАТАПРОПИСЬЮ(SumBase1) End With​​ Then Valuta =​​ > 1 Then​​ Sotni(4) = «четыреста​
​ 56 (одна тысяча​dzug​ = CDbl(«123,456») Next​

​ даты тоже могут​​ данными дополнительный столбец​​У меня вопросы:​​ 1 Loop End​​ — задать столбцу​​ = False: .Calculation​ для того и​

​- для столбцов​​ » & L10(n10​ 2) = «»:​

CyberForum.ru

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

​ End Sub Function​​ «рубли» If InStr(1,​ If Mid(SumInt, shag​ » Sotni(5) =​
​ двести тридцать четыре​: Спасибо. помогло, правда​ i Debug.Print Timer​
​ распознаваться Excel’ем как​
​ с элементарной формулой:​
​ вы весь день​
​ Sub​
​ текстовый формат, выгрузить​
​ = xlManual: End​
​ пишется, чтобы уйти​
​ Qty on Hand,​
​ / 10, 2))​
​ L10(0, 0) =​ ДАТАПРОПИСЬЮ(ByVal ДАТА As​ LCase(Valuta), «дол») >​​ — 1, 1)​

CyberForum.ru

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

​ «пятьсот » Sotni(6)​​ рубля пятьдесят шесть​ есть свои нюансы,​ — t End​ текст, поэтому не​Двойной минус, в данном​ за компьютером, отвечаете​Vasil_M​ в него массив​ With​ от дополнительных ручных​ GL Cost, Ext​ 1646 ElseIf n10​ «» 1578 L10(1,​ Date, Optional ByVal​ 0 Then Valuta​ = 1 Then​
​ = «шестьсот «​ копеек)​ но с ними​ SubCDbl у меня​ будет работать группировка​ случае, означает, на​ на вопросы, а​:​ текстовых чисел. Их​For Each rArea​ преобразований. Но пока​

​ GL Cost: формат​​ < 20 Then​ 1) = «десять»:​ ПАДЕЖ As Integer​ = «доллары» If​ txt = txt​ Sotni(7) = «семьсот​Sasha_Smirnov​ я буду дальше​ чуть быстрее, так​ и сортировка. Решения​ самом деле, умножение​ когда вы отдыхаете?Работаете​

​Watcher_1​​ можно получить или​ In Selection.Areas​ я не могу​ данных — текстовый,​ 1647 LETTYEAR =​ L10(1, 2) =​ = 1, Optional​
​ InStr(1, LCase(Valuta), «евр»)​ & Edinicy(Mid(SumInt, shag​ » Sotni(8) =​: Есть. Например Ввести​
​ разбираться. Код получился​ что не лучше​
​ — те же​ на -1 два​ ли вы по​Премного благодарю!​ перекладыванием в текстовый​
​rArea.FormulaLocal = rArea.FormulaLocal​ понять, почему в​ т.к. при общем​ Trim(LETTYEAR & «​ «десятого»: L10(1, 0)​ ByVal ФОРМАТ As​ > 0 Then​ — 1, 2))​ «восемьсот » Sotni(9)​ число и вывести​
​ следующий:​sj156​ самые, что и​ раза. Минус на​ своим специальностям за​Апострофф​ массив (текстового типа),​
​Next rArea​ результате работы макроса​
​ формате данных часть​ » & L1(n10,​ = «десятое» 1579​ Integer = 1)​ Valuta = «евро»​
​ & «миллионов «​ = «девятьсот «​
​ его словами (число​Sub БезПробелов() ‘​: Для сохранения дробной​
​ для чисел, только​ минус даст плюс​ деньги?​: x = Cells(i,​ или индивидуально преобразовав​

​With Application: .ScreenUpdating​​ получается не тот​ значений, например, 6.0,​
​ 2)) 1648 Else​
​ L10(2, 1) =​

​ As String PROG_NAME​
​ If InStr(1, LCase(Valuta),​
​ Else: txt =​ ‘——————————————— mlrd(0) =​ до 10 000)​ Удаляет пробелы между​

​ части, независимо от​​ формат вместо числового​ и значение в​Наверное нужно создать​ j) + 1​ каждый элемент массива.​ = True: .EnableEvents​ формат ячеек, какой​ будут переведены в​ 1649 LETTYEAR =​

​ «двадцать»: L10(2, 2)​​ = «ДАТАПРОПИСЬЮ» PROG_MAX​ «грив») > 0​
​ txt & Edinicy(vl)​ "миллиардов " mlrd(1)​Именно для денежных​
​ цифрами Set r​ стандарта разделителя.​ нужно заменить на​

​ ячейке это не​ еще одну тему​

​ Cells(i, j) =​​voidex​ = True: .Calculation​ нужен.​ дату​ Trim(LETTYEAR & «​

​ = «двадцатого»: L10(2,​​ = 100 Dim​ Then Valuta =​ & mln(vl) ‘числа​ = «миллиард «​ сумм есть также​ = Application.Selection r.Replace​Sub Текст_в_числа() Dim​

​ дату-время.​​ изменит, но сам​ по этим вопросам,​ x — 1​: И как я​ = xlAutomatic: End​M73568​- для вышеперечисленных​ » & L10(Fix(n10​
​ 0) = «двадцатое»​ L1000(9) As String​ «гривны» Select Case​ в диапозоне от​ mlrd(2) = «миллиарда​ надстройка в Excel’е​ What:=» «, Replacement:=»»​

​ Temp As String,​​Jonny_5​ факт выполнения математической​ чтобы не нарушить​А ещё можно​ понимаю @ -​ With​: Исходных данных в​ столбцов убираем запятые​ / 10), 1)​ 1580 L10(3, 1)​ Dim L100(9, 2)​ Valuta Case «рубли»​

​ 11 до 19​​ » mlrd(3) =​ — не помню​ For i =​ Chislo As Double​: Добрый день!​ операции переключает формат​ правила форума, только​ так x =​ текстовй формат​End Sub​ Вашем файле нет,​ и меняем точки​

​ & » «​​ = «тридцать»: L10(3,​ As String ‘​ Naim_Valuta_1 = «рубль»​ склоняются на «миллиардов»​ «миллиарда » mlrd(4)​ у кого.​ 1 To r.Rows.Count​

​ Set r =​​помогите решить проблемку.​ данных на нужный​ как её назвать?​ exp(Cells(i, j)) Cells(i,​а какие еще​Выделяете нужный диапазон​ есть данные после​ на запятые, чтобы​ & L1(n1, 2))​ 2) = «тридцатого»:​ Сотни Dim L10(9,​ Naim_Valuta_2 = «рубля»​ независимо от последнего​ = «миллиарда «​KoGG​ For j =​ Application.Selection r.Replace What:=»​ Есть таблица exel​ нам числовой.​

​Если для каких-либо ячеек​​ j) = log(x)​ есть «знаки» для​ и запускаете макрос.​ «неудачной» работы макроса.​ обрабытывать в экслеле,​ 1650 End If​ L10(3, 0) =​

​ 2) As String​​ Naim_Valuta_5 = «рублей»​ числа триады Else​ mlrd(5) = «миллиардов​
​: Макрос переводит выделенное​
​ 1 To r.Columns.Count​
​ ", Replacement:="", LookAt:=xlPart,​
​ в одной из​
​Само-собой, вместо умножения на​

​ на листе был​​Но обычно, если​ numberforma?​_Boroda_​ Сложно сказать что​ сохраняем значения как​ 1651 Select Case​ «тридцатое» 1581 L10(4,​ ‘ Десятки Dim​ Naim_Sotye_1 = «копейка»​

​ txt = txt​​ » mlrd(6) =​ цифровое значение в​
​ r.Cells(i, j) =​

​ _ SearchOrder:=xlByRows, MatchCase:=False,​ колонок находятся числовые​ 1 можно использовать​wink

​ установлен текстовый формат​​ без претензий, пишут​
​просто исходя из​: Исправить формат экспортированных​ там было и​ числа​
​ ФОРМАТ Case 1​ 1) = «сорок»:​ L1(22, 2) As​ Naim_Sotye_2 = «копейки»​​ & Edinicy(vl) &​
​ «миллиардов » mlrd(7)​
​ текстовое предложение, добавляя​
​ CDbl(r.Cells(i, j)) Next​ SearchFormat:=False, _ ReplaceFormat:=False​
​ данные в текстовом​
​ любую другую безобидную​ (это мог сделать​
​ как-то так Cells(i,​Integer %​ как текст чисел​ почему такой результат.​
​убираем лишние ненужные​ 1652 LETTERS =​
​ L10(4, 2) =​
​ String ‘ Единицы​
​ Naim_Sotye_5 = «копеек»​
​ mln(vl) End If​
​ = «миллиардов «​
​ текст к цифрам.​
​ Next ‘ Меняет​
​ For i =​
​ формате. Какможно средствами​
​ математическую операцию: деление​
​ пользователь или программа​

​ j)=cdbl(Cells(i, j))​​Long &​Erdni​

excelworld.ru

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

​nilem​​ строки​
​ LETTDAY & «​ «сорокового» 1582 L10(5,​ Dim m(12) As​ Case «доллары» Naim_Valuta_1​ ‘-КОНЕЦ БЛОКА_______________________ Case​
​ mlrd(8) = «миллиардов​Пробелы и знаки​ шрифт на числовой​ 1 To r.Rows.Count​ VBA преобразовать текст​ на 1 или​ при выгрузке данных​Vasil_M​Single !​: Спасибо! Проблема решена​: попробуйте как-то так​- добавляем столбец​ » & LETTMONTH​ 1) = «пятьдесят»:​
​ String ‘ Месяца​
​ = «доллар» Naim_Valuta_2​
​ 6 ‘ -​ » mlrd(9) =​ ‘ при интерпретации​ (можно убрать, если​ For j =​ в числовые данные?​ прибавление-вычитание нуля. Эффект​ в Excel), то​
​: Или так, если​

​Double #​​Hugo​​ (на примере вашего​​ location и заполняем​​ & " "​
​ L10(5, 2) =​ Dim SYM(3) As​ = «доллара» Naim_Valuta_5​
​ сотни тысяч vl​

​ «миллиардов » ‘———————————————​​ удаляются​ не нужно) Selection.NumberFormat​
​ 1 To r.Columns.Count​Апострофф​ будет тот же.​ введенные потом в​ не работаете с​
​String $​: Обычно достаточно​
​ последнего файла)​ его значениями по​
​ & LETTYEAR &​
​ "пятьдесятого" 1583 L10(6,​ String Dim d​
​ = "долларов" Naim_Sotye_1​ = Mid(SumInt, shag,​ mln(0) = "миллионов​Число не более​ = "#,##0.00_ ;[Red]-#,##0.00​
​ Temp = CStr(r.Cells(i,​: Sub Txt_Num() Dim​
​Этот способ использовали еще​
​ эти ячейки числа​
​ процентами:​Currency @​200?'200px':''+(this.scrollHeight+5)+'px');">Columns(номер).TextToColumns​200?'200px':''+(this.scrollHeight+5)+'px');">With ActiveSheet.UsedRange​ формуле, убиваем формулу,​
​ " года" 1653​

​ 1) = «шестьдесят»:​ As Integer, y​

​ = «цент» Naim_Sotye_2​​ 1) txt =​ » mln(1) =​

​ 999 миллиардов 999​​ » End SubЭтот​:D

​ j).Value) Temp =​​ rn As Range​
​ в старых версиях​

excelworld.ru

​ Excel начинает считать​

 

Максим

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

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

Доброго дня!
Подскажите макрос, который преобразовывает число в текст с учетом формата ячеек.
Знаю, что в известных надстройках присутствует данный функционал, но избыточен для меня, например не нужен откат выполненных действий (это тоже потраченное время). Интересует максимальное быстродействие на большом массиве.

Какие команды могут прочитать формат ячеек?

Пример во вложении

Прикрепленные файлы

  • пример.xlsx (15.02 КБ)

Изменено: Максим08.09.2021 15:51:33

 

Андрей VG

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

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

Excel 2016, 365

Доброе время суток.
Изучите

Range.Text property (Excel)

 

Mershik

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

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

#3

08.09.2021 16:21:16

Максим, UDF — лежит здесь:

https://www.excel-vba.ru/chto-umeet-excel/vidimoe-znachenie-yachejki-v-realnoe/

Код
Function VisualVal_Text(rc As range)
    VisualVal_Text = rc.Text
End Function

Не бойтесь совершенства. Вам его не достичь.

 

bedvit

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

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

Виталий

#4

09.09.2021 08:26:45

Mershik, в той же теме, написано почему это плохое решение.
Итоговое такое:

Код
Function VisualVal(rc As Range)
    VisualVal = Application.Text(rc.Value, rc.NumberFormat)
End Function

Изменено: bedvit09.09.2021 08:27:06

«Бритва Оккама» или «Принцип Калашникова»?

 

Максим

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

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

#5

09.09.2021 10:30:27

Спасибо всем! Но интересует именно преобразование текущих ячеек, без использования функций и добавления дополнительных столбцов.
Начал писать макрос, но остановился на том, что надо прочитать содержимое ячейки + использовать функцию + записать итоговый результат в ячейку. Я новичок в макросах по разному писал код, всякие ошибки выпадали. Помогите дописать. Или где-то есть уже готовый макрос.

Код
Function VisualVal(rc As Range)
    VisualVal = Application.Text(rc.Value, rc.NumberFormat)
End Function
Sub Преобразование()


'    On Error Resume Next
    Dim i, x, y As Long

    x = ActiveCell.Column
    y = ActiveCell.Row
    For i = 0 To Selection.Count - 1
    Cells(i + y, x).Select

???
    
    Selection.Value = Selection.Value ' преобразование формул в значение
    
' для визуализации
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 65535
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With


Next
End Sub
 

Дмитрий(The_Prist) Щербаков

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

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

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

#6

09.09.2021 10:37:13

Цитата
Максим написал:
без использования функций и добавления дополнительных столбцов

странное требование про «без функций». Чем они Вам помешали-то? :) Не знаю зачем там у Вас всякие заливки устанавливаются, поэтому подправил как мог

Код
Function VisualVal(rc As Range)
    VisualVal = Application.Text(rc.Value, rc.NumberFormat)
End Function
Sub Преобразование()
Dim rc As Range, sres$
For Each rc In Selection.Cells
    sres = VisualVal(rc)
    'назначаем текстовый формат ячейкам, чтобы избежать лишних преобразований
    rc.NumberFormat = "@"
    rc.Value = sres
Next
     
' для визуализации
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 65535
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
End Sub

есть нюансы, который надо использовать по ситуации. Например, если для ячеек установлен формат вроде такого «0000000» и в значении будут ведущие нули — то назначение текстового формата для ячейки перед записью значений обязательно.

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

 

RAN

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

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

#7

09.09.2021 10:39:25

Код
Sub Преобразование()
    Dim cl As Range
    For Each cl In Selection
        cl = VisualVal(cl)
    Next
End Sub
 

RAN, если формат ячеек на листе изначально Общий(General), то не все ячейки смогут преобразоваться корректно.

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

 

Jack Famous

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

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

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

#9

09.09.2021 10:46:17

#7

полностью рабочий  :idea:

Без заливок и прочего лишнего от ТСа:

Изменено: Jack Famous09.09.2021 10:47:04

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

RAN

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

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

 

Максим

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

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

Большое спасибо все участникам! Очень помогли.
Закраску я делал для визуализации, что цикл отработан.

Изменено: Максим09.09.2021 11:16:09

 

Максим

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

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

#12

10.09.2021 11:57:11

Итого получился код с % выполнения, может кому понадобиться

Код
Function VisualVal(rc As Range)
    VisualVal = Application.Text(rc.Value, rc.NumberFormat)
End Function

Sub Преобразование_число_в_текст()
Dim rc As Range, calc, ab, xy, a As Long, sres$
'начало отсчета времени
'a = Timer

    Application.CutCopyMode = False
    ab = Selection.Count
    ' Отключение пересчёта формул, чтобы ускорить макрос.
    ' Перед отключением запоминаем режим формул, чтобы потом его вернуть.
    calc = Application.Calculation
    Application.Calculation = xlCalculationManual
    Application.ScreenUpdating = False

For Each rc In Selection.Cells
    sres = VisualVal(rc)
    'назначаем текстовый формат ячейкам, чтобы избежать лишних преобразований
    rc.NumberFormat = "@"
    rc.Value = sres
    
    xy = xy + 1
'    Application.StatusBar = "Выполнено: " & xy & " из " & ab  ' кол-во обработанных ячеек
    Application.StatusBar = "Выполнено: " & Int(100 * xy / ab) & "%"  ' процент обработанных ячеек
'    DoEvents 'чтобы форма перерисовывалась
Next

    'сбрасываем значение статусной строки
    Application.StatusBar = False
    ' Включение того, что отключили.
    Application.ScreenUpdating = True
    Application.Calculation = calc


'вывод затраченного времени
'MsgBox Timer - a

End Sub

Like this post? Please share to your friends:
  • Преобразовать число в проценты excel формула
  • Преобразовать число в минут excel
  • Преобразовать числа с запятыми в числа с точками excel
  • Преобразовать цифры в текст прописью в excel
  • Преобразовать цифру в месяц в excel