хм...у меня все равно не открывается. Скачайте свой файл, у Вас открывается? По теме, UDF подойдет?[vba]
Код
Function строка_наоборот(cell As Range) Dim arr, res$, i& arr = Split(cell, " ") For i = UBound(arr) To 0 Step -1 res = res & arr(i) & " " Next i строка_наоборот = Mid(res, 1, Len(res) - 1) End Function
[/vba]
хм...у меня все равно не открывается. Скачайте свой файл, у Вас открывается? По теме, UDF подойдет?[vba]
Код
Function строка_наоборот(cell As Range) Dim arr, res$, i& arr = Split(cell, " ") For i = UBound(arr) To 0 Step -1 res = res & arr(i) & " " Next i строка_наоборот = Mid(res, 1, Len(res) - 1) End Function
Function строка_наоборот(cell As Range) Dim arr, res$, i& arr = Split(cell, " ") For i = UBound(arr) To 0 Step -1 res = res & arr(i) & "-"'Вот здесь менять разделитель Next i строка_наоборот = Mid(res, 1, Len(res) - 1) End Function
Function строка_наоборот(cell As Range) Dim arr, res$, i& arr = Split(cell, " ") For i = UBound(arr) To 0 Step -1 res = res & arr(i) & "-"'Вот здесь менять разделитель Next i строка_наоборот = Mid(res, 1, Len(res) - 1) End Function
Manyasha, Спасибо, UDF подойдет, но прописываю данную функцию, и порядок слов нарушается, то есть, кроме дефисов есть еще и пробелы, например у меня в файле названия городов -Черный Яр- и получается при применении функции Яр Черный, а так не должно быть т. д. В этом случае как должна выглядеть функция?
Manyasha, Спасибо, UDF подойдет, но прописываю данную функцию, и порядок слов нарушается, то есть, кроме дефисов есть еще и пробелы, например у меня в файле названия городов -Черный Яр- и получается при применении функции Яр Черный, а так не должно быть т. д. В этом случае как должна выглядеть функция?disub
disub, Марина (Manyasha) просто забыла еще в 1 строке поменять разделитель[vba]
Код
Function строка_наоборот(cell As Range) Dim arr, res$, i& arr = Split(cell, "-")'Вот тут тоже менять разделитель For i = UBound(arr) To 0 Step -1 res = res & arr(i) & "-"'Вот здесь менять разделитель Next i строка_наоборот = Mid(res, 1, Len(res) - 1) End Function
[/vba]
еще 1 вариант UDF [vba]
Код
Function ReverseWords$(s$, Optional delim$ = "-") Dim arr$(), i& arr = Split(StrReverse(s), delim) For i = 0 To UBound(arr) arr(i) = StrReverse(arr(i)) Next ReverseWords = Join(arr, delim) End Function
[/vba]
disub, Марина (Manyasha) просто забыла еще в 1 строке поменять разделитель[vba]
Код
Function строка_наоборот(cell As Range) Dim arr, res$, i& arr = Split(cell, "-")'Вот тут тоже менять разделитель For i = UBound(arr) To 0 Step -1 res = res & arr(i) & "-"'Вот здесь менять разделитель Next i строка_наоборот = Mid(res, 1, Len(res) - 1) End Function
[/vba]
еще 1 вариант UDF [vba]
Код
Function ReverseWords$(s$, Optional delim$ = "-") Dim arr$(), i& arr = Split(StrReverse(s), delim) For i = 0 To UBound(arr) arr(i) = StrReverse(arr(i)) Next ReverseWords = Join(arr, delim) End Function
krosav4ig, Доброго времени суток! В продолжении этой темы. Подскажите, можно ли избежать изменения порядка слов в названии города, который имеет дефис, например, получается при применении этой функции название Спас-Клепики переходит в Клепики-Спас, а такого не должно быть.
krosav4ig, Доброго времени суток! В продолжении этой темы. Подскажите, можно ли избежать изменения порядка слов в названии города, который имеет дефис, например, получается при применении этой функции название Спас-Клепики переходит в Клепики-Спас, а такого не должно быть.disub
Сообщение отредактировал disub - Вторник, 02.02.2016, 15:22
disub, для этого придется задать список городов с дефисом. У меня в файле смотрите имя "города" (ctrl + f3). На основе кода от krosav4ig: [vba]
Код
Function ReverseWords$(s$, Optional delim$ = "-") Dim arr$(), i& For Each cell In Range("города") s = Replace(s, cell.Value, Replace(cell.Value, delim, "|||")) Next cell arr = Split(StrReverse(s), delim) For i = 0 To UBound(arr) arr(i) = StrReverse(arr(i)) Next ReverseWords = Replace(Join(arr, delim), "|||", "-") End Function
[/vba]
disub, для этого придется задать список городов с дефисом. У меня в файле смотрите имя "города" (ctrl + f3). На основе кода от krosav4ig: [vba]
Код
Function ReverseWords$(s$, Optional delim$ = "-") Dim arr$(), i& For Each cell In Range("города") s = Replace(s, cell.Value, Replace(cell.Value, delim, "|||")) Next cell arr = Split(StrReverse(s), delim) For i = 0 To UBound(arr) arr(i) = StrReverse(arr(i)) Next ReverseWords = Replace(Join(arr, delim), "|||", "-") End Function