萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 辦公室軟體 >  >> Excel 教學 >> Excel 綜合

Excel VBA 產生不重複隨機數:排除指定儲存格數值

需在 D1 產生 1-5 隨機數,但不可與 A1、B1 固定值重複?內建 RANDBETWEEN 易重複,VBA 可精確控制。

VBA 程式碼

Public Sub btsj()
    Dim sjd As Range
    Set sjd = Range("D1")
line1:
    sjd.ClearContents
    Randomize
    sjd = Int(Rnd * 5 + 1)  ' 產生 1-5 隨機整數
    If sjd = Range("A1") Or sjd = Range("B1") Then
        GoTo line1  ' 重複則重跑
    End If
End Sub

部署與使用

  1. Alt+F11 開啟 VBE,插入模組貼上程式碼。
  2. 關閉 VBE 回 Excel,Alt+F8 選 btsj 執行,或設定快捷鍵(如 Ctrl+S)。
  3. 每次執行 D1 產生新隨機數,自動避開 A1、B1 數值。

擴充應用

  • 修改 Int(Rnd * N + 1) 調整範圍(1 到 N)。
  • 增加 Or sjd = Range("C1") 排除更多儲存格。
  • 搭配迴圈可批量產生多個不重複隨機數。

注意:VBA 區分大小寫,引號需為半形,錯誤時善用「編譯」→「Debug」除錯。

copyright © 萬盛學電腦網 all rights reserved