Страницы: 1
RSS
Удаления части текста из ячейки по нескольким условиям
 
Добрый день! Помогите пожалуйста написать формулу или макрос для удаления части текста из ячеек. Например есть такой текст:
GACTTGCTGTGATCTGTCTTCTTTTTTTTTATTTTTTTTTTTCTCTAAGCTATTAAAATC­ACATGAGATAGCACTAAAAAAAAAAAAAACTTGCCTGTCGC
Мне нужно преобразовать его по нескольким условиям:
1. Найти "TTTTTTTTT" и удалить их и все что находится до них.
2. Найти "ACTTGCCTGTCGCTCTATCTTC" и удалить их и все что находится до них.
3. Найти "AAAAAAAAA" и удалить их и все что находится после них.
4. Найти "TTTCTGTTGGTGCTGATATTGC" и удалить их и все что находится после них.
Пример прикрепляю.
Изменено: dim284 - 25.09.2020 14:02:57
 
dim284, здравствуйте!

Функции НАЙТИ() и ПОИСК() помогут найти позицию вхождения подстроки (части строки)
Функции ЛЕВСИМВ(), ПРАВСИМВ() и ПСТР() помогут взять слева, справа или с нужной позиции нужное количество символов из строки
Функция ДЛСТР() поможет определить длину строки

Комбинируйте - там всё очень просто
Изменено: Jack Famous - 25.09.2020 14:11:16
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
dim284,
Есть приём «Анализ текста регулярными выражениями (RegExp) в Excel»:
https://www.planetaexcel.ru/techniques/7/4844/

Есть в PLEX готовая функция «Операции с текстом»:
https://www.planetaexcel.ru/plex/features/16/253/
 
Спасибо Jack Famous, но далее чем составление таких формул у меня не получается:
Код
=ПРАВСИМВ(B3;ДЛСТР(B3)-НАЙТИ("TTTTTTTTT";B3)-9)

Ответ получается не совсем красивый и ячеек при этом задействуется очень много, на каждое условие по несколько. Ведь "TTTTTTTTT", как и другие последовательности букв, могут повторяться несколько раз. Может кто поможет с универсальным решением вопроса.
Хотя для чего нужны НАЙТИ(), ЛЕВСИМВ() и ПРАВСИМВ() я теперь понял :) Сенкс!
 
Цитата
Найти "TTTTTTTTT" и удалить их и все что находится до них.
"TTTTTTTTT", как и другие последовательности букв, могут повторяться несколько раз
И до какой из них удалять - первой? третьей?
А еще возможна ситуация, когда будет удалено то, что нужно проверить в следующих проверках. Наприме, перед "TTTTTTTTT" находится "AAAAAAAAA". Конфликт условий или что-то будет удалено раньше.

На множество всякихразных условий универсального решения не существует. Но есть универсальный метод: Нужно изучить работу текстовых функций и применять их по назначению в каждом конкретном случае
 
По большому счету можно использовать "Найти и заменить", она отлично удаляет "*TTTTTTTTT", сколько бы их там не встречалось. Собственно то, что и нужно. В следующем действии можно найти и заменить "AAAAAAAAA*". Но каждый раз не хочется вводить поочереди все аргументы, вот и подумал может есть что-то универсальное. В надстройке PLEX ведь есть такая опция.
Всем спасибо, попробую поизучать текстовые функции на досуге, спасибо Jack Famous подсказал что они делают.
Тяжело что-то изучать когда компьютер впервые увидел в 30 лет.
 
Цитата
dim284 написал: Тяжело что-то изучать когда компьютер впервые увидел в 30 лет.
У-у-у... В 30 лет приписывать себя к немощным старикам? Да люди в 70 (!) прекрасно осваивают компьютер.
 
dim284,
Знакома ли Вам эта статья?
Массовая замена текста формулами
Если требуется простое удаление, а не замена, то не так сложно адаптировать предлагаемые формулы... или просто в словаре заменить их на пустые строки
 
dim284,
если в формулы не хочется вникать, советую для вашей задачи скачать Plex и "поиграться" с функцией "Операции с текстом". С  ней очень легко работать с текстом, и описание множества операций доступно изложено.  
Страницы: 1
Наверх