Поменять местами СловоОдин_СловоДва
stalber
Дата: Среда, 29.08.2018, 16:12 |
Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 371
Репутация:
7
±
Замечаний:
40% ±
Excel 2021
Добрый день. Необходима формула которая смогла бы поменять местами СловоОдин_СловоДва нужно получить СловоДва_СловоОдин перегородкой ориентиром служит нижнее подчёркивание.
Добрый день. Необходима формула которая смогла бы поменять местами СловоОдин_СловоДва нужно получить СловоДва_СловоОдин перегородкой ориентиром служит нижнее подчёркивание. stalber
Сообщение отредактировал awaddwaawddw - Среда, 29.08.2018, 16:12
Ответить
Сообщение Добрый день. Необходима формула которая смогла бы поменять местами СловоОдин_СловоДва нужно получить СловоДва_СловоОдин перегородкой ориентиром служит нижнее подчёркивание. Автор - stalber Дата добавления - 29.08.2018 в 16:12
_Boroda_
Дата: Среда, 29.08.2018, 16:23 |
Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16906
Репутация:
6615
±
Замечаний:
±
2003; 2007; 2010; 2013 RUS
Так нужно?
=ПСТР(F5 &"_"&F5 ;ПОИСК("_";F5 )+1;ДЛСТР(F5 ))
Или классика
=ПРАВБ(F5 ;ДЛСТР(F5 )-ПОИСК("_";F5 ))&"_"&ЛЕВБ(F5 ;ПОИСК("_";F5 )-1)
=ПСТР(F5 ;ПОИСК("_";F5 )+1;99)&"_"&ЛЕВБ(F5 ;ПОИСК("_";F5 )-1)
Так нужно?
=ПСТР(F5 &"_"&F5 ;ПОИСК("_";F5 )+1;ДЛСТР(F5 ))
Или классика
=ПРАВБ(F5 ;ДЛСТР(F5 )-ПОИСК("_";F5 ))&"_"&ЛЕВБ(F5 ;ПОИСК("_";F5 )-1)
=ПСТР(F5 ;ПОИСК("_";F5 )+1;99)&"_"&ЛЕВБ(F5 ;ПОИСК("_";F5 )-1)
_Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение Так нужно?
=ПСТР(F5 &"_"&F5 ;ПОИСК("_";F5 )+1;ДЛСТР(F5 ))
Или классика
=ПРАВБ(F5 ;ДЛСТР(F5 )-ПОИСК("_";F5 ))&"_"&ЛЕВБ(F5 ;ПОИСК("_";F5 )-1)
=ПСТР(F5 ;ПОИСК("_";F5 )+1;99)&"_"&ЛЕВБ(F5 ;ПОИСК("_";F5 )-1)
Автор - _Boroda_ Дата добавления - 29.08.2018 в 16:23
iMrTidy
Дата: Среда, 29.08.2018, 16:28 |
Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 85
Репутация:
14
±
Замечаний:
0% ±
NO
awaddwaawddw,
=ПСТР(F5 ;НАЙТИ("_";F5 )+1;ДЛСТР(F5 ))&"_"&ЛЕВСИМВ(F5 ;НАЙТИ("_";F5 )-1)
awaddwaawddw,
=ПСТР(F5 ;НАЙТИ("_";F5 )+1;ДЛСТР(F5 ))&"_"&ЛЕВСИМВ(F5 ;НАЙТИ("_";F5 )-1)
iMrTidy
Вышенаписанное мной не является истиной, но лишь моя точка зрения, которая скорее всего ошибочна.
Сообщение отредактировал iMrTidy - Среда, 29.08.2018, 16:40
Ответить
Сообщение awaddwaawddw,
=ПСТР(F5 ;НАЙТИ("_";F5 )+1;ДЛСТР(F5 ))&"_"&ЛЕВСИМВ(F5 ;НАЙТИ("_";F5 )-1)
Автор - iMrTidy Дата добавления - 29.08.2018 в 16:28
StoTisteg
Дата: Среда, 29.08.2018, 16:33 |
Сообщение № 4
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация:
103
±
Замечаний:
0% ±
Excel 2010
UDF:
Function ПЕРЕСТСЛОВА(СЛОВО As String ) As String
Dim Word1 As String , Word2 As String
Dim Sep As Integer
Sep = InStr (1 , СЛОВО, "_" , vbTextCompare)
If Sep > 0 Then
Word1 = Left (СЛОВО, Sep - 1 )
Word2 = Right (СЛОВО, Len (СЛОВО) - Sep)
ПЕРЕСТСЛОВА = Word2 & "_" & Word1
Else : ПЕРЕСТСЛОВА = СЛОВО
End If
End Function
Формулой тоже можно, но я в них не силён, мне проще UDF за пять минут накодить, чем формулу полчаса тестить
UDF:
Function ПЕРЕСТСЛОВА(СЛОВО As String ) As String
Dim Word1 As String , Word2 As String
Dim Sep As Integer
Sep = InStr (1 , СЛОВО, "_" , vbTextCompare)
If Sep > 0 Then
Word1 = Left (СЛОВО, Sep - 1 )
Word2 = Right (СЛОВО, Len (СЛОВО) - Sep)
ПЕРЕСТСЛОВА = Word2 & "_" & Word1
Else : ПЕРЕСТСЛОВА = СЛОВО
End If
End Function
Формулой тоже можно, но я в них не силён, мне проще UDF за пять минут накодить, чем формулу полчаса тестить StoTisteg
Интуитивно понятный код - это когда интуитивно понятно, что это код.
Сообщение отредактировал StoTisteg - Среда, 29.08.2018, 16:35
Ответить
Сообщение UDF:[vba]
Function ПЕРЕСТСЛОВА(СЛОВО As String ) As String Dim Word1 As String , Word2 As String Dim Sep As Integer Sep = InStr(1, СЛОВО , "_", vbTextCompare ) If Sep > 0 Then Word1 = Left(СЛОВО , Sep - 1) Word2 = Right(СЛОВО , Len(СЛОВО ) - Sep ) ПЕРЕСТСЛОВА = Word2 & "_" & Word1 Else : ПЕРЕСТСЛОВА = СЛОВО End IfEnd Function
[/vba]Формулой тоже можно, но я в них не силён, мне проще UDF за пять минут накодить, чем формулу полчаса тестить Автор - StoTisteg Дата добавления - 29.08.2018 в 16:33
StoTisteg
Дата: Среда, 29.08.2018, 16:41 |
Сообщение № 5
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация:
103
±
Замечаний:
0% ±
Excel 2010
С произвольным разделителем:
Function ПЕРЕСТСЛОВА(ByVal СЛОВО As String , Optional ByVal РАЗДЕЛИТЕЛЬ As String = "_" ) As String
Dim Word1 As String , Word2 As String
Dim Sep As Integer
Sep = InStr (1 , СЛОВО, РАЗДЕЛИТЕЛЬ, vbTextCompare)
If Sep > 0 Then
Word1 = Left (СЛОВО, Sep - 1 )
Word2 = Right (СЛОВО, Len (СЛОВО) - Sep)
ПЕРЕСТСЛОВА = Word2 & РАЗДЕЛИТЕЛЬ & Word1
Else : ПЕРЕСТСЛОВА = СЛОВО
End If
End Function
С произвольным разделителем:
Function ПЕРЕСТСЛОВА(ByVal СЛОВО As String , Optional ByVal РАЗДЕЛИТЕЛЬ As String = "_" ) As String
Dim Word1 As String , Word2 As String
Dim Sep As Integer
Sep = InStr (1 , СЛОВО, РАЗДЕЛИТЕЛЬ, vbTextCompare)
If Sep > 0 Then
Word1 = Left (СЛОВО, Sep - 1 )
Word2 = Right (СЛОВО, Len (СЛОВО) - Sep)
ПЕРЕСТСЛОВА = Word2 & РАЗДЕЛИТЕЛЬ & Word1
Else : ПЕРЕСТСЛОВА = СЛОВО
End If
End Function
StoTisteg
Интуитивно понятный код - это когда интуитивно понятно, что это код.
Ответить
Сообщение С произвольным разделителем:[vba]
Function ПЕРЕСТСЛОВА(ByVal СЛОВО As String , Optional ByVal РАЗДЕЛИТЕЛЬ As String = "_") As String Dim Word1 As String , Word2 As String Dim Sep As Integer Sep = InStr(1, СЛОВО , РАЗДЕЛИТЕЛЬ , vbTextCompare ) If Sep > 0 Then Word1 = Left(СЛОВО , Sep - 1) Word2 = Right(СЛОВО , Len(СЛОВО ) - Sep ) ПЕРЕСТСЛОВА = Word2 & РАЗДЕЛИТЕЛЬ & Word1 Else : ПЕРЕСТСЛОВА = СЛОВО End If End Function
[/vba] Автор - StoTisteg Дата добавления - 29.08.2018 в 16:41
_Boroda_
Дата: Среда, 29.08.2018, 16:47 |
Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 16906
Репутация:
6615
±
Замечаний:
±
2003; 2007; 2010; 2013 RUS
iMrTidy , если в решении одна или несколько формул (или не очень большой код макроса), то выкладывайте решение не только в файле, но и в теле поста. Не очень интересно качать файл для того, чтобы только одну формулу посмотреть. Ну и если уж макросы пошли
Function Perest(ssyl)
On Error Resume Next
ar = Split (ssyl, "_" )
Perest = ssyl
Perest = ar(1 ) & "_" & ar(0 )
End Function
Function Perest(ssyl, Optional ByVal Razd = "_" )
On Error Resume Next
ar = Split (ssyl, Razd)
Perest = ssyl
Perest = ar(1 ) & Razd & ar(0 )
End Function
iMrTidy , если в решении одна или несколько формул (или не очень большой код макроса), то выкладывайте решение не только в файле, но и в теле поста. Не очень интересно качать файл для того, чтобы только одну формулу посмотреть. Ну и если уж макросы пошли
Function Perest(ssyl)
On Error Resume Next
ar = Split (ssyl, "_" )
Perest = ssyl
Perest = ar(1 ) & "_" & ar(0 )
End Function
Function Perest(ssyl, Optional ByVal Razd = "_" )
On Error Resume Next
ar = Split (ssyl, Razd)
Perest = ssyl
Perest = ar(1 ) & Razd & ar(0 )
End Function
_Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение iMrTidy , если в решении одна или несколько формул (или не очень большой код макроса), то выкладывайте решение не только в файле, но и в теле поста. Не очень интересно качать файл для того, чтобы только одну формулу посмотреть. Ну и если уж макросы пошли [vba]
Function Perest(ssyl ) On Error Resume Next ar = Split(ssyl , "_") Perest = ssyl Perest = ar(1) & "_" & ar(0)End Function
[/vba] [vba]
Function Perest(ssyl , Optional ByVal Razd = "_") On Error Resume Next ar = Split(ssyl , Razd ) Perest = ssyl Perest = ar(1) & Razd & ar(0)End Function
[/vba]Автор - _Boroda_ Дата добавления - 29.08.2018 в 16:47
sv2014
Дата: Суббота, 01.09.2018, 02:15 |
Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 226
Репутация:
61
±
Замечаний:
0% ±
Excel 2013
awaddwaawddw , еще вариант UDF в G5 и формула
Function aaa$(t$)
With CreateObject ("vbscript.regexp" ): .Pattern = "([а-яё]+)_([а-яё]+)" : .Global = True : .IgnoreCase = True
aaa = .Replace(t, "$+_$1" )
End With
End Function
=СЦЕПИТЬ(СЖПРОБЕЛЫ(ПРАВБ(ПОДСТАВИТЬ($F$5 ;"_";ПОВТОР(" ";100));100))&"_";СЖПРОБЕЛЫ(ЛЕВБ(ПОДСТАВИТЬ($F$5 ;"_";ПОВТОР(" ";100));100)))
awaddwaawddw , еще вариант UDF в G5 и формула
Function aaa$(t$)
With CreateObject ("vbscript.regexp" ): .Pattern = "([а-яё]+)_([а-яё]+)" : .Global = True : .IgnoreCase = True
aaa = .Replace(t, "$+_$1" )
End With
End Function
=СЦЕПИТЬ(СЖПРОБЕЛЫ(ПРАВБ(ПОДСТАВИТЬ($F$5 ;"_";ПОВТОР(" ";100));100))&"_";СЖПРОБЕЛЫ(ЛЕВБ(ПОДСТАВИТЬ($F$5 ;"_";ПОВТОР(" ";100));100)))
sv2014
Сообщение отредактировал sv2014 - Суббота, 01.09.2018, 09:52
Ответить
Сообщение awaddwaawddw , еще вариант UDF в G5 и формула [vba]
Function aaa $(t $) With CreateObject("vbscript.regexp"): .Pattern = "([а-яё]+)_([а-яё]+)": .Global = Тrue: .IgnoreCase = Тrue aaa = .Replace(t ; "$+_$1") End WithEnd Function
[/vba]
=СЦЕПИТЬ(СЖПРОБЕЛЫ(ПРАВБ(ПОДСТАВИТЬ($F$5 ;"_";ПОВТОР(" ";100));100))&"_";СЖПРОБЕЛЫ(ЛЕВБ(ПОДСТАВИТЬ($F$5 ;"_";ПОВТОР(" ";100));100)))
Автор - sv2014 Дата добавления - 01.09.2018 в 02:15
китин
Дата: Суббота, 01.09.2018, 12:01 |
Сообщение № 8
Группа: Модераторы
Ранг: Экселист
Сообщений: 7035
Репутация:
1079
±
Замечаний:
0% ±
Excel 2007;2010;2016
sv2014 , ну ведь не первый день на форуме..... формулу в тэги кто будет оформлять? исправил за вас
sv2014 , ну ведь не первый день на форуме..... формулу в тэги кто будет оформлять? исправил за васкитин
Не судите очень строго:я пытаюсь научиться ЯД 41001877306852
Сообщение отредактировал китин - Суббота, 01.09.2018, 12:11
Ответить
Сообщение sv2014 , ну ведь не первый день на форуме..... формулу в тэги кто будет оформлять? исправил за васАвтор - китин Дата добавления - 01.09.2018 в 12:01