Страницы: 1
RSS
Как из ячейки удалить все русские символы?
 
Всем доброго дня!  
 
Есть книга, в одном столбце наименования продукции. Как из него удалить русские символы, оставив только латинские.  
 
Например: "Macлo для KПП DRAGON HD GL-5 п/с 75W90 1л" чтобы было "DRAGON HD GL-5 75W90 1"  
 
Заранее благодарю!  
Владимир.
 
Тема многократно обсуждалась. Поиск работает - вот одна из тем: <BR>http://www.planetaexcel.ru/forum.php?thread_id=27107
 
{quote}{login=firstik}{date=18.09.2011 01:01}{thema=Как из ячейки удалить все русские символы?}{post}Всем доброго дня!  
 
Есть книга, в одном столбце наименования продукции. Как из него удалить русские символы, оставив только латинские.  
 
Например: "Macлo для KПП DRAGON HD GL-5 п/с 75W90 1л" чтобы было "DRAGON HD GL-5 75W90 1"  
 
Заранее благодарю!  
Владимир.{/post}{/quote}  
 
без регулярных выражений можно как то так  
 
Function hhh(Stxt$)  
For i = Len(Stxt) To 1 Step -1  
a = Mid(Stxt, i, 1)  
If a Like "[А-я]" Then Stxt = Replace(Stxt, a, "")
Next  
hhh = Stxt  
End Function
Спасибо
 
последнюю строку лучше так  
hhh = Trim(Stxt)  
что бы убрать лишние пробелы
Спасибо
 
to R Dmitry  
т.е. это макрос?  
я его в модуль VBA добавил, не появляется че то.  
наверное чет не то делаю
 
"[А-яЁё]" : )
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
{quote}{login=The_Prist}{date=18.09.2011 01:41}{thema=}{post}У Вас в слове "Macлo" литера "а" на английском...{/post}{/quote}  
это сейчас не суть важно, прежде чем удалять все русские символы, я другим макросом проверю соответствие ru/en.
 
{quote}{login=The_Prist}{date=18.09.2011 01:41}{thema=}{post}У Вас в слове "Macлo" литера "а" на английском...{/post}{/quote}  
 
Я только начинаю познавать excel, выше R Dmitry написал код, это макрос его в модуль пихать?)))  
 
нашел еще топик где вы предлагаете код :  
Sub ReplaceSymbols()  
Dim objRegExp As Object, sOlsString As String, sNewString As String  
sOlsString = "Фрукт/ Apple"""" 123="  
Set objRegExp = CreateObject("VBScript.RegExp")  
objRegExp.Global = True: objRegExp.IgnoreCase = True  
objRegExp.Pattern = "["""",\=,,\/, а-я,ё]"
sNewString = objRegExp.Replace(sOlsString, "")  
End Sub  
 
в моем случае он "прокатит"?
 
{quote}{login=nerv}{date=18.09.2011 01:42}{thema=}{post}"[А-яЁё]" : ){/post}{/quote}
да точно про Ёё...моё я забыл :)  
off.. завтра пойду на моторшоу смотреть, что это за чудо (Ёмобиль) инженерной мысли :)
Спасибо
 
Prist, R Dmitry спасибо вам огромное!!!  
Здоровья и удачи вам!  
Респект!
 
Function hhh(Stxt$)  
For i = Len(Stxt) To 1 Step -1  
a = Mid(Stxt, i, 1)  
If a Like "[А-я]" Then Stxt = Replace(Stxt, a, "")
Next  
hhh = Stxt  
End Function  
 
могу ли я в эту функцию добавить условие: вместе с русскими буквами удалять определенные наборы символов (п/с, син. и т.п.)  
Это должно выглядеть так: If a Like "[А-я"п/с""син."]" Then Stxt = Replace(Stxt, a, "")
Правильно?
 
Кстати, тут такой, как мне кажется, интересный момент: слово "Маша". Ф-ция Replace удалит букву "а" на первом проходе, но все равно счетчик будет считать до 4-х. Т.е. по идее 1 холостой проход. А если это предложение? Или текст здоровущий? : )  
 
