這是一個非常實用的技巧,不用寫代碼,就可以獲得所有工作表的列表,還可以獲得文件夾下所有文件的列表
緣起
其實這個問題我經(jīng)常會遇到,也經(jīng)常有朋友問起,我也一直想寫篇文章介紹一下這個技巧任務(wù)欄不顯示excel名稱,卻總是想不起來寫!
今天我又一次遇到了這個問題,終于決定寫一寫。
很簡單,我有一個Excel文件,這里有很多個Sheet,其中有一些Sheet記錄了各省的數(shù)據(jù):
我想做一個下拉列表框,可以選擇省份。但是不要所有的省份,而是需要我這個工作簿中有數(shù)據(jù)的那些省份:
事情其實很簡單,只要找一個區(qū)域輸入各個Sheet名稱,然后設(shè)置數(shù)據(jù)驗證就可以了。
但是操作起來有點(diǎn)麻煩,要一個一個輸入,顯得有點(diǎn)多。當(dāng)然任務(wù)欄不顯示excel名稱,我這種情況還好了,上一次來問的朋友好像有100多個Sheet,要一個一個輸入就不太可取了。
獲得所有工作表名稱列表的技巧
我們可以用下面的方法獲得所有工作表列表。
本方法在Excel 2016中可以直接使用,如果是Excel 2013,請激活Power Query。具體方法見這里
1. 新建查詢
在“數(shù)據(jù)”選項卡下,點(diǎn)擊“新建查詢”,“從文件”,“從工作簿”:
瀏覽找到當(dāng)前文件:
點(diǎn)擊“導(dǎo)入”,在“導(dǎo)航器”左邊隨便選一個省份工作表,點(diǎn)擊右下角“轉(zhuǎn)換數(shù)據(jù)”按鈕:
彈出“Power Query編輯器”:
2. 修改查詢設(shè)置
在右邊的查詢設(shè)置面板中,將名稱修改為:
在查詢設(shè)置中,將“應(yīng)用的步驟”中除了“源”之外的所有步驟刪掉(只要點(diǎn)擊每個步驟前面的叉號就可以了):
在左邊的表格區(qū)域,可以看到如下的表格:
可以看到這一列就是我們要的所有省份的列表。
3. 最后修改
刪掉其他列。按照Shift,用鼠標(biāo)點(diǎn)選其他列,點(diǎn)鼠標(biāo)右鍵,選擇“刪除列”:
然后刪掉第一行(我們的列表中不需要Index表)。點(diǎn)擊”主頁“選項卡下的“刪除行”,點(diǎn)擊“刪除最前面幾行”:
在對話框中將行數(shù)設(shè)為1:
點(diǎn)擊確定后,得到如下表格:
4. 上載結(jié)果
點(diǎn)擊“主頁”選項卡下的“關(guān)閉并上載”,點(diǎn)擊“關(guān)閉并上載至...”:
在對話框中,選擇顯示方式為“表”,位置為“現(xiàn)有工作表”,區(qū)域為你選定的區(qū)域,點(diǎn)擊“加載”:
片刻后,你得到了一個你需要的工作表的列表。
擴(kuò)展一下:如何得到一個目錄下所有文件的名稱列表
很多時候我們的數(shù)據(jù)不是存放在一個文件的多個Sheet中,而是放在多個文件中,此時我們就需要獲得多個文件的名稱。這時,也可以使用這個技巧。
1. 新建一個查詢
同樣,我們新建一個查詢,這次不是從工作簿,而是選擇從文件夾:
選擇文件存放的文件夾路徑:
點(diǎn)擊確定后,來到下面的對話框:
點(diǎn)擊右下角的“轉(zhuǎn)換數(shù)據(jù)”,彈出Power Query編輯器:'
2. 刪掉除Name外的其他列
選中Name列,點(diǎn)擊鼠標(biāo)右鍵,選擇“刪除其他列”:
3. 刪掉.xlsx
在“轉(zhuǎn)換”選項卡中,點(diǎn)擊“替換值”,
將要查找的值修改為“.xlsx”,替換為保持不變:
點(diǎn)擊確定,替換完成:
點(diǎn)擊關(guān)閉并上載至:
選擇合適的位置,點(diǎn)擊確定,就得到了所有文件名的列表了