數(shù)據(jù)有效性可以產(chǎn)生下拉列表尉姨,那么是否可以產(chǎn)生相互關(guān)聯(lián)的多級下拉列表呢?
類似如下效果:
答案是完全可以的吗冤。
數(shù)據(jù)有效性配合函數(shù)也可做出這種效果,這篇文章只講解用VBA的方式實現(xiàn)相互關(guān)聯(lián)的多級下拉列表覆致。
看一下數(shù)據(jù)源:
假如我們手里的數(shù)據(jù)源是這樣的。
解決思路:
因為省份和城市都存在重復(fù)字段煌妈,我們需要去重復(fù)再設(shè)置數(shù)據(jù)有效性宣羊。
『用字典對象獲取省份名稱去重復(fù)作為數(shù)據(jù)有效性序列的來源,完成一級下拉列表仇冯;同樣,利用字典將市名去重復(fù)后作為二級下拉列表苛坚;三級下拉列表同樣的辦法∑貌眨』
因為要實現(xiàn)聯(lián)動的效果,所以我們要結(jié)合工作表事件Worksheet_SelectionChange來完成娇昙。
代碼及知識點:
就不拿代碼湊字?jǐn)?shù)了,附件公眾號后臺回復(fù)“有效性”獲取。
幾個小知識點
?Join函數(shù)
語法:Join(List[,delimiter])
參數(shù)說明:
?List?-必需的參數(shù)危喉,包含被連接子字符串的一維數(shù)組州疾。注意是一維數(shù)組。
?Delimiter?-一個可選參數(shù)严蓖,在返回字符串中用于分隔子字符串的字符。如果忽略該項颗胡,則使用空格(" ")來分隔子字符串。
通俗來講毒姨,Join函數(shù)就是把一維數(shù)組每個元素通過某個設(shè)定的字符串連接起來成為一個字符串。和它作用相反的函數(shù)是split函數(shù)弧呐。
?Offset函數(shù)
代碼中多次用到offset函數(shù),主要就是因為是對B列省份數(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)容不會跟著移動判沟。
?設(shè)置數(shù)據(jù)有效性部分代碼
錄制宏得到崭篡,這么難的代碼誰記得住吧秕,用到時候錄制一下即可。
- END -
推薦閱讀:
你的小黃鴨來了~??|??操作Txt??|??VBA學(xué)習(xí)經(jīng)驗??|??合并拆分??|???字符串函數(shù)??|?循環(huán)知識