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

Вход

Регистрация

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

 

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

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Деление текстовой переменной на текстовую и цисленную части. (Макросы/Sub)
Деление текстовой переменной на текстовую и цисленную части.
Sashagor1982 Дата: Среда, 17.02.2016, 20:42 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 287
Репутация: -6 ±
Замечаний: 0% ±

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
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6479 ±
Замечаний: 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
Группа: Проверенные
Ранг: Обитатель
Сообщений: 287
Репутация: -6 ±
Замечаний: 0% ±

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
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 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]


Интуитивно понятный код - это когда интуитивно понятно, что это код.
 
Ответить
СообщениеОдной функцией — никак. Можно ещё перебирать символы справа, пока не найдётся буква, но вариант Бороды надёжнее.
[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
Группа: Проверенные
Ранг: Обитатель
Сообщений: 287
Репутация: -6 ±
Замечаний: 0% ±

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

Автор - Sashagor1982
Дата добавления - 18.02.2016 в 07:31
RAN Дата: Четверг, 18.02.2016, 08:34 | Сообщение № 6
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 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
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 226
Репутация: 61 ±
Замечаний: 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 (36.0 Kb)


Сообщение отредактировал 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
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация: 192 ±
Замечаний: 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
Группа: Проверенные
Ранг: Обитатель
Сообщений: 287
Репутация: -6 ±
Замечаний: 0% ±

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

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

начинал с Excel 4.0, видел 2.1
Мои "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 из 1
  • 1
Поиск:

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