Всем здрасьте. Задача такая: пользователь заполняет реестр с данными и автоматом для каждой записи формируется имя файла. Пользователь его копирует и переименовывает файл со счетом. Проблема такая: теоретически, номер счета может содержать знаки (символы), кои не могут быть в имени файла.
Вот
Хочу формульно их обнаружить и, при наличии, заменить на "-". Без макроса. Для одного символа понятно, функция "подставить", кою и использую. Но как сконструировать сразу для нескольких?
Понимаю, что можно через многоэтажные условия, но такое решение - как-то не кашерно. Всяко должно быть покрасивее. Дайте, плиз, "на водку" )
формула меняет запрещённые символы на тире (вместо тире можно указать любой другой знак)
Можно выбирать, на какой знак менять --> допустим * поменять на пробел, ? поменять на #, : поменять на _, остальные на тире) (смотрите ниже ) =LET(y;"-";x;ПСТР(A1;ПОСЛЕД(ДЛСТР(A1));1);СЦЕП(ПЕРЕКЛЮЧ(x;"/";y;"";y;">";y;"<";y;":";"_";"|";y;"?";"#";"*";" ";"""";y;x)))
Для 21-365 что-то подобное =LEFT(TextJoin("";;IF(ISNUMBER(FIND(MID(A2;ROW(1:260);1);"/\?"));"_";MID(A2;ROW(1:260);1)));LEN(A2)) но там еще проще ибо ROW(1:260) заменить на sequence(len(a2)) и тогда =TextJoin("";;IF(ISNUMBER(FIND(MID(A2;sequence(len(a2));1);"/\?"));"_";MID(A2;sequence(len(a2));1))) а LET еще больше сократит
Вот я тупанул-то. Не указан нужную версию Excel. Простите меня великодушно. Сам на последних работаю, но файлы пользователей будут лежать в терминале, а там 19-ый.