Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Деление текстовой переменной на текстовую и цисленную части. - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Деление текстовой переменной на текстовую и цисленную части. (Макросы/Sub)
Деление текстовой переменной на текстовую и цисленную части.
Sashagor1982 Дата: Среда, 17.02.2016, 20:42 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 179
Репутация: 12 ±
Замечаний: 20% ±

Excel 2007
Здравствуйте форумчане. Подскажите пожалуйста, как можно с помощью функции vba разделить текстовую функцию
Код
set k="иван18"
разделить на части "иван" и "18", при этом текстовая переменная:
1. Численная часть всегда в конце;
2. Может содержать в первой половине цифры и пробелы например "1 иван18";
Заранее спасибо.


Сообщение отредактировал Sashagor1982 - Среда, 17.02.2016, 20:42
 
Ответить
СообщениеЗдравствуйте форумчане. Подскажите пожалуйста, как можно с помощью функции vba разделить текстовую функцию
Код
set k="иван18"
разделить на части "иван" и "18", при этом текстовая переменная:
1. Численная часть всегда в конце;
2. Может содержать в первой половине цифры и пробелы например "1 иван18";
Заранее спасибо.

Автор - Sashagor1982
Дата добавления - 17.02.2016 в 20:42
_Boroda_ Дата: Среда, 17.02.2016, 21:01 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 11297
Репутация: 4661 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Что-то в этом роде хотели?
[vba]
Код
Sub tt()
    k_ = "иван18"
    If IsNumeric(Right(k_, 1)) Then
        n_ = Len(k_) - 1
        For i = 1 To n_
            ki_ = Right(k_, 1 + i)
            If IsNumeric(ki_) Then
                kn_ = ki_
            Else
                kt_ = Left(k_, n_ - i + 1)
                Exit For
            End If
        Next i
    End If
End Sub
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЧто-то в этом роде хотели?
[vba]
Код
Sub tt()
    k_ = "иван18"
    If IsNumeric(Right(k_, 1)) Then
        n_ = Len(k_) - 1
        For i = 1 To n_
            ki_ = Right(k_, 1 + i)
            If IsNumeric(ki_) Then
                kn_ = ki_
            Else
                kt_ = Left(k_, n_ - i + 1)
                Exit For
            End If
        Next i
    End If
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 17.02.2016 в 21:01
Sashagor1982 Дата: Среда, 17.02.2016, 22:51 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 179
Репутация: 12 ±
Замечаний: 20% ±

Excel 2007
А функцией наверное никак не сделать....
[moder]"Функцией" - в смысле "без макроса"? А почему тогда вопрос в ветке VBA?
Сделать-то можно, только примерчик бы.


Сообщение отредактировал _Boroda_ - Среда, 17.02.2016, 23:58
 
Ответить
СообщениеА функцией наверное никак не сделать....
[moder]"Функцией" - в смысле "без макроса"? А почему тогда вопрос в ветке VBA?
Сделать-то можно, только примерчик бы.

Автор - Sashagor1982
Дата добавления - 17.02.2016 в 22:51
StoTisteg Дата: Среда, 17.02.2016, 23:54 | Сообщение № 4
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
Одной функцией — никак. Можно ещё перебирать символы справа, пока не найдётся буква, но вариант Бороды надёжнее.
[vba]
Код

Const Фиговина = "121432риотло413024"
Dim i, Number As Integer

i = 1
Do While IsNumeric(Right(Фиговина, i))
    Number = Val(Right(Фиговина, i))
    i = i + 1
Loop
[/vba]


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
СообщениеОдной функцией — никак. Можно ещё перебирать символы справа, пока не найдётся буква, но вариант Бороды надёжнее.
[vba]
Код

Const Фиговина = "121432риотло413024"
Dim i, Number As Integer

i = 1
Do While IsNumeric(Right(Фиговина, i))
    Number = Val(Right(Фиговина, i))
    i = i + 1
Loop
[/vba]

Автор - StoTisteg
Дата добавления - 17.02.2016 в 23:54
Sashagor1982 Дата: Четверг, 18.02.2016, 07:31 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 179
Репутация: 12 ±
Замечаний: 20% ±

Excel 2007
Спасибо
 
Ответить
СообщениеСпасибо

Автор - Sashagor1982
Дата добавления - 18.02.2016 в 07:31
RAN Дата: Четверг, 18.02.2016, 08:34 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4532
Репутация: 920 ±
Замечаний: 0% ±

