Страницы: 1
RSS
Как отделить целые тысячи точкой в екселе
 
Здравствуйте,    
я с екселем не особо на дружеской ноге, а по работе пришлось оформлять один отчет. так вот у меня есть столбик цифр, где тысячи никакими знаками не отделяются, а мне нужно чтобы они отделялись точной. Например у меня есть 5555 а мне нужно 5.555  
Плиз помогите!
 
какой excel? 2003 или 2007?  
если 2003:  
сервис -> Параметры -> Международные    
снять галку Использовать систекмные разделители  
Поставить разделитель разрядов "." (точка, естественно без кавычек)  
 
Далее выделить диапазон нужный, открыть формат ячеек,  на вкладке Число выбрать вариант "(все форматы)" и в поле ТИП ввести код #.###
 
можно не меняя системные разделители  
просто поставить такой формат  
#"."###
 
У меня на компе системный разделитель тока, поэтому отделить точкой не получается, точка оделяет дробную чась. Но зато получается запятой. пример во вложении.  
Если ситемный разделитель запятая, то наоборот...
 
Подскажите пожалуйста, как из (большого) числа, например, 277 346 582 сделать текст формата 277.346.582 -    
 
если ввести формат #"." ###"."### то визуально это будет выглядеть правильно, но мне надо чтобы это был текст.  
 
 
Выше было сказано, что это можно сделать с помощью формул...
 
для этого UDF  
Ждем Hugo :)
 
Sub smm120427_1619()  
'может и накрутила, но получилось типа ---решение в лоб, не демая  
''''''''''''''''''''''''''var0  
Debug.Print fmm(123456789)  
Debug.Print fmm(-123456789)  
 
Debug.Print fmm(1234567)  
Debug.Print fmm(1234567)  
 
Debug.Print fmm(1234)  
Debug.Print fmm(12)  
'''''''''''''''''''''''''var1  
Debug.Print fmm1(123456789)  
Debug.Print fmm1(-123456789)  
 
Debug.Print fmm1(1234567)  
Debug.Print fmm1(1234567)  
 
Debug.Print fmm1(1234)  
Debug.Print fmm1(12)  
 
End Sub  
Function fmm(s0)  
Dim s1, s2, s2a, j1, j2  
s1 = Format(s0, "0")  
s2 = ""  
j1 = 0  
j2 = Len(s1)  
Do While j2 > 0  
If j1 >= 3 And Mid(s1, j2, 1) >= "0" Then  
s2a = "." & s2  
s2 = s2a  
j1 = 0  
End If  
j1 = j1 + 1  
's2 = Mid(s1, j2, 1)  
s2a = Mid(s1, j2, 1) & s2  
s2 = s2a  
j2 = j2 - 1  
Loop  
Debug.Print s0, s2, "==v0=",  
fmm = s2  
End Function  
Function fmm1(s0)  
 
Dim s1, s2, s2a, j1, j2  
s1 = Format(s0, "### ### ###")  
fmm1 = Replace(s1, " ", ".")  
Debug.Print s0, fmm1, "====v1=",  
End Function
 
итоги выполнения  
 
123456789    123.456.789   ==v0=         123.456.789  
-123456789    -123.456.789  ==v0=         -123.456.789  
1234567      1.234.567     ==v0=         1.234.567  
1234567      1.234.567     ==v0=         1.234.567  
1234         1.234         ==v0=         1.234  
12           12            ==v0=         12---------------------ok  
123456789    123.456.789   ====v1=       123.456.789  
-123456789    -123.456.789  ====v1=       -123.456.789  
1234567      1.234.567     ====v1=       1.234.567  
1234567      1.234.567     ====v1=       1.234.567  
1234         .1.234        ====v1=       .1.234  
12           ..12          ====v1=       ..12---------------------увы
 
спасибо за вариант со скриптом, но я ВБА совсем не знаю - буду изучать, но хотелось бы решить проблемы встроенными средствами )  
 
пока мне самому вот что придумалось:  
 
число 277346582 после формулы =ТЕКСТ(I4;"# ###") получается в формате    
277 346 582, при этом это уже не число, а ТЕКСТ.  
в соседнюю ячейку вставляю его как значения - а потом пробелы заменяю на точки обычной вставкой/заменой (cntr + H)  
 
Вопрос только, как формулой поменять пробелы на точки, - сам я не особо сейчас пойму как. И все чтобы одной формулой работало. :)
 
получилось решение, но использую 3 столбца - 2 разных вариант; надо как-то сократить до  1 формулы...
 
получилось вот что...  
 
но мне кажется, не оптимальная формула
 
=ЛЕВСИМВ(C1;ДЛСТР(C1)-6)&"."&ПСТР(ПРАВСИМВ(C1;6);1;3)&"."&ПРАВСИМВ(C1;3)  
Число <1000000 нужно дополнительно проверять на количество символов, чтобы не оставлять лишние точки.
 
=ПОДСТАВИТЬ(ТЕКСТ(C1;"# ###");" ";".")
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
спасибо... всегда бы так коротко и понятно )
Страницы: 1
Читают тему
Наверх