3

У меня есть один столбец в Excel, который имеет путь к файлу и папке. например, C:\1_Folder\2_Folder\3_Folder\my_file.txt

Я хотел бы извлечь имя конечной папки и поместить его в новый столбец. В этом примере 3_Folder.

Может ли это быть достигнуто с помощью формулы, а не VBA?

Изменить: количество вложенных папок может варьироваться.

3 ответа3

2

Вы можете использовать функции поиска и MID текста. Это будет работать для переменного количества папок

Текст пути C:\1_Folder\2_Folder\3_Folder\my_file.txt

Найти положение рядом с последней косой чертой (B1): FIND("|",SUBSTITUTE(A1,"\","|",LEN(A1)-LEN(SUBSTITUTE(A1,"\",""))-1))

Найти позицию последней косой черты (C1): FIND("\",A1,B1+1)

Получить символы между последним и последним слешем: MID(A1,B1+1,(C1-B1)-1)

2

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

=RegExReplace(A1,".*\\([^\\]*)\\[^\\]*","$1") - извлекает подстроку перед последней \ (практически последней папкой, как вам нужно)

0

Этот ответ основан на принятом ответе на очень похожий вопрос.

Если вы хотите это в одной формуле, вы можете использовать:

=RIGHT(A6,LEN(A6)+1-FIND("@",SUBSTITUTE("\"&A6,"\","@",(LEN(A6)-LEN(SUBSTITUTE("\"&A6,"\",""))+1))))

... который в основном вычисляет количество обратных косых черт, удаляя их все и сравнивая длины. Он использует это число для замены последнего вхождения на «@», а затем оборачивается и находит позицию «@», которую он вводит в ПРАВИЛЬНУЮ формулу для захвата подстроки, завершающей последний обратный слеш. Дополнительная обратная косая черта и «+1» добавляются для обработки случая нулевой обратной косой черты в источнике. Если обратной косой черты нет, возвращается исходная строка.

Если ваши данные уже содержат «@», вам нужно будет выбрать другой символ замещения.

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