數(shù)據(jù)有效性可以產(chǎn)生下拉列表,那么是否可以產(chǎn)生相互關(guān)聯(lián)的多級下拉列表呢?
類似如下效果:
答案是完全可以的。
數(shù)據(jù)有效性配合函數(shù)也可做出這種效果,這篇文章只講解用VBA的方式實(shí)現(xiàn)相互關(guān)聯(lián)的多級下拉列表。
看一下數(shù)據(jù)源:
假如我們手里的數(shù)據(jù)源是這樣的。
解決思路:
因?yàn)槭》莺统鞘卸即嬖谥貜?fù)字段,我們需要去重復(fù)再設(shè)置數(shù)據(jù)有效性。
『用字典對象獲取省份名稱去重復(fù)作為數(shù)據(jù)有效性序列的來源,完成一級下拉列表;同樣,利用字典將市名去重復(fù)后作為二級下拉列表;三級下拉列表同樣的辦法?!?/span>
因?yàn)橐獙?shí)現(xiàn)聯(lián)動(dòng)的效果,所以我們要結(jié)合工作表事件Worksheet_SelectionChange來完成。
就不拿代碼湊字?jǐn)?shù)了,附件公眾號后臺(tái)回復(fù)“有效性”獲取。
代碼栗子
幾個(gè)小知識(shí)點(diǎn)
·Join函數(shù)
語法:Join(List[,delimiter])
參數(shù)說明:
·List -必需的參數(shù),包含被連接子字符串的一維數(shù)組。注意是一維數(shù)組。
·Delimiter -一個(gè)可選參數(shù),在返回字符串中用于分隔子字符串的字符。如果忽略該項(xiàng),則使用空格(" ")來分隔子字符串。
通俗來講,Join函數(shù)就是把一維數(shù)組每個(gè)元素通過某個(gè)設(shè)定的字符串連接起來成為一個(gè)字符串。和它作用相反的函數(shù)是split函數(shù)。
代碼栗子
·Offset函數(shù)
代碼中多次用到offset函數(shù),主要就是因?yàn)槭菍列省份數(shù)據(jù)做的循環(huán),需要用Offset函數(shù)來獲取同一行市名和縣名數(shù)據(jù)。
語法:Range.Offset(行偏移數(shù),列偏移數(shù))
參數(shù)說明:
·行偏移 - 正數(shù),負(fù)數(shù),零值(或者不寫),正代表向下偏移,負(fù)數(shù)向上。
·列偏移 - 正數(shù),負(fù)數(shù),零值(或者不寫),正代表向右偏移,負(fù)數(shù)向左。
注意:偏移的只是位置,單元格或者單元格區(qū)域內(nèi)容不會(huì)跟著移動(dòng)。
代碼栗子
·設(shè)置數(shù)據(jù)有效性部分代碼
錄制宏得到,這么難的代碼誰記得住,用到時(shí)候錄制一下即可。
聯(lián)系客服