Microsoft Excel是Microsoft為使用Windows和Apple Macintosh操作系統的電腦編寫的一款電子表格軟件。直觀的界面、出色的計算功能和圖表工具,再加上成功的市場營銷,使Excel成為最流行的個人計算機數據處理軟件。 多級下拉菜單這個問題,在Excel里面并不容易實現,關鍵問題在于數據有效性驗證環節需要對數據源的動態過濾。如果使用了它,那么Excel表格在某些方面上可能會產質的飛躍,至少可以起到如下作用:
在此,以二級菜單為例,我們來看需要達到的效果。 當我們選擇了一級菜單后,根據選擇的一級菜單項目自動加載二級菜單內容。在此,我們先不考慮使用VBA來實現這個問題。 ? ? 以下,我們就來看看一個二級下拉菜單是如何實現的: 1、我們先建立兩個區域,一個“銷售區域”,一個“門店信息”,如下圖。然后選擇對應的數據區域按“Ctrl+T”,將這幾個區域分別轉化成超級表。然后把銷售區這個數據表名稱改為“銷售區”,把門店這個數據表名稱改為“門店信息”以便在后面引用。這里我就不一步步的去演示了。最終效果如下,形成了兩個超級表區域。在此,我為了演示方便,全部超級表放在了一個工作表里面了,但在實際使用場景中是需要按工作表來做數據表的。 ? 2、現在我們來建立一級菜單。具體數據驗證操作步驟,就不啰嗦了。關鍵還是數據源的問題。這里,我們是引用銷售區這個超級表的區域。因為這里是引用超級表,涉及結構化引用的問題,這里需要使用INDIRECT()這個函數。而里面的“銷售區”,引用的是“銷售區”這個超級表。這一步很簡單,并不復雜。如果銷售區這個表有很多列,那就需要使用超級表的結構化引用,可以參照第三步的那種語法方式。 ? 3、同樣的方式在二級菜單列開始建立數據驗證。這里其它的都不是問題,比較關鍵的是序列的來源這里了。具體的函數用到了Offset、Match、和countif函數的嵌套。在這里,具體的公式為:
大體意思就是使用offset函數來獲取區域,但這部分區域卻是有條件的,這個條件就是只獲取一級菜單選定的,對應的內容。 這里,需要特別說明的是,如果沒有采用超級表時,那么indirect函數這部分,就需要使用區域了,不能再使用表結構化引用。以上的數據源公式,如果用區域來表示,那么就是:
對比以上兩種寫法,區域化引用看上去更簡潔,而結構化引用似乎更要繁雜,可能大家會認為為什么還用結構化引用這種方式呢?答案是,這種結構化引用方式具有更強的適應性和擴展性,不受區域引用這種絕對或者相對的單元格區域,“$E$3:$E$7”以及區域命名這種方式引用無法自動擴展區域。關于超級表的結構化引用,這個是題外話,在此就不展開說了。 ? 以上就是全部過程。無論幾級菜單都可以此類推來制作。 寫在最后: 1、目前,縱觀全網,關于多級菜單的制作問題,都是使用以下這種列式表結構引用的方式來制作的。這種數據管理方式存在很大的問題,因為按照這種方式來做數據源的話,隨著數據的增加,表會向橫向和縱向兩個方向擴展,表格會極具的膨脹和混亂。用專業的來說就是有違“三范式”。如果用這種方式來管理數據,那么就是災難。所以,一定要使用標準的關系數據,任何時候都絕對不推薦以下這種處理方法。 ? 2、在EXCEL里面,極力推薦使用超級表來管理數據。實際上,超級表的好處非常多,包括超強的可擴展性,超高的智能化、自動化程度等等。只要使用習慣了,那么很難再切回去使用區域模式了。關于超級表的優勢,在此先不展開說了。 Excel整體界面趨于平面化,顯得清新簡潔。流暢的動畫和平滑的過渡,帶來不同以往的使用體驗。 |
溫馨提示:喜歡本站的話,請收藏一下本站!