1

Есть ли способ сделать это, т.е. Foo , FOO и fOO будут выглядеть как Bar , BAR и и bAR , без необходимости индивидуально вводить все возможные перестановки в функцию.

= SUBSTITUTE(A1,"foo","bar") чувствителен к регистру, SUBSTITUTE(lower(A1),"foo", "bar") подходит для некоторых приложений, но удаляет все существующие различия регистра из A1; поэтому FoofooFOO бы на barbarbar . Очевидно, что вы можете использовать несколько замен, чтобы поймать все случаи, но иногда это настоящая боль.

Большое спасибо.

1 ответ1

0

Некрасивый, но функциональный ответ.

Работает на любые 2 строки одинаковой длины.

Просто положил мою шляпу в кольцо, надеясь, что кто-то может найти лучшее решение (возможно, формула массива?)

Требуются вспомогательные столбцы. Верхний ряд вспомогательных столбцов использовался для индексации.

Формулы:

 A2      : (original string)
 C1      : blank, or 0 (needed for next column)
 C2:C... : =SUBSTITUTE(UPPER(A2),"FOO","BAR")
 D1      : =B1+1
 D2:D... : =IF(EXACT(MID($A2,C$1,1),UPPER(MID($A2,C$1,1))),MID($B2,C$1,1),LOWER(MID($B2,C$1,1)))
 B2      : concatenate (or textjoin if you're using new excel)

Перетащите столбец D, пока у вас не будет достаточно столбцов. Глазное яблоко, или используйте =max(len(A:A)) чтобы найти максимальную длину.

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