【问题标题】:Excel formula (not VBA) to calculate basename of a file path?Excel公式(不是VBA)来计算文件路径的基本名称?
【发布时间】:2012-05-20 16:47:09
【问题描述】:

是否可以在不定义自定义 VBA 函数的情况下确定基本名称,即 Excel 中文件路径的最后一个路径组件?

例如,如果单元格A1 具有值

C:\Some\deep\directory\structure\file.txt

B1中的公式应该使用A1返回

file.txt

有什么想法吗?

【问题讨论】:

  • 为什么反对使用VBA?除了简单地去掉你假设的路径分隔符之外,还有更可靠的方法来做到这一点。
  • 实际上(almnost)重复:stackoverflow.com/questions/350264/…
  • @CodyGray:我相信公式更快;我也喜欢免费的工作簿 VBA,因此不需要用户交互(激活宏)。
  • @CodyGray 不幸的是,在您从工作表调用 VBA 函数并且正在执行宏、更改工作表上的值并导致公式重新计算的情况下,尤其是在循环中, Excel 进入某种灰色区域。函数可能会正确执行,或者它们可能会无缘无故地返回错误(例如#VALUE)(缓慢单步执行代码时无法重现!);执行流程可能会在例程中间意外停止;或 Excel 可能会因执行无效操作而崩溃。我受够了,现在我尽可能避免在工作表上使用 VBA。

标签: excel excel-formula


【解决方案1】:
=RIGHT(A1,LEN(A1)-FIND("|",SUBSTITUTE(A1,"\","|",LEN(A1)-LEN(SUBSTITUTE(A1,"\","")))))

【讨论】:

  • 我注意到如果文件路径中有空格,这将不起作用。这是因为使用空格作为外部替代字符,然后在字符串的前面找到空格。
  • 用其他东西替换空格:“!”例如。
  • 我不确定您在什么时候建议更换。我想你(和@Karsten)可能想知道解决方案中的这个不足之处。如果使用替换字符,则应该使用非法文件名字符,例如:? : |
  • @Dougglancy 我已相应修改。
  • aaaand 用于 Linux 路径:=RIGHT(A1,LEN(A1)-FIND("|",SUBSTITUTE(A1,"/","|",LEN(A1)-LEN(SUBSTITUTE(A1,"/","")))))
【解决方案2】:

要获得最后一个反斜杠后的所有内容,请尝试此公式

=REPLACE(A1,1,LOOKUP(2^15,FIND("\",A1,ROW(INDIRECT("1:"&LEN(A1))))),"")

【讨论】:

  • +1 我不知道我是否会记得这种模式。如果没有,我至少每次看到都会充满同样的童心。
  • 美丽。为每个用户的文件空间转换 HTML 链接本地路径的关键部分(即,打开电子表格查找每台计算机上的不同本地路径)。谢谢。
猜你喜欢
  • 1970-01-01
  • 2017-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多