在excel中不包含一些單元格數(shù)值的隨機(jī)數(shù)方法
在excel中不包含一些單元格數(shù)值的隨機(jī)數(shù)方法
excel是辦公尤其是處理數(shù)據(jù)的一個(gè)好幫手,他能給需要進(jìn)行各類(lèi)數(shù)據(jù)處理提供很強(qiáng)大的支持,這是我在工作中遇到的一個(gè)問(wèn)題,是這樣的,比如有兩個(gè)單元格有固定值,而另外還有一個(gè)單元格需要取隨機(jī)數(shù),但又要求不要和那兩個(gè)有固定值得單元格重復(fù)。如何取呢?隨機(jī)函數(shù)?rand()和randbetween()都可以,但是一時(shí)間還真想不出滿(mǎn)足要求的寫(xiě)法。于是我想用VBA編寫(xiě)也許更簡(jiǎn)單。于是就有了下文。
在excel中不包含一些單元格數(shù)值的隨機(jī)數(shù)方法
這里為了方便驗(yàn)證,我們將隨機(jī)數(shù)值盡量取小一點(diǎn),如果你要大一些的隨機(jī)數(shù),可以修改程序。
設(shè)在D1單元格里取隨機(jī)數(shù)(1——5之間),A1、B1單元格為有固定數(shù)值的單元格,當(dāng)然數(shù)值范圍也在1——5直接,否則毫無(wú)意義。
要編寫(xiě)VBA,首先就要打開(kāi)VBA,打開(kāi)VBA的方法不止一種,這里我們就使用最簡(jiǎn)單最快捷的方式,使用快捷鍵吧。按“Alt+F11”打開(kāi)VBA窗口。VBA窗口右側(cè)子窗口就是輸入代碼用的。
輸入代碼,如下:
Public Sub btsj()Dim sjd As Range Set sjd = Range("D1")line1: sjd.ClearContents Randomize sjd = Int(Rnd * 5 + 1) If sjd = Range("A1") Or sjd = Range("B1") ThenGoTo line1End IfEnd Sub
完成后就可以試運(yùn)行并保存,運(yùn)行是那個(gè)小三角,好像播放圖標(biāo)一樣的,保存的圖標(biāo)不用多說(shuō)。點(diǎn)擊小三角圖標(biāo)后可能會(huì)彈出一個(gè)窗口,再點(diǎn)擊運(yùn)行即可。
為了快速驗(yàn)證,我們可以給宏加上快捷鍵,如圖所示,這里我們給它設(shè)置快捷鍵“Ctrl+s”,現(xiàn)在我們只要按Ctrl+s就可以快速運(yùn)行該宏/程序了。
注意事項(xiàng)
編寫(xiě)VBA程序的時(shí)候要細(xì)心,如果有錯(cuò)誤提示,需要理性分析,耐心檢查。
以上就是在excel中不包含一些單元格數(shù)值的隨機(jī)數(shù)方法介紹,大家學(xué)會(huì)了嗎?希望能對(duì)大家有所幫助!