Добрый день! Помогите пожалуйста написать формулу или макрос для удаления части текста из ячеек. Например есть такой текст: GACTTGCTGTGATCTGTCTTCTTTTTTTTTATTTTTTTTTTTCTCTAAGCTATTAAAATCACATGAGATAGCACTAAAAAAAAAAAAAACTTGCCTGTCGC Мне нужно преобразовать его по нескольким условиям: 1. Найти "TTTTTTTTT" и удалить их и все что находится до них. 2. Найти "ACTTGCCTGTCGCTCTATCTTC" и удалить их и все что находится до них. 3. Найти "AAAAAAAAA" и удалить их и все что находится после них. 4. Найти "TTTCTGTTGGTGCTGATATTGC" и удалить их и все что находится после них. Пример прикрепляю.
Функции НАЙТИ() и ПОИСК() помогут найти позицию вхождения подстроки (части строки) Функции ЛЕВСИМВ(), ПРАВСИМВ() и ПСТР() помогут взять слева, справа или с нужной позиции нужное количество символов из строки Функция ДЛСТР() поможет определить длину строки
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Спасибо Jack Famous, но далее чем составление таких формул у меня не получается:
Код
=ПРАВСИМВ(B3;ДЛСТР(B3)-НАЙТИ("TTTTTTTTT";B3)-9)
Ответ получается не совсем красивый и ячеек при этом задействуется очень много, на каждое условие по несколько. Ведь "TTTTTTTTT", как и другие последовательности букв, могут повторяться несколько раз. Может кто поможет с универсальным решением вопроса. Хотя для чего нужны НАЙТИ(), ЛЕВСИМВ() и ПРАВСИМВ() я теперь понял Сенкс!
Найти "TTTTTTTTT" и удалить их и все что находится до них. "TTTTTTTTT", как и другие последовательности букв, могут повторяться несколько раз
И до какой из них удалять - первой? третьей? А еще возможна ситуация, когда будет удалено то, что нужно проверить в следующих проверках. Наприме, перед "TTTTTTTTT" находится "AAAAAAAAA". Конфликт условий или что-то будет удалено раньше.
На множество всякихразных условий универсального решения не существует. Но есть универсальный метод: Нужно изучить работу текстовых функций и применять их по назначению в каждом конкретном случае
По большому счету можно использовать "Найти и заменить", она отлично удаляет "*TTTTTTTTT", сколько бы их там не встречалось. Собственно то, что и нужно. В следующем действии можно найти и заменить "AAAAAAAAA*". Но каждый раз не хочется вводить поочереди все аргументы, вот и подумал может есть что-то универсальное. В надстройке PLEX ведь есть такая опция. Всем спасибо, попробую поизучать текстовые функции на досуге, спасибо Jack Famous подсказал что они делают. Тяжело что-то изучать когда компьютер впервые увидел в 30 лет.
dim284, Знакома ли Вам эта статья? Массовая замена текста формулами Если требуется простое удаление, а не замена, то не так сложно адаптировать предлагаемые формулы... или просто в словаре заменить их на пустые строки
dim284, если в формулы не хочется вникать, советую для вашей задачи скачать Plex и "поиграться" с функцией "Операции с текстом". С ней очень легко работать с текстом, и описание множества операций доступно изложено.