我正在嘗試為學校的一個大型專案製作零件編號產生器。我需要能夠使用該函數=RANDBETWEEN(0,999999)
產生零件號碼的一部分。問題是 的更新=RANDBETWEEN(0,999999)
。如果我引用該單元格,那麼所有零件號碼最終都將具有相同的隨機數。我需要一個函數來保存舊的隨機數,但保留更新的能力=RANDBETWEEN(0,999999)
,為下一部分產生新的數字。我已經尋找了兩天的方法來做到這一點。希望有人能幫忙。我沒有使用 VBA 的經驗,希望將其保留為函數,以便團隊的所有使用者都可以使用它。
答案1
不是答案。
請注意,RAND()、RANDBETWEEN() 和所有類似函數將為工作表的每次重新計算產生新數字。
F9 或 SHIFT+CTRL+F9(在 LibreOffice 中)啟動重新計算,這將使您看到問題。
也不能保證產生的數字是唯一的。
下面的函數可能是手動或鍵盤啟動巨集的起點,用於將某個儲存格設定為帶有前導零的六位隨機數。
未經測試(沒有可用的 Excel,可能至少有一兩個錯誤)
函數 rndNum(單元格) rndNum=WorksheetFunction.RANDBETWEEN(0,999999) 如果單元格<>"" 那麼 範圍(單元格).Value =“'”&WorksheetFunction.TEXT(rndNum,“000000”) 萬一 結束函數
答案2
您可以建立一個命名函數,例如EVAL
在命名管理器中:
=LAMBDA(x,EVALUATE(x))
現在您可以透過以下方式在工作表中呼叫它:
=EVAL("RANDBETWEEN(0,999999)")
這將建立一個隨機數,僅當您在該確切儲存格中重新套用該公式時,該隨機數才會變更。
請注意,這將在儲存時觸發您的工作簿為 xlsm,否則您將失去指定的函數(隨機數字將保留在原處)。