Страницы: 1
RSS
Отделить английские слова от русских
 
Подскажите, пожалуйста, какая формула может отделить английские слова, которые идут только вначале строки от остального.
Пример:
Nefertiti Honey Масло для тела Нефертити - Мед  - Kings & Queens / 200 мл
Надо, чтобы осталось  в одной колонке: Nefertiti Honey
и  в другой Масло для тела Нефертити - Мед - Kings & Queens / 200 мл
Заранее благодарна.
 
вариант (33 скрытых столбца)
Удивление есть начало познания © Surprise me!
И да пребудет с нами сила ВПР.
 
Как вариант - перенести столбец в Word, Ctrl+H, найти ([A-Za-z])( @)([А-Яа-я])
заменить на \1~\3
Больше - Подстановочные знаки, заменить все. Потом обратно в Excel, Данные - Текст по столбцам, разделитель ~
 
Как-то так: второй аргумент ИСТИНА для получения первой половины ячейки и ЛОЖЬ - для второй
Код
1
2
3
4
5
6
7
8
9
10
11
12
Function РазделитьСлова(Слово As String, Optional Первое As Boolean = True) As String
Dim I As Long
Dim S1 As String
S1 = LCase(Слово)
For I = 1 To Len(Слово)
If Mid(S1, I, 1) Like "[а-яё]" Then
If Первое Then РазделитьСлова = Left(Слово, I - 1) Else РазделитьСлова = Right(Слово, Len(Слово) - I + 1)
РазделитьСлова = Trim(РазделитьСлова)
Exit Function
End If
Next I
End Function
 
http://excelvba.ru/code/SplitLanguages
 
Код
1
2
3
4
Function ikki$(s$, Optional n& = 1)
  Set r = CreateObject("vbscript.regexp"): r.ignorecase = True: r.Pattern = "^([^а-яё]+)(.*)$"
  Set m = r.Execute(s): If m.Count Then ikki = Trim(m(0).submatches(n - 1))
End Function
Изменено: ikki - 17.07.2015 23:37:04
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Большое спасибо всем за отклик. Воспользовалась вариантами и все получилось:)
От ikki получилось проще проще! Еще раз спасибо.  
 
Продолжил вариант формул от Ёк-Мок, массивные, без доп столбцов.
Код
1
2
=ЛЕВСИМВ(A2;ПОИСКПОЗ(1=1;ЕЧИСЛО(ПОИСКПОЗ(ПСТР(A2;СТРОКА($A$1:$A$999);1);СИМВОЛ(СТРОКА($A$192:$A$223));1));0)-1)
=ПСТР(A2;ПОИСКПОЗ(1=1;ЕЧИСЛО(ПОИСКПОЗ(ПСТР(A2;СТРОКА($A$1:$A$999);1);СИМВОЛ(СТРОКА($A$192:$A$223));1));0);999)
 
так для разнообразия формулами
Код
1
2
=ЛЕВСИМВ(A2;МИН(ЕСЛИОШИБКА(ПОИСК(СИМВОЛ(СТРОКА($224:$255));A2);"ф"))-1)
=ПОДСТАВИТЬ(A2;B2;"")
Лень двигатель прогресса, доказано!!!
Страницы: 1
Читают тему
Наверх
Loading...