原創作者: 盧子 轉自:EXCEL不加班
學員的問題:要實現分類、科目代碼、科目名稱多級聯動下拉菜單。負債類對應相應的科目代碼和名稱,權益類也對應相應的科目代碼和名稱,效果如gif動畫。
科目代碼表,有分類、科目代碼、科目名稱的所有數據。
盧子以前也分享過一二級下拉菜單的制作,而這種布局不适合用以前的方法,難度較大。
Step 01 将分類複制到F列,删除重複值。這一步必須做,要不然直接引用A列,就會導緻分類的内容重複顯示。
Step 02 在下拉菜單這個表,選擇A列的區域,點數據,數據驗證(數據有效性),序列,引用科目代碼F列的區域,确定。
Step 03 在下拉菜單這個表,選擇B列的區域,點數據,數據驗證(數據有效性),序列,輸入一條很長的公式,确定。
=OFFSET(科目代碼!$B$1,MATCH($A2,科目代碼!$A:$A,0)-1,0,COUNTIF(科目代碼!$A:$A,$A2))
這條公式是二級下拉的核心公式。先來理解OFFSET函數語法,最後2個參數為可選。
=OFFSET(起點,向下幾行,向右幾列,總共多少行,總共多少列)
起點,科目代碼!$B$1。
向下幾行,以負債為例,就是向下1行。這裡用MATCH判斷第幾行。
負債這裡得到的是第2,而我們需要的是向下1行,所以得出來的數字再減去1。
向下幾行就出來了。
=MATCH($A2,科目代碼!$A:$A,0)-1
向右幾列,這裡不需要向右,也就是0。
總共多少行,也就是數一下負債有多少行,就是多少行。這個可以借助COUNTIF函數解決。
總共多少行,也出來了。
=COUNTIF(科目代碼!$A:$A,$A2)
總共多少列,這裡可以寫1,也可以直接不寫。
到這裡,OFFSET函數就解釋完。
Step 04 科目代碼跟科目名稱是一一對應的,就不需要再做下拉菜單,用VLOOKUP函數查找即可。
=IFERROR(VLOOKUP(B2,科目代碼!B:C,2,0),"")
平常看完文章多練習幾遍,這樣才能将知識記得牢固。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!