Страницы: 1 2 След.
RSS
Удалить из текста ненужные символы
 
Как формулой из текстовой строки удалить все лишние символы по списку?

То есть, например, есть диапазон где в каждой ячейке указан 1 из символов, которые нужно удалить и есть, например, такой текст (таких подобных текстов - много)
<option value="53">--- Торговля с машин</option>
<option optionS value="153">--- Торговля внутри помещений</option STOP>

и т.д.
нужно из этого текста удалить все английские буквы (и большие и маленькие), а также некоторые символы:
от a до z
<
>
/
"
 
Может, можно макросом?
Да в Вашем файле (давненько ведь на форуме).

По показанному: можно формулой удалять не символы, а часть строки до и после. Только определить границы.
А границы:
>---
</opt
Похожих примеров на форуме - море
Цитата
...в каждой ячейке указан 1 из символов
А вот это настораживает. В одной ячейке кроме нужного текста только один ненужный символ?
 
Если работа разовая, то через "Поиск и замена" значения. Все символы заменяете на ничего... Ну а если "шашечки" то я бы тоже макрос думал...
Если автоматизировать бардак, то получится автоматизированный бардак.
 
то, что в каждой ячейке один из символов - это имеется ввиду просто одна из ячеек диапазона в котором указаны весь перечень (исчерпывающий) символов, которые нужно удалить из текстовых строк похожих на те две, что я написал в первом посте
часть строки до и после удалять можно было бы, если бы дело ограничивалось только >--- </opt, так как есть ряд текстов в которых начало и окончание совсем не похожи на текущие...
поэтому то вопрос и сформулирован: как удалить только не символы, которые есть в указанном диапазоне
 
просто почему хочется именно формулой: есть ощущение, что это таки формулой возможно сделать... особенно учитывая очень высокий уровень тех профи экселя, которые есть на форуме!
 
Т.е. показать не хотите? Где находятся данные, где образцы для удаления?
Ваше право.

Как удалить? Макросом.
Перебираем в цикле символы и сравниваем с образцовыми.
Удачи в реализации.
 
Цитата
так как есть ряд текстов в которых...
Так и будете - "на пыльцах разглагольствовать"?!.
В поиск - лень, примера - нет, а хотелка пухнет. Так с ней в "Работу" - быстрей разобраться - http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=list&FID=7 ... ;)
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
Как вы себе представляете эту формулу? Она возьмет исходный текст в виде массива и в одну ячейку скопирует, в которой эта формула записана??? Если исходный текст в разных местах, то на лист выводится кнопочка, которая запустит макрос, который и проделает нужную работу...
Если автоматизировать бардак, то получится автоматизированный бардак.
 
Удалить все символы "а":

Код
=ПОДСТАВИТЬ(A1;"а";"")
 
Век живи, век учись - два века проживешь!
 
вот
 
Аналогично  :evil:  
 2.3. Приложите файл(ы) с примером (общим весом не более 100 Кб) в реальной структуре и форматах данных того, что есть сейчас и того, что хотелось бы на выходе.
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
=ПСТР(B2;ПОИСКПОЗ(ИСТИНА;КОДСИМВ(ПСТР(B2;СТРОКА($1:$99);1))>191;);ПРОСМОТР(2;1/(КОДСИМВ(ПСТР(B2;СТРОКА($1:$99);1))>191);СТРОКА($1:$99))-ПОИСКПОЗ(ИСТИНА;КОДСИМВ(ПСТР(B2;СТРОКА($1:$99);1))>191;)+1)
Изменено: Владимир - 05.10.2014 11:04:26
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
невероятно!!! спасибо огромное, Владимир!
только вот...
эта формула никак не обращается к диапазону, где символы ..
:)
Изменено: Zhukov_K - 17.01.2014 16:09:09
 
Цитата
Как вы себе представляете эту формулу? Она возьмет исходный текст в виде массива и в одну ячейку скопирует, в которой эта формула записана???
Представил такую UDF  :)  


Код
Function delsomesymb(txt As String, symb As Range)
    Dim c As Range
    For Each c In symb: txt = Replace(txt, c.Value, ""): Next
    delsomesymb = txt
End Function


Код
=delsomesymb(B2,$A$10:$A$51)
 
Изменено: Hugo - 17.01.2014 16:25:08
 
Цитата
эта формула никак не обращается к диапазону, где символы
напротив ваших символов вбейте формулу КОДСИМВ(A10) увидите закономерность. <191
или это обязательное условие - тогда нужно было это оговаривать.
Изменено: V - 17.01.2014 16:25:25
 
