Як отримати розширення файлу в MS Excel?


10

У мене стовпець, що містить шляхи до файлів. Я хочу зробити ще один стовпець, який містить лише розширення шляхів. Як я можу це зробити в Microsoft Excel?


1
Для тих, хто шукає, як це зробити в Google Spreadsheet, ви можете використовуватиREGEXEXTRACT(A1, "\.([^.]*)$")
Джо

Відповіді:


20
=REPLACE(RIGHT(A1,5),1,SEARCH(".",RIGHT(A1,5)),"")

Ця формула стане корисною, якщо у вас є кілька точок у імені файлу


2
Зауважте, що це працює лише для розширень файлів, що мають чотири символи чи менше.
Тім Робінсон

1
Ви можете просто змінити 5 на 6 або що завгодно, правда?
Адвокат диявола

Ні, це спричиняє проблеми.
Адвокат диявола

4

Взяте з іншої відповіді (змінено на пошук крапок, а не пробілів):

=RIGHT(A1,LEN(A1)-FIND("|",SUBSTITUTE(A1,".","|",LEN(A1)-LEN(SUBSTITUTE(A1,".","")))))

працює частування! Дякуємо за швидке рішення для копіювання / вставки. Працює з розширеннями файлів з розширеннями файлів від 2 до 7 символів із повним позначенням шляхів та просторів імен у назві файлу.
Цефан Шрьодер

2

Відповідь Кирила працює лише в тому випадку, якщо розширення становить 3 або 4 символи, а відповідь user273281 не працює, коли .в імені файлу були (періоди).

Отже, я придумав новий спосіб досягти цього,

=TRIM(RIGHT(SUBSTITUTE(TRIM(A1), ".", REPT(" ", LEN(TRIM(A1)))), LEN(TRIM(A1))))

Примітка: відповідач користувача273281 не працював у випадку, коли було ім'я файлу 1. Macro based file.zip. Це повертається. Macro based file.zip


0

Якщо припустити, що у вас добре відформатовані розширення, ви можете це швидко зробити =RIGHT(A1,3). Більш надійне рішення знайде індекс крайнього правого краю, .а потім вилучить решта символів.


Читання вашого запитання - це відповідь, яку я би дав.
VerGuy

Я думаю, що тут справжнє питання: як знайти найправіше "". в Excel.
петерсон

Розширення не є завжди в трьох символах. @pertersohn: Так, ти маєш рацію.
Нам Г ВУ

0

Я натрапив на це, що є найпростішим рішенням, який я бачив ...

=SUBSTITUTE(RIGHT(SUBSTITUTE(A5,".",REPT(".",50)),50),".","")

Це працює, тому що відділяє будь-які символи після останнього періоду від усіх інших символів на 50 періодів, або будь-яке число, яке ви обрали. Потім ви можете вибрати найменші 50 символів, знаючи, що ви вибираєте не що інше, як розширення символів та купу періодів. Замініть періоди, і ви готові їхати.

Джерело

Альтернатива: XML Парсинг


Акуратний трюк, який я іноді використовую для розбору рядків в цілому, полягає у використанні FilterXML()функції (Excel 2013 та новіших версій). Основна стратегія полягає у використанні Substitute()для форматування рядка таким чином, щоб він був розбитий по елементах в XML-рядку, а потім ви можете використовувати синтаксис xpath для зручної навігації по розібраним елементам. Використовуючи цю стратегію, отримання розширення буде виглядати приблизно так ...

=FILTERXML("<A><p>" & SUBSTITUTE(A1,".","</p><p>.")&"</p></A>","//p[last()]")

Якщо ви не знайомі з xml, це може здатися залякаючим, але якщо ви можете зрозуміти, що відбувається, я вважаю, що він чистіший, гнучкіший та легший для запам'ятовування, ніж альтернативні підходи із використанням len (), substitute (), тощо. Однією з причин, чому це приємніше, є те, що є лише одна посилання на клітинку.

Незаконні персонажі

Є два символи, дозволені в шляхах, але не в xml: &і'

Вище рівняння буде працювати, якщо цих символів немає, інакше з ними потрібно буде обробити щось подібне ...

=FILTERXML("<A><p>" & SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(J8,"'",""),"&",""),".","</p><p>.")&"</p></A>","//p[last()]")

Приклад

Припустимо, у нас такий неприємний шлях до файлу:

C: \ Folder1 \ Folder2 \ (потворні символи! @ # $% ^ () _ + = {} ;;, `) \ two.dots.LongExt

1.) Substitution()Частина перетворить його в рядок XML, як це ...

<A>
    <p>
        C:\Folder1\Folder2\(ugly characters !@#$%^()_+={};;,`)\two
    </p>
    <p>
        .dots
    </p>
    <p>
        .txt
    </p>
</A>

2.) Після форматування подібним чином, тривіально вибрати останній pелемент за допомогою синтаксису xpath //p[last()].

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.