Function hhh(Stxt$)  
For i = Len(Stxt) To 1 Step -1  
a = Mid(Stxt, i, 1)  
If a Like "[А-яЁё]" Then Stxt = Replace(Stxt, a, "")
Next  
hhh = Stxt  
End Function  
 
уж не знаю, что быстрее, но вот еще один вариант:  
 
Option Compare Binary  
             
Private Function CleanString(ByVal Str$) As String  
Dim i%, x As String * 1  
Do While i < Len(Str)  
   i = i + 1: x = Mid(Str, i, 1)  
   If x Like "[А-яЁё]" Then
       Str = Replace(Str, x, ""): i = i - 1  
   End If  
Loop  
CleanString = Trim(Str)  
End Function  
 
Sub j()  
v = CleanString("Маша")  
End Sub
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
>>могу ли я в эту функцию добавить  
 
В эту вряд ли. Могут предложить вот такой вариант (приблизительно)  
 
Public Function io$(x$)  
Dim v, x  
For Each v in Array("Ваше выражение", "Ещё одно")  
x=replace(x,v,"")  
next  
io=x  
End Sub  
 
и объединить все эт дело в одну ф-цию или макрос
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
{quote}{login=The_Prist}{date=18.09.2011 01:41}{thema=}{post}У Вас в слове "Macлo" литера "а" на английском...{/post}{/quote}Если бы только "а" ;) Там ВСЕ буквы английские кроме "л"!  
 
Для удаления лишних слов и русских букв на месте можно использовать такой макрос:  
 
Sub firstik()  
 
Const WORDS = "п/с син" 'список слов для удаления, через пробел  
 
Dim x  
For Each x In Split(WORDS) 'замена слов  
   Selection.Replace x, "", xlPart, , False  
Next  
 
For x = 192 To 223 'замена русских букв кроме Ё  
   Selection.Replace Chr$(x), ""  
Next  
 
Selection.Value = Application.Trim(Selection) 'удаление лишних пробелов  
End Sub
 
{quote}{login=firstik}{date=18.09.2011 01:01}{thema=Как из ячейки удалить все русские символы?}{post}Всем доброго дня!  
 
Есть книга, в одном столбце наименования продукции. Как из него удалить русские символы, оставив только латинские.  
 
Например: "Macлo для KПП DRAGON HD GL-5 п/с 75W90 1л" чтобы было "DRAGON HD GL-5 75W90 1"  
 
Заранее благодарю!  
Владимир.{/post}{/quote}  
 
Недавно для себя писал такую формулу массива (кстати, именно для запчастей):  
 
=ПСТР(B4;НАИМЕНЬШИЙ(ЕСЛИ(ПОИСКПОЗ(КОДСИМВ(ПСТР(B4&"A";СТРОКА($1:$99);1)&1);{0;65;123})=2;СТРОКА($1:$99));1);100)  
 
Но суть здесь, не удалить все русские символы, а найти первую латинскую.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Есть книга, в одном столбце наименования продукции. Как из него удалить русские символы, оставив только латинские.  
 
Например: "Macлo для KПП DRAGON HD GL-5 п/с 75W90 1л" чтобы было "DRAGON HD GL-5 75W90 1"  
 
 
Метод для блондинок: заменить все русские буквы на букву А (например): с помощью ctrl H по очереди заменять по одной букве русского алфавита) а потом удалить все буквы А - также заменой на пусто.
 
Здравствуйте, господа! Предлагаю вот такую идею:  
Sub NORUS_1()  
Dim arr$(), rov&, col&  
Dim stroki As Range, str As Range, a As Range, x As Range  
rov = activecell.Row: col = activecell.Column:  
' stroki- список строк  
Set stroki = Range(Cells(rov, col), Cells(Rows.Count, col).End(xlUp))  
' a- список символов, которые подлежат замене  
Set a = Range(Cells(rov, col + 1), Cells(Rows.Count, col + 1).End(xlUp))  
For Each str In stroki  
For Each x In a  
arr = Split(str, x)  
str = Join(arr, "")  
Next x  
Next str  
End Sub  
 
Например, у меня есть список уже выведенных символов в своей базе- русские, греческие, латинские, специальные знаки. Можно просто их скопировать в нужный столбец, у меня это (row, col+1). Очень хорошо справляется с повторами символов.
Страницы: 1
Читают тему
Наверх