天天看點

在excel實作多級關聯

 最近做了一個Excel的多級關聯的功能,具體是将全國所有的氣象局按一二三四級機關做成四列,實作各級的關聯下拉選擇,這和省市縣鄉的各級關聯的功能基本一樣,下面記錄下具體的操作步驟。

1、首先需要從資料庫中将所有機關按照Id ,父級ID ,機關名稱,導出excel,

在excel實作多級關聯

2、将所有機關中的一級機關單獨取出作為新的一列放置。我這裡的操作方法是用excel中的VBA進行編碼操作。前提是excel需要啟用宏設定,下面是啟用宏設定的方法:

   (1)将excel另存為啟用宏的工作簿 然後打開儲存的啟用宏的工作簿

在excel實作多級關聯

(2)點選左上方的檔案-選項-信任中心-信任中心設定-宏設定-啟用-确認

在excel實作多級關聯
在excel實作多級關聯
在excel實作多級關聯
在excel實作多級關聯

3、點選一個sheet 郵件選擇檢視源碼

在excel實作多級關聯

4、按圖示插入窗體和按鈕修改按鈕的名稱為一級機關

在excel實作多級關聯
在excel實作多級關聯

6、輕按兩下按鈕或者右鍵檢視代碼 就能夠編寫點選這個按鈕以後需要做的工作的代碼了 ,瞬間感覺這個操作和.net的winform差不多

在excel實作多級關聯

7編寫代碼 将一級機關名稱,一級機關Id,因為一級機關的父ID是同一個,是以這裡就不把他的父Id給單獨拿出來了 

在excel實作多級關聯

8、同樣添加二級機關。三級機關、四級機關的按鈕,分别添加對應的代買,因為其中的代碼基本一樣,隻是取得列和父Id的列不一樣,這裡就隻貼出二級機關的代碼

在excel實作多級關聯

9.添加完以後點選運作,分别點選各個機關的按鈕,就在sheet1中自動生成了對應機關級别的列,并将對應的機關給填充進對應的列上。

在excel實作多級關聯

10、到這裡前期準備工作就完成了,接下來在excel公式中點選名稱管理器,添加一級機關的名稱和對應的取值範圍。

在excel實作多級關聯

11、選中對應一級機關的單元格,點選資料下面的資料驗證,在設定中的驗證條件選中允許,來源=剛才設定的名稱管理器中的名稱,此時選中的單元格就會出現下拉框選擇,選擇的内容就是設定名稱管理器中的一級機關對應的引用位置(取值範圍)

在excel實作多級關聯
在excel實作多級關聯

12、接下來我們添加二級三級四級機關的名稱,由于一級機關數量相對比較少,也比較連續,上面添加名稱的方式比較簡單,但是下級機關比較多,添加起來就比較麻煩,并且所屬的父級機關需要一個一個的找,工作量比較大,是以這裡還是用VBA代碼将剩下添加名稱的動态的給添加上,這樣就減少了很大的工作量,繼續在窗體中添加按鈕,修改名稱,輕按兩下檢視對應的操作代碼,添加代碼,這裡同樣貼出一個代碼樣例。是生成二級名稱的

在excel實作多級關聯
在excel實作多級關聯

13、選中對應二級機關對應的單元格,點選資料有效性,設定和一級機關基本一樣,不過來源那裡需要根據選中的一級機關的名稱進行篩選,使用=INDIRECT($A3),其中$A3為一級機關所選擇的名稱,INDIRECT函數傳回指定的區域,依次類推,剩下級别的機關也這樣設定

在excel實作多級關聯

緻此,所有的工作已經做完。我們來看下效果:

在excel實作多級關聯
在excel實作多級關聯

注意事項:二級、三級機關必須是按上級機關的順序排列,否則資料取起來會不準确。也比較麻煩,這個demo給大家做一個參考,希望對以後或者其他的工作有所幫助