Как мне упростить эту формулу, чтобы удалить все повторяющиеся - в Excel?

Ячейка A1: текст --------------- текст-текст --- текст

Ячейка A2: текст ---- текст - текст --- текст

Мне нужно, чтобы это было:

Ячейка A1: текст-текст-текст-текст

Формула, которую я использую:

= ПОДСТАВИТЬ (ПОДСТАВИТЬ (ПОДСТАВИТЬ (ПОДСТАВИТЬ (А1, "-", "-"), "-", "-"), "-", "-"), "-", "-")

Мне было интересно, есть ли способ с той же формулой SUBSTITUTE сделать что-то вроде 4 * SUBSTITUTE(A1, "-", "-"), чтобы он выполнял работу 4 раза без огромной формулы.

Спасибо

2 ответа2

1

в ячейке b1: =SUBSTITUTE(A1,"--","-") вы можете скопировать это в c1, d1, e1 и т. д. Каждая последующая ячейка справа будет на одну меньше, чем предыдущая. Добавляйте столбцы, пока не разберетесь со всеми дефисами.

Таким образом, если вы добавляете новую строку, в которой больше дефисов, чем в предыдущих строках, вы можете просто создать дополнительные столбцы, вместо того, чтобы изменить формулу, которая становится грязной.

1

Маленькая хитрость для решения с одной ячейкой. Если A1 не содержит пробелов, в A2 введите:

=SUBSTITUTE(TRIM(SUBSTITUTE(A1,"-"," "))," ","-")

Это может обрабатывать любое количество последовательных тире:

Если A1 содержит несколько пробелов, потребуется более сложная формула!

EDIT # 1:

Если A1 содержит пробелы, они должны сначала быть защищены чем-то вроде:

=SUBSTITUTE(A1," ",CHAR(1))

и затем в самой внешней замене "защита" должна быть удалена. Окончательная формула:

=SUBSTITUTE(SUBSTITUTE(TRIM(SUBSTITUTE(SUBSTITUTE(A1," ",CHAR(1)),"-"," "))," ","-"),CHAR(1)," ")

Я признаю, что это довольно уродливо, но он может обрабатывать неограниченное количество штрихов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .