2017-01-07 154 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

大!謝謝 –