2010
[vba]
Код
Function Мяу(s$)
    With CreateObject("VBScript.RegExp")
        .Pattern = "\d+$"
        If .test(s) Then
            Мяу = .Execute(s)(0)
            Мяу = Val(Мяу)    ' преобразовать в число
        Else
            Мяу = CVErr(xlErrValue)
        End If
    End With
End Function
[/vba]


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Четверг, 18.02.2016, 08:56
 
Ответить
Сообщение[vba]
Код
Function Мяу(s$)
    With CreateObject("VBScript.RegExp")
        .Pattern = "\d+$"
        If .test(s) Then
            Мяу = .Execute(s)(0)
            Мяу = Val(Мяу)    ' преобразовать в число
        Else
            Мяу = CVErr(xlErrValue)
        End If
    End With
End Function
[/vba]

Автор - RAN
Дата добавления - 18.02.2016 в 08:34
sv2014 Дата: Четверг, 18.02.2016, 10:28 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 166
Репутация: 37 ±
Замечаний: 0% ±

Excel 2013
Sashagor1982, еще вариант функции yyy1 и yyy2

[vba]
Код
Function yyy1%(t$)
   Dim i%
    For i = Len(t) To 1 Step -1
     If Mid(t, i, 1) Like "[а-яё]" Then yyy1 = Mid(t, i + 1): Exit Function
    Next
End Function
[/vba]
[vba]
Код
Function yyy2$(t$)
    Dim i%
   For i = Len(t) To 1 Step -1
     If Mid(t, i, 1) Like "[а-яё]" Then yyy2 = Left(t, i): Exit Function
   Next
End Function
[/vba]
К сообщению приложен файл: example_18_02_2.xls(36Kb)


Сообщение отредактировал sv2014 - Четверг, 18.02.2016, 10:38
 
Ответить
СообщениеSashagor1982, еще вариант функции yyy1 и yyy2

[vba]
Код
Function yyy1%(t$)
   Dim i%
    For i = Len(t) To 1 Step -1
     If Mid(t, i, 1) Like "[а-яё]" Then yyy1 = Mid(t, i + 1): Exit Function
    Next
End Function
[/vba]
[vba]
Код
Function yyy2$(t$)
    Dim i%
   For i = Len(t) To 1 Step -1
     If Mid(t, i, 1) Like "[а-яё]" Then yyy2 = Left(t, i): Exit Function
   Next
End Function
[/vba]

Автор - sv2014
Дата добавления - 18.02.2016 в 10:28
Udik Дата: Четверг, 18.02.2016, 15:02 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 1586
Репутация: 191 ±
Замечаний: 0% ±

Excel 2016 х 64
просмотрел условие


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com


Сообщение отредактировал Udik - Четверг, 18.02.2016, 15:03
 
Ответить
Сообщениепросмотрел условие

Автор - Udik
Дата добавления - 18.02.2016 в 15:02
Sashagor1982 Дата: Четверг, 18.02.2016, 22:17 | Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 179
Репутация: 12 ±
Замечаний: 20% ±

Excel 2007
sv2014, Спасибо
 
Ответить
Сообщениеsv2014, Спасибо

Автор - Sashagor1982
Дата добавления - 18.02.2016 в 22:17
Gustav Дата: Пятница, 19.02.2016, 22:36 | Сообщение № 10
Группа: Друзья
Ранг: Старожил
Сообщений: 1409
Репутация: 541 ±
Замечаний: 0% ±

начинал с Excel 4.0...
Мои "5 копеек" в копилочку - без циклов:
[vba]
Код
Sub io()
    Dim ss$, p1$, p2$
    ss = "15  иван    18965000"
    p2 = StrReverse(Mid(Val(1 & StrReverse(ss)), 2))
    p1 = Trim(Left(ss, Len(ss) - Len(p2)))
    Debug.Print p1 & " --- " & p2 '15  иван --- 18965000
End Sub
[/vba]


Мой tip box - яд 41001663842605

Сообщение отредактировал Gustav - Пятница, 19.02.2016, 22:40
 
Ответить
СообщениеМои "5 копеек" в копилочку - без циклов:
[vba]
Код
Sub io()
    Dim ss$, p1$, p2$
    ss = "15  иван    18965000"
    p2 = StrReverse(Mid(Val(1 & StrReverse(ss)), 2))
    p1 = Trim(Left(ss, Len(ss) - Len(p2)))
    Debug.Print p1 & " --- " & p2 '15  иван --- 18965000
End Sub
[/vba]

Автор - Gustav
Дата добавления - 19.02.2016 в 22:36
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Деление текстовой переменной на текстовую и цисленную части. (Макросы/Sub)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2017 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!