Excel中的父目录(无VBA)

如何将单元格的值设置为文件所在目录的父级?

在我之前,我有一个冗长乏味的重复的任务,我试图尽可能地自动化,但是VBA是不允许的。

我将要有一个Excel电子表格的目录树,看起来像这样:

C:\…\Parent1\Dir2\File3.xlsx …\Parent4\Dir5\File6.xlsx … 

我需要一个公式来提取目录, 例如 ,在这个例子中, Parent1Parent4

[ 文件和目录名称不遵循任何特定的约定; build议寻找数字将匹配这个匿名的例子,但不会帮助我。 ]


笔记:

我在网上的其他地方find了以下的公式,我也需要这些公式,这些公式可能指向解决scheme。

  • 当前表单名称:
    = RIGHT(CELL("filename",A1), LEN(CELL("filename",A1)) - FIND("]", CELL("filename",A1)))

  • 当前文件名称:
    = MID(CELL("filename",A1), FIND("[", CELL("filename",A1)) + 1, FIND(".", CELL("filename",A1)) - (FIND("[", CELL("filename",A1)) + 1))

  • 当前目录名称(来自MrExcel.com ):
    = TRIM(RIGHT(SUBSTITUTE(LEFT(CELL("filename",A1), FIND("[", CELL("filename",A1), 1) - 2), "\", REPT(" ",100)), 100))
    海报解释了他的方法:

    它通过获取DIR并用100个空格replace所有“\”来工作。 然后抓取正确的100个字符,这将是一堆空格和最终的DIR名称,然后修剪掉前面的空格。

这最后感觉应该是适应提取父目录,但我还没有想出如何写这个适应。

尝试这个。 这个公式只会在saved文件中起作用。

=TRIM(LEFT(RIGHT(SUBSTITUTE(LEFT(CELL("filename",A1), FIND("[", CELL("filename",A1), 1) - 2),"\",REPT(" ",100)),200),100))

截图

在这里输入图像说明

逻辑

要find两个字符之间的string,请使用此string。 (在“\”之间find)

 =TRIM(LEFT(RIGHT(SUBSTITUTE(A1,"\",REPT(" ",100)),200),100)) 

下面给出了完整的path

 =LEFT(CELL("filename",A1), FIND("[", CELL("filename",A1), 1) - 2) 

例如: C:\Temp\Folder 1

所以只需在第一个公式中插入第二个