Страницы: 1
RSS
Выделить расширение файла из полного пути
 
Коллеги, добрый день!
Необходима ваша помощь в решении следующей задачи, у меня имеется ячейка, в которой прописан путь к определенной папке на диске, для примера: C:\Users\Desktop\file1.xls. Меня интересует каким образом из данной строки можно вычленить окончание файла и показать его в соседней ячейке, т.е. в данном примере .xls.
Чувствую, что использовать здесь нужно =правсимв, но аргумент по количеству символов должен быть динамическим и грубо говоря осуществлять отсчет от самой правой точки в ячейке (как это осуществить я не знаю)

Заранее спасибо!
 
Вы тему назвали так, что только ПРАВСИМВ можно применить
Название темы должно отражать суть задачи. Предложите новое. Модераторы переименуют тему.
 
obratka, на VBA очень просто, а формулами сложнее, т.к. нет аналога функции InstrRev
Код
Function Ext(s)
  Ext = Mid(s, InStrRev(s, ".") + 1) 'если нужно расширение с точкой, уберите "+1"
End Function

Предложение по названию темы: Выделить расширение файла из полного пути
Изменено: Казанский - 07.12.2016 20:16:53
 
По-деревенски, просто, но вдруг?
 
Вариант с помощью формулы. Предполагается, что путь находится в "A1":
="."&ПСТР(A1;ПОИСК(СИМВОЛ(2);ПОДСТАВИТЬ(A1;".";СИМВОЛ(2);ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;".";""))))+1;ДЛСТР(A1))
Вариант с помощью формулы массива (вставляется Ctrl+Shift+Enter). Может быть эта формула чем-то лучше:
=ПРАВСИМВ(A1;МИН(ЕСЛИ(ЛЕВСИМВ(ПРАВСИМВ(A1;СТРОКА(A2:A10));1)=".";СТРОКА(A2:A10);"")))
Изменено: Karataev - 07.12.2016 21:45:23
 
=ПСТР(ПРАВБ(B2;5);ПОИСК(".";ПРАВБ(B2;5))+1;4)
Точка ведь одна?
=ПСТР(B2;ПОИСК(".";B2)+1;5)
 
Ну и я отмечусь:
=ПРАВСИМВ(A1;ДЛСТР(A1)-НАЙТИ(".";A1))
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
Цитата
vikttur написал: Точка ведь одна?
точка не является запрещенным символом в пути, поэтому точек может быть несколько
 
Цитата
Karataev написал: точек может быть несколько
Дык, Ляксей предусмотрел сие в №3.
Я сам - дурнее всякого примера! ...
 
И я в №6 )
 
А если с двойным или с тройным расширением? Вдруг на этом месте что-то непотребное окажется? ТС скажет - "форумчане не доглядели!"  :)
 
http://www.script-coding.com/WSH/FileSystemObject.html#3.11.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Цитата
_Igor_61 написал: А если с двойным или с тройным расширением?
Каков пример...
 
Так и не было примера-то...
 
Цитата
_Igor_61 написал: Так и не было примера
Цитата
obratka написал: для примера: C:\Users\Desktop\file1.xls
 
Код
Function GetFileExtension(FileName$)
  Dim fso
  Set fso = CreateObject("Scripting.FileSystemObject")
  GetFileExtension fso.GetExtensionName(FileName)
End Function

Sub Test()
  MsgBox GetFileExtension("C:\Users\Desktop\file1.xls")
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
_Igor_61 написал: А если с двойным или с тройным расширением?
Цитата
Казанский написал: на VBA очень просто
Код
Function ExtOnly(s As String)
    ExtOnly = CreateObject("Scripting.FileSystemObject").GetExtensionName(s)
End Function
Согласие есть продукт при полном непротивлении сторон
 
Sanja, спасибо за пример. Я так ещё не писал. :)

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
JayBhagavan, а Вам за ссылку мерсис  :)
Согласие есть продукт при полном непротивлении сторон
 
Мой вариант
="." & СЖПРОБЕЛЫ(ПРАВСИМВ(ПОДСТАВИТЬ(A2;".";ПОВТОР(" ";255));255))
Арфы - нет, возьмите бубен.
Страницы: 1
Читают тему
Наверх