Поменять местами СловоОдин_СловоДва
stalber
Дата: Среда, 29.08.2018, 16:12 |
Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 370
Репутация:
7
±
Замечаний:
40% ±
Excel 2007
Добрый день. Необходима формула которая смогла бы поменять местами СловоОдин_СловоДва нужно получить СловоДва_СловоОдин перегородкой ориентиром служит нижнее подчёркивание.
Добрый день. Необходима формула которая смогла бы поменять местами СловоОдин_СловоДва нужно получить СловоДва_СловоОдин перегородкой ориентиром служит нижнее подчёркивание. stalber
Сообщение отредактировал awaddwaawddw - Среда, 29.08.2018, 16:12
Ответить
Сообщение Добрый день. Необходима формула которая смогла бы поменять местами СловоОдин_СловоДва нужно получить СловоДва_СловоОдин перегородкой ориентиром служит нижнее подчёркивание. Автор - stalber Дата добавления - 29.08.2018 в 16:12
_Boroda_
Дата: Среда, 29.08.2018, 16:23 |
Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация:
6479
±
Замечаний:
0% ±
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,Код
=MID(F5;FIND("_";F5)+1;LEN(F5))&"_"&LEFT(F5;FIND("_";F5)-1)
awaddwaawddw,Код
=MID(F5;FIND("_";F5)+1;LEN(F5))&"_"&LEFT(F5;FIND("_";F5)-1)
iMrTidy
Вышенаписанное мной не является истиной, но лишь моя точка зрения, которая скорее всего ошибочна.
Сообщение отредактировал iMrTidy - Среда, 29.08.2018, 16:40
Ответить
Сообщение awaddwaawddw,Код
=MID(F5;FIND("_";F5)+1;LEN(F5))&"_"&LEFT(F5;FIND("_";F5)-1)
Автор - iMrTidy Дата добавления - 29.08.2018 в 16:28
StoTisteg
Дата: Среда, 29.08.2018, 16:33 |
Сообщение № 4
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация:
103
±
Замечаний:
0% ±
Excel 2010
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 If End Function
[/vba]Формулой тоже можно, но я в них не силён, мне проще UDF за пять минут накодить, чем формулу полчаса тестить
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 If End Function
[/vba]Формулой тоже можно, но я в них не силён, мне проще 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 If End Function
[/vba]Формулой тоже можно, но я в них не силён, мне проще UDF за пять минут накодить, чем формулу полчаса тестить Автор - StoTisteg Дата добавления - 29.08.2018 в 16:33
StoTisteg
Дата: Среда, 29.08.2018, 16:41 |
Сообщение № 5
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация:
103
±
Замечаний:
0% ±
Excel 2010
С произвольным разделителем:[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]
С произвольным разделителем:[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
Интуитивно понятный код - это когда интуитивно понятно, что это код.
Ответить
Сообщение С произвольным разделителем:[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
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация:
6479
±
Замечаний:
0% ±
2003; 2007; 2010; 2013 RUS
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]
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_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: 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 и формула [vba]Код
Function aaa$(t$) With CreateObject("vbscript.regexp"): .Pattern = "([а-яё]+)_([а-яё]+)": .Global = True: .IgnoreCase = True aaa = .Replace(t, "$+_$1") End With End Function
[/vba]Код
=СЦЕПИТЬ(СЖПРОБЕЛЫ(ПРАВБ(ПОДСТАВИТЬ($F$5;"_";ПОВТОР(" ";100));100))&"_";СЖПРОБЕЛЫ(ЛЕВБ(ПОДСТАВИТЬ($F$5;"_";ПОВТОР(" ";100));100)))
awaddwaawddw , еще вариант UDF в G5 и формула [vba]Код
Function aaa$(t$) With CreateObject("vbscript.regexp"): .Pattern = "([а-яё]+)_([а-яё]+)": .Global = True: .IgnoreCase = True aaa = .Replace(t, "$+_$1") End With End Function
[/vba]Код
=СЦЕПИТЬ(СЖПРОБЕЛЫ(ПРАВБ(ПОДСТАВИТЬ($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 = True: .IgnoreCase = True aaa = .Replace(t, "$+_$1") End With End Function
[/vba]Код
=СЦЕПИТЬ(СЖПРОБЕЛЫ(ПРАВБ(ПОДСТАВИТЬ($F$5;"_";ПОВТОР(" ";100));100))&"_";СЖПРОБЕЛЫ(ЛЕВБ(ПОДСТАВИТЬ($F$5;"_";ПОВТОР(" ";100));100)))
Автор - sv2014 Дата добавления - 01.09.2018 в 02:15
китин
Дата: Суббота, 01.09.2018, 12:01 |
Сообщение № 8
Группа: Модераторы
Ранг: Экселист
Сообщений: 7014
Репутация:
1073
±
Замечаний:
0% ±
Excel 2007;2010;2016
sv2014 , ну ведь не первый день на форуме..... формулу в тэги кто будет оформлять? исправил за вас
sv2014 , ну ведь не первый день на форуме..... формулу в тэги кто будет оформлять? исправил за васкитин
Не судите очень строго:я пытаюсь научиться ЯД 41001877306852
Сообщение отредактировал китин - Суббота, 01.09.2018, 12:11
Ответить
Сообщение sv2014 , ну ведь не первый день на форуме..... формулу в тэги кто будет оформлять? исправил за васАвтор - китин Дата добавления - 01.09.2018 в 12:01