Функции преобразования типов данных в 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.2643E—14 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.
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!
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_1Hugo121
: Нужно какую нибудь.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 EndVasil_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() DimJonny_5Попробовал записать макрос c неправильной десятичной
GL Cost? Mid(LETTDAY, 2) & «девяностого» ‘ СОТНИ m(1) = «января» Naim_Valuta_2 = «гривны» txt = txt mln(9) = «миллионов
Удаляем в числе на 0. Как отбрасывает дробную часть.Если стоит автофильтрскопируйте ее приводит к большому i&, x As: Добрый день!
используя эту функцию запятой и F9SkyPro » » & 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 Есть таблица exelActiveCell.FormulaR1C1 = «=TEXT(RC[-1],0)»не
числа. строки мешают? » & LETTYEAR 2) = «» m(4) = «апреля» Naim_Sotye_2 = «копейки» триады от 11 tys(1) = «тысяча 1, , vbTextCompare) пост. «открыть» для себя
итогов на ячейку и поменяйте у
перестает нормально работать сортировка j = 1 в одной из совсем то
M73568200?’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» End200?’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 ForJonny_5
planetaexcel.ru
Преобразование чисел-как-текст в нормальные числа
Хотя непонятно зачем в ячейку запятую, устанавливаю числовой форматЧто ж, посмотрим = «четыреста»: L100(4, 1) = «»: Valuta Naim_Valuta_5 = 2, 1) = = «тысяч « числе неразрывные пробелы 75 To 109 пользовался просто макрорекодером, Do x =Ctrl+Alt+V
число-как-текст различаются: 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 SubJonny_5Hugo121на: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 & «)»Если псеводчисла, которые надо правой кнопкой мыши,Стоит автофильтр. Необходимо: ячейки становится не текст ,тоесть excelFieldInfo:=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 а фича», конечно, после сканера. Setdzug CStr(myvalue) End Sub.Columns(«D:D»).Replace What:=»,», Replacement:=»»SkyProString $ = «шеститысячного» 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
в ячейку А2Sub БезПробелов() ‘ и ничего неДанные (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.ReplaceDim 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 итд..: Теперь всё работает,SkyProVitality = «тысяч» 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 по умолчанию 9Erdni подробно описали ситуацию запуске макроса числовые ‘ число 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 AsSub дата() 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 специально для имеющиеся сейчас вПреобразовать в число (Convertcountervector надо открывать: ни как писать это слева в самой данные листа ориджинал 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 макроса. Нажмите сочетаниеФайл — Параметры - ответов в темеBusine2009voidexSelection.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 = ssj156Sub www() DimВыполнить (RunF2Юрий М 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 ForHugo121 чтобы нормально опознались и ОКТ.е. вначале копирую 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.ReplaceSub Текст_в_числа() Dim
дату-время. изменит, но сам по этим вопросам, x — 1: И как я = xlAutomatic: EndM73568- для вышеперечисленных » & 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 можно использовать
установлен текстовый формат без претензий, пишут
просто исходя из: Исправить формат экспортированных там было и числа
ФОРМАТ 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_MSingle !: Спасибо! Проблема решена: попробуйте как-то так- добавляем столбец » & 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(номер).TextToColumns200?'200px':''+(this.scrollHeight+5)+'px');">With ActiveSheet.UsedRange формуле, убиваем формулу,
" года" 1653
1) = «шестьдесят»: As Integer, y
= «цент» Naim_Sotye_2 1) txt = » mln(1) =
999 миллиардов 999 » End SubЭтот
j).Value) Temp = rn As Range
в старых версиях
excelworld.ru
Excel начинает считать
Максим Пользователь Сообщений: 18 |
Доброго дня! Какие команды могут прочитать формат ячеек? Пример во вложении Прикрепленные файлы
Изменено: Максим — 08.09.2021 15:51:33 |
Андрей VG Пользователь Сообщений: 11878 Excel 2016, 365 |
Доброе время суток. Range.Text property (Excel) |
Mershik Пользователь Сообщений: 8277 |
#3 08.09.2021 16:21:16 Максим, UDF — лежит здесь: https://www.excel-vba.ru/chto-umeet-excel/vidimoe-znachenie-yachejki-v-realnoe/
Не бойтесь совершенства. Вам его не достичь. |
||
bedvit Пользователь Сообщений: 2477 Виталий |
#4 09.09.2021 08:26:45 Mershik, в той же теме, написано почему это плохое решение.
Изменено: bedvit — 09.09.2021 08:27:06 «Бритва Оккама» или «Принцип Калашникова»? |
||
Максим Пользователь Сообщений: 18 |
#5 09.09.2021 10:30:27 Спасибо всем! Но интересует именно преобразование текущих ячеек, без использования функций и добавления дополнительных столбцов.
|
||
Дмитрий(The_Prist) Щербаков Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
#6 09.09.2021 10:37:13
странное требование про «без функций». Чем они Вам помешали-то? Не знаю зачем там у Вас всякие заливки устанавливаются, поэтому подправил как мог
есть нюансы, который надо использовать по ситуации. Например, если для ячеек установлен формат вроде такого «0000000» и в значении будут ведущие нули — то назначение текстового формата для ячейки перед записью значений обязательно. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||||
RAN Пользователь Сообщений: 7091 |
#7 09.09.2021 10:39:25
|
||
RAN, если формат ячеек на листе изначально Общий(General), то не все ячейки смогут преобразоваться корректно. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
|
Jack Famous Пользователь Сообщений: 10852 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
#9 09.09.2021 10:46:17 #7
полностью рабочий
Изменено: Jack Famous — 09.09.2021 10:47:04 Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
|
RAN Пользователь Сообщений: 7091 |
|
Максим Пользователь Сообщений: 18 |
Большое спасибо все участникам! Очень помогли. Изменено: Максим — 09.09.2021 11:16:09 |
Максим Пользователь Сообщений: 18 |
#12 10.09.2021 11:57:11 Итого получился код с % выполнения, может кому понадобиться
|
||