2017-01-07 114 views
0

我有一个有点工作的解决方案,可以在不使用宏或VBA的情况下从Excel电子表格中检索所有工作表名称。我找到了几个解决方案,但都要求将文件保存为支持宏的电子表格或外部工具。列出excel电子表格的特定工作表名称

我的解决方案是迄今为止: 我的第一张纸叫做'第一',我的最后一张叫'最后'。在我之间有几张随机名。在之间的这些片材具有在A1细胞下列公式:

=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,255)&"\" 

第一片材具有在B1以下公式:

="\" &CONCAT(First:Last!$A$1) 

而在B2至BX以下公式:

=IF(ISERROR(FIND(CHAR(1),SUBSTITUTE($B$1,"\",CHAR(1),ROW()))),"",MID($B$1,FIND(CHAR(1),SUBSTITUTE($B$1,"\",CHAR(1),ROW()-1))+1,FIND(CHAR(1),SUBSTITUTE($B$1,"\",CHAR(1),ROW()))-FIND(CHAR(1),SUBSTITUTE($B$1,"\",CHAR(1),ROW()-1))-1)) 

为了解释这一点:

FIND(CHAR(1),SUBSTITUTE($B$1,"\",CHAR(1),ROW()-1)) 

获取相对于该行在$ B $ 2中出现的字符串“\”。在A2这是第一次出现。

LEN($B$1)-LEN(SUBSTITUTE($B$1,"\","")) 

得到在$ B的“\”出现$ 2

ISERROR(FIND(CHAR(1),SUBSTITUTE($B$1,"\",CHAR(1),ROW()))) 

使得空的,所以动态命名区域可以从它创建的值的量。我使用下拉列表和图表

对于最终用户,我隐藏了第一个和最后一个选项卡,以便它们不会意外打破工作表。 不知何故,这一切都有效,但也许任何人都有更好的解决方案。它看起来有点矫枉过正。有谁知道更好的解决方案?

日Thnx, Jorden

回答

1

这仅是一个替代:

每个片材的A1输入:

=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,255) 

第一片材的A2输入:

=TEXTJOIN("*",TRUE,First:Last!A1) 

第一板的A3输入:

=TRIM(MID(SUBSTITUTE(A$2,"*",REPT(" ",999)),ROWS($1:1)*999-998,999)) 

抄下:

enter image description here

(我不知道的是,这是再简单不过。)

+0

大!谢谢 –