今天來上乙個excel大招,絕對的大招!——多級下拉列表。
多級下拉列表這個問題,在excel裡面並不容易實現,關鍵問題在於資料有效性驗證環節需要對資料來源的動態過濾。如果使用了它,那麼excel**在某些方面上可能會產質的飛躍,至少可以起到如下作用:
在此,以二級選單為例,我們來看需要達到的效果。
當我們選擇了一級選單後,根據選擇的一級選單專案自動載入二級選單內容。在此,我們先不考慮使用vba來實現這個問題。
以下,我們就來看看乙個二級下拉列表是如何實現的:
1、我們先建立兩個區域,乙個「銷售區域」,乙個「門店資訊」,如下圖。然後選擇對應的資料區域按「ctrl+t」,將這幾個區域分別轉化成超級表。然後把銷售區這個資料表名稱改為「銷售區」,把門店這個資料表名稱改為「門店資訊」以便在後面引用。這裡我就不一步步的去演示了。最終效果如下,形成了兩個超級表區域。在此,我為了演示方便,全部超級表放在了乙個工作表裡面了,但在實際使用場景中是需要按工作表來做資料表的。
2、現在我們來建立一級選單。具體資料驗證操作步驟,就不囉嗦了。關鍵還是資料來源的問題。這裡,我們是引用銷售區這個超級表的區域。因為這裡是引用超級表,涉及結構化引用的問題,這裡需要使用indirect()這個函式。而裡面的「銷售區」,引用的是「銷售區」這個超級表。這一步很簡單,並不複雜。如果銷售區這個表有很多列,那就需要使用超級表的結構化引用,可以參照第三步的那種語法方式。
3、同樣的方式在二級選單列開始建立資料驗證。這裡其它的都不是問題,比較關鍵的是序列的**這裡了。具體的函式用到了offset、match、和countif函式的巢狀。在這裡,具體的公式為:
=offset(indirect("門店資訊[[#標題],[門店]]"),match(h3,indirect("門店資訊[[#資料],[銷售區]]"),0),0,countif(indirect("門店資訊[[#資料],[銷售區]]"),h3))大體意思就是使用offset函式來獲取區域,但這部分區域卻是有條件的,這個條件就是只獲取一級選單選定的,對應的內容。
這裡,需要特別說明的是,如果沒有採用超級表時,那麼indirect函式這部分,就需要使用區域了,不能再使用表結構化引用。以上的資料來源公式,如果用區域來表示,那麼就是:
=offset($d$2,match(h3,$e$3:$e$7,0),0,countif(($e$3:$e$7),h3))對比以上兩種寫法,區域化引用看上去更簡潔,而結構化引用似乎更要繁雜,可能大家會認為為什麼還用結構化引用這種方式呢?答案是,這種結構化引用方式具有更強的適應性和擴充套件性,不受區域引用這種絕對或者相對的單元格區域,「$e$3:$e$7」以及區域命名這種方式引用無法自動擴充套件區域。關於超級表的結構化引用,這個是題外話,在此就不展開說了。
以上就是全部過程。無論幾級選單都可以此類推來製作。
寫在最後:
1、目前,縱觀全網,關於多級選單的製作問題,都是使用以下這種列式表結構引用的方式來製作的。這種資料管理方式存在很大的問題,因為按照這種方式來做資料來源的話,隨著資料的增加,表會向橫向和縱向兩個方向擴充套件,**會極具的膨脹和混亂。用專業的來說就是有違「三正規化」。如果用這種方式來管理資料,那麼就是災難。所以,一定要使用標準的關係資料,任何時候都絕對不推薦以下這種處理方法。
2、在excel裡面,極力推薦使用超級表來管理資料。實際上,超級表的好處非常多,包括超強的可擴充套件性,超高的智慧型化、自動化程度等等。只要使用習慣了,那麼很難再切回去使用區域模式了。關於超級表的優勢,在此先不展開說了。
3、如果還有其它更好辦法,請不吝賜教!
jQury實現垂直與橫 向二級選單
第 一 橫 向二級級級聯選單 寫css 具體例項css 如下 hxdiv hxdiv ul,zxdiv ul hxli hxli a hxli li a hxli ul hxli ul li html檔案 標籤效果2 標籤效果3 第 二 垂直二級級級聯選單 寫css 具體例項css 如下 zxdiv...
CSS二級選單
最近的 要求使用二級選單,本著 能用別人的就用別人的,不能用別人的就用自己的 的原則,在網上找到乙個經典的使用css製作的二級選單,感覺不錯,先記錄下來,以備它用。經典的二級選單如下圖所示 其實,所謂的二級選單都差不多,無非就是為二級選單定義乙個層,當滑鼠放在一級選單上的時候顯示這個層,而將滑鼠從一...
二級選單級聯
好久沒總結了。先總結下這倆個月,看了點.net後台,看了點c 但不是很多,這倆天看了點php.總結總結下.net遇到的問題吧。第乙個其實就是乙個二級選單的級聯問題。用乙個簡單的例子說明一下。例子是乙個省份和城市的級聯,資料都從乙個資料庫的一張表裡取。前台 倆個dropdownlist控制項,這裡注意...