Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как получить системный разделитель целой и дробной части числа?

478
19 декабря 2003 года
XtreamAll
279 / / 01.10.2003
Пишу функцию для ВБА...
...для преобразования строки
...надо получить системный разделитель
...или Ёкселевский(он ведь может и не системный юзать)
267
19 декабря 2003 года
Cutty Sark
1.2K / / 17.10.2002
Цитата:
Originally posted by XtreamAll
Пишу функцию для ВБА...
...для преобразования строки
...надо получить системный разделитель
...или Ёкселевский(он ведь может и не системный юзать)



Application.International(xlDecimalSeparator)

478
19 декабря 2003 года
XtreamAll
279 / / 01.10.2003
Пасиба!
Искать некогда - работы куча!
1.3K
19 декабря 2003 года
IKor
116 / / 04.12.2002
А почему-то сразу подумал про
=ПСТР(ТЕКСТ(3/2;"Основной");2;1)
267
19 декабря 2003 года
Cutty Sark
1.2K / / 17.10.2002
Цитата:
Originally posted by IKor
А почему-то сразу подумал про
=ПСТР(ТЕКСТ(3/2;"Основной");2;1)



Остроумно!
Но на англоязычном компе не будет формата Основной. Будет General. Так задача сводится к предыдущей... :(

А свойство .International всё равно рекомендую запомнить - там очень много полезной инфы.

478
19 декабря 2003 года
XtreamAll
279 / / 01.10.2003
Цитата:
Originally posted by IKor
А почему-то сразу подумал про
=ПСТР(ТЕКСТ(3/2;"Основной");2;1)



Поиск разделителя - только часть задачи...
...чтобы всю задачу формулами решить, придется много своих писать:D

267
19 декабря 2003 года
Cutty Sark
1.2K / / 17.10.2002
Цитата:
Originally posted by XtreamAll


Поиск разделителя - только часть задачи...
...чтобы всю задачу формулами решить, придется много своих писать:D



Если ты строчку в число переводишь, то вот здесьhttp://forum.codenet.ru/showthread.php?s=&threadid=13213 есть функция ВЧис, которая понимает и . и ,

478
19 декабря 2003 года
XtreamAll
279 / / 01.10.2003
Цитата:
Originally posted by Cutty Sark


Если ты строчку в число переводишь, то вот здесьhttp://forum.codenet.ru/showthread.php?s=&threadid=13213 есть функция ВЧис, которая понимает и . и ,



Пасибо, но я уже написал:}
задача была типа этой:

http://forum.codenet.ru/showthread.php?s=&threadid=14359

но не так глобально...

478
19 декабря 2003 года
XtreamAll
279 / / 01.10.2003
Если кому надо...

операторы попросили...сделал:

Код:
'Функция для вырезания числа из строки...
Public Function ЧислоИЗСтр(Ячейка As Range, Optional Начальная_позиция As Integer = 1, _
                            Optional Конечная_позиция As Integer = 1000) As Double
Dim i As Integer
Dim exitStr As String
Dim str As String
Dim sep As String
Dim ch As String
Dim flag As Boolean
If Len(Ячейка.value) = 0 Then ЧислоИЗСтр = 0: Exit Function
flag = True
exitStr = ""
sep = Application.International(xlDecimalSeparator)
str = Trim(Ячейка.value)
For i = Начальная_позиция To Конечная_позиция
    ch = Mid(str, i, 1)
    If Len(exitStr) = 0 And Not IsDigit(ch) Then
        Do While Not IsDigit(ch)
            i = i + 1
            ch = Mid(str, i, 1)
        Loop
    End If
    If Len(exitStr) > 0 And _
        Not IsDigit(ch) And Not InStr(1, ",.", ch) > 0 And _
            Not (ch = " " Or IsDigit(Mid(str, i + 1, 1))) Then
        ЧислоИЗСтр = CDbl(exitStr): Exit Function
    End If
    Select Case Asc(ch)
        Case Asc("0") To Asc("9")
            exitStr = exitStr & ch
        Case Asc(","), Asc(".")
            If IsDigit(Mid(str, i + 1, 1)) And Not (i + 1 > Конечная_позиция) Then
                If flag Then exitStr = exitStr & sep: flag = False
            End If
        Case Else
            exitStr = exitStr + ""
    End Select
Next i
If Not (Len(exitStr) = 0 Or Trim(exitStr) = sep) Then
    ЧислоИЗСтр = CDbl(exitStr)
Else
    ЧислоИЗСтр = 0
End If
End Function

'Функция для проверки символа (число/не число)
'Если символ - число, возвращает True, иначе возвращает False
Private Function IsDigit(something As Variant) As Boolean
    IsDigit = False
    If Asc(something) >= Asc("0") And Asc(something) <= Asc("9") Then IsDigit = True
End Function
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог