Excel中取得工作表名称

=RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename")))

解释一下公式

首先看RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))-FIND("]",CELL("filename")))部分,这里是取得当前文件的文件名,比如文件保存在D盘根目录下命名为Book1.xls,那么此处返回值为"D:\\[Book1.xls]Sheet1",其中Sheet1就是当前工作表的名称。
注:新建文件使用此函数将返回空值,至少需要保存至磁盘并关闭文件,然后直接由磁盘上打开时才会返回正确路径。

通过上面这步我们发现,返回值中是包含我们所需要的工作表名称的,接下来就是要把它分力出来。不难发现这个返回结果里面有个特点,就是文件名由[]包围,文件名之后就是工作表名。这里就需要一个函数来识别[]用于定位返回值里面到什么位置为止是文件名,因为我们需要的是剩下的信息。
FIND函数能满足我们的需求,所以对CELL("filename")的返回值进行处理,那么就是FIND("]",CELL("filename")),这里会返回]在返回值的字符串中所处的位置,是一个数字,告诉我们第几个字符是“]”,这里我们得到的结果是14。
注:FIND函数只会返回第一个匹配字符的位置,所以如果目录或文件名内包含“]”的话,后面取得的名称会有错误,如果文件名或路径名内必须包含“]”,那么需要更复杂的函数来统计个数,然后取得最后一个的位置。

接下来还要取得CELL("filename")返回的值的总长度,RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename")))。用这个总长度减去最有一个]的位置,得到的结果就是剩下的字符数,也就是工作表名称的长度。有了工作表名的长度之后我们就可以用RIGHT函数,来取得CELL("filename")返回值的后FIND("]",CELL("filename"))各字符 —— 我们需要的工作表名称。

发表评论

电子邮件地址不会被公开。 必填项已用*标注