我有这个excel公式,我希望可以修改以提取文件名而不使用文件扩展名。我知道这可以通过两个公式完成,但它会使我正在处理的过程变得更加容易。我也试图避免使用VBA
因为我对此没有任何了解。
=IFERROR(MID(A1,FIND(CHAR(1),SUBSTITUTE(A1,"\",CHAR(1),LEN(A1)-LEN(SUBSTITUTE(A1,"\",""))))+1,LEN(A1)),"")
谢谢!
答案 0 :(得分:1)
您已经有了查找字符串中最后一个“\”字符位置的逻辑。您可以使用相同的逻辑来查找最后一个“。”的位置。字符串中的字符。然后,这两个数字减1的差异将是没有文件扩展名的文件名的长度。将此长度用于MID函数的num_chars参数。例如......
=IFERROR(MID(A1,FIND(CHAR(1),SUBSTITUTE(A1,"\",CHAR(1),LEN(A1)-LEN(SUBSTITUTE(A1,"\",""))))+1,FIND(CHAR(1),SUBSTITUTE(A1,".",CHAR(1),LEN(A1)-LEN(SUBSTITUTE(A1,".",""))))-FIND(CHAR(1),SUBSTITUTE(A1,"\",CHAR(1),LEN(A1)-LEN(SUBSTITUTE(A1,"\",""))))-1),"")
请注意,此公式假定所有文件名都具有扩展名。如果某些文件没有扩展名,那么您需要在公式中添加额外的逻辑。
答案 1 :(得分:0)
看起来您希望A1包含文件名,但是如果您愿意用Cell(“filename”,A1)替换“A1”的每个实例,则可以一次性完成。无论哪种方式,看起来你通过计算文件路径的数量而使情况过于复杂,当你真正需要的只是“[”& “]”包含文件名。
如果A1是任何没有特殊内容的随机单元格,则公式如下:
=MID(CELL("filename",A1),FIND("[",CELL("filename",A1))+1,FIND("]",CELL("filename",A1))-FIND("[",CELL("filename",A1))-1)
如果A1保持CELL(“filename”,B1),则公式如下:
=MID(A1,FIND("[",A1)+1,FIND("]",A1)-FIND("[",A1)-1)
CELL(“filename”,B1)查看B1,并拉出属性“filename”。在这种情况下,无论您使用B1,Z10等都无关紧要 - 它不能是循环引用。您还可以使用CELL来提取特定于单元格的信息,例如单元格地址等。
然后MID功能只是查看A1,在“[”后面开始1,然后拾取所有字符到“]”。