【玩轉(zhuǎn)數(shù)據(jù)有效性】用VBA制作多級關聯(lián)下拉列表

數(shù)據(jù)有效性可以產(chǎn)生下拉列表,那么是否可以產(chǎn)生相互關聯(lián)的多級下拉列表呢?

類似如下效果:

答案是完全可以的。

數(shù)據(jù)有效性配合函數(shù)也可做出這種效果,這篇文章只講解用VBA的方式實現(xiàn)相互關聯(lián)的多級下拉列表。


看一下數(shù)據(jù)源:

假如我們手里的數(shù)據(jù)源是這樣的。


解決思路:

因為省份和城市都存在重復字段,我們需要去重復再設置數(shù)據(jù)有效性。

『用字典對象獲取省份名稱去重復作為數(shù)據(jù)有效性序列的來源,完成一級下拉列表;同樣,利用字典將市名去重復后作為二級下拉列表;三級下拉列表同樣的辦法。』

因為要實現(xiàn)聯(lián)動的效果,所以我們要結合工作表事件Worksheet_SelectionChange來完成。

代碼及知識點:

就不拿代碼湊字數(shù)了,附件公眾號后臺回復“有效性”獲取。


幾個小知識點

?Join函數(shù)

語法:Join(List[,delimiter])

參數(shù)說明:

?List?-必需的參數(shù),包含被連接子字符串的一維數(shù)組。注意是一維數(shù)組。

?Delimiter?-一個可選參數(shù),在返回字符串中用于分隔子字符串的字符。如果忽略該項,則使用空格(" ")來分隔子字符串。

通俗來講,Join函數(shù)就是把一維數(shù)組每個元素通過某個設定的字符串連接起來成為一個字符串。和它作用相反的函數(shù)是split函數(shù)。


?Offset函數(shù)

代碼中多次用到offset函數(shù),主要就是因為是對B列省份數(shù)據(jù)做的循環(huán),需要用Offset函數(shù)來獲取同一行市名和縣名數(shù)據(jù)。

語法:Range.Offset(行偏移數(shù),列偏移數(shù))

參數(shù)說明:

?行偏移? -??正數(shù),負數(shù),零值(或者不寫),正代表向下偏移,負數(shù)向上。

?列偏移??-??正數(shù),負數(shù),零值(或者不寫),正代表向右偏移,負數(shù)向左。

注意:偏移的只是位置,單元格或者單元格區(qū)域內(nèi)容不會跟著移動。


?設置數(shù)據(jù)有效性部分代碼

錄制宏得到,這么難的代碼誰記得住,用到時候錄制一下即可。

- END -


推薦閱讀:

你的小黃鴨來了~??|??操作Txt??|??VBA學習經(jīng)驗??|??合并拆分??|???字符串函數(shù)??|?循環(huán)知識

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 一、Python簡介和環(huán)境搭建以及pip的安裝 4課時實驗課主要內(nèi)容 【Python簡介】: Python 是一個...
    _小老虎_閱讀 6,356評論 0 10
  • 閉包 什么叫閉包?閉包的定義其實很簡單:函數(shù) A 內(nèi)部有一個函數(shù) B,函數(shù) B 可以訪問到函數(shù) A 中的變量,那么...
    天空之城_2692閱讀 227評論 0 1
  • 這幾天老媽、邱思源相繼不舒服,老媽支氣管炎,差點懷疑肺炎,邱思源由上呼吸道感染到皰疹性咽峽炎,4號晚上持續(xù)高燒(3...
    Choice_f344閱讀 219評論 0 0
  • (1) 簽約領英自媒體專欄后,我也是斷斷續(xù)續(xù)在上面發(fā)文章,完全沒有在簡書和微信公眾號上發(fā)的勤快,主要是它的網(wǎng)站是國...
    郭小果子閱讀 458評論 15 2
  • 小明開車去旅行,結果被幾個交警截住,交警問道:“例行檢查,請你配合,檢查下酒駕?!?小明點了點頭說道:“那好吧?!?..
    每天幽默故事閱讀 280評論 0 0

友情鏈接更多精彩內(nèi)容