Цитата
эта формула никак не обращается к диапазону, где символы ..
Это так важно?
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Там остаются

= Торговля с машин/
S = Торговля внутри помещений/ STOP
 
ну, так как, в принципе, в этом частном случае, решение устраивает на 99%, то можно сказать, что не важно, но, а вообще, если бы было более универсальное решение, то, подозреваю, оно пригодилось бы не только мне
 
Цитата
подозреваю, оно пригодилось бы не только мне
1 - Остается заручиться поддержкой... ООН.  ;)
2 - Это "тонкий" намек на макрос для вас? Искать- подгонять не желаете, тогда почему бы откровенно не заказать - http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=list&FID=7 ?!
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
а что такое ООН? про АОН - автоматический определитель номера - слышал, а ООН это что? "овтамотический .." что ли? )
 
Я самоуверенно думал что представил универсальное 100% решение :)
Видать не для всех...
 
Твою функцию пользовательскую не смотрел, но посмотрю обязательно, спасибо, в любом случае, уверен, что она работает как надо
по результатам отпишусь! )
 
Цитата
Hugo написал:  
Код
Function delsomesymb(txt As String, symb As Range)
    Dim c As Range
    For Each c In symb: txt = Replace(txt, c.Value, ""): Next
    delsomesymb = txt
End Function
У Вас в функции Replace параметры местами поменяны поэтому в txt ничего не пишется.

Для меня работает такой вариант:
Код
Public Function УДАЛИТЬСИМВОЛ(ЯЧЕЙКА As Range, ТЕКСТ As String) As String
    ТЕКСТ = Replace(ЯЧЕЙКА.Text, ТЕКСТ, "")
    УДАЛИТЬСИМВОЛ = ТЕКСТ
End Function
Если кому-то не лениво, то объясните мне пожалуйста некорректность ссылки объекта ЯЧЕЙКА саму на себя в цикле For Each - но вариант в принципе рабочий.
Кстати можно удалять не только символы но и куски текста. Работает по тому же принципу что и у Hugo:
Код
=УДАЛИТЬСИМВОЛ(A4;B4) 'где А4 текст где надо удалить символ/текст записанный в ячейке В4
Изменено: northpolar - 17.10.2017 11:48:57
 
Кнопка цитирования не для ответа. Сделайте из бездумной копии нормальную цитату (если она нужна) или уберите ее.
 
Пункт 4.2. форума относится к рекомендациям. Цитаты в сообщениях #7, #11 - ок? Если я свою цитату под спойлер уберу это будет корректно?
Объясните мне пожалуйста: в чем принципиальная разница для модератора каким образом я ответил человеку (для меня это неочевидная вещь и на что она влияет: дефицит места на сервере, цитата не индексируется, грузит сервер дополнительной обработкой кода форума, иное).
Кстати ваш обработчик любопытно работает - я делал одну цитату а получилось целых четыре, где можно почитать описание, чтобы избегать подобных ошибок на вашем форуме при оформлении ответа.
 
Цитата
northpolar написал: в чем принципиальная разница для модератора каким образом я ответил человеку
1. Правила.
2. Лишние растянутые цитаты затрудняют чтение и мешают восприятию информации.
3. Вы не процитировали. Это не цитата. Это копия целого сообщения и к понятию "цитирование" не имеет никакого отношения.
4. Где почитать: И-нет расскажет, что такое цитата и в каких случаях она применяется. Даже если что-то не понравилось после создания сообщения, можно вернуться и подкорректировать его.
5. Из сообщения №11 цитату убрал.
 
Спасибо. Я понял Ваш посыл. Не буду разводить флуд, но хочу отметить, что имею право приводить дословную выдержку любого оправданного размера. В данном конкретном случае я посчитал необходимым привести обе цитаты во избежание недопонимания.
 
Посмотрите сейчас. Логика нарушилась?
Цитата - часть сообщения, на котором делается акцент. А Вы что акцентировали целым сообщением?
Вы нажали кнопку цитирования для ответа и теперь пытаетесь под это подтянуть причину.

Прошу помогать соблюдать порядок на форуме., а не нарушать его.
 
northpolar,
Моя UDF как работала полностью корректно почти 4 года назад, так и работает по сей день :)
А Ваша думаю вообще к вопросу темы никак не относится...
 
Hugo, у меня в 2010 офисе Ваш вариант не работал - функция возвращает пустую строку и замены не производится. Кстати не могли бы аргументировать свой ответ по какой причине не относится? Может у Вас синтаксис Replace другой? у меня следующий:
Цитата

Replace(expression, find,  replace[, start[, count[, compare]]])

Страницы: 1 2 След.
Читают тему
Наверх