返回列表 上一主題 發帖

[發問] 將一固定值隨機分配到指定欄位

[發問] 將一固定值隨機分配到指定欄位

請教各位大大 , 由於小弟正在做模擬研究遇到了以下的問題 , 請各位大大幫忙指導VBA該如何編寫呢 ? 感恩 .

想要將Project1  Demand的固定值隨機分配到10個SKU中.

小丁

本帖最後由 n7822123 於 2018-8-26 17:13 編輯

回復 1# PaulDing

隨機分配到10個欄位的合要等於111嗎?
如果能描述清楚一點,或者舉一個範例結果,別人才知道你的需求

TOP

google"EXCEL迷"  blog  或google網址:https://hcm19522.blogspot.com/

TOP

本帖最後由 n7822123 於 2018-8-26 18:02 編輯

回復 2# n7822123

隨便做了一個,不知道有沒符合你的需求
test1.rar (13.78 KB)
  1. Sub test1()
  2. 亂數比例範圍 = 0.3
  3. RN = Sheets(1).UsedRange.Rows.Count
  4. ReDim Sum(RN - 1)
  5. For R = 1 To RN - 1
  6.   Sum(i) = Cells(R + 1, 3)
  7.   ave = Sum(i) / 10
  8.   For C = 1 To 9
  9.     Cells(R + 1, C + 3) = Fix(((Rnd * 2) - 1) * (ave * 亂數比例範圍) + ave)
  10.   Next C
  11.   Cells(R + 1, 13) = "=sum(RC[-9]:RC[-1])"
  12.   Cells(R + 1, 13) = Sum(i) - Cells(R + 1, 13)
  13. Next R
  14. End Sub
複製代碼

TOP

本帖最後由 n7822123 於 2018-8-26 18:26 編輯

回復 1# PaulDing


剛剛發現你的S.N. 在B欄,修改一下程式碼
如果要用函數做的話 參考 hcm19522 大大即可

test1.rar (13.85 KB)
  1. Sub test1()
  2. 亂數比例範圍 = 0.3
  3. RN = Sheets(1).UsedRange.Rows.Count
  4. ReDim Sum(RN - 1)
  5. For R = 1 To RN - 1
  6.   Sum(R) = Cells(R + 1, 4)
  7.   ave = Sum(R) / 10
  8.   For C = 1 To 9
  9.     Cells(R + 1, C + 4) = Fix(((Rnd * 2) - 1) * (ave * 亂數比例範圍) + ave)
  10.   Next C
  11.   Cells(R + 1, 14) = "=sum(RC[-9]:RC[-1])"
  12.   Cells(R + 1, 14) = Sum(R) - Cells(R + 1, 14)
  13. Next R
  14. End Sub
複製代碼

TOP

回復 2# n7822123

了解了. 下次我會注意的 , 是合要等於原來的111.
小丁

TOP

hcm19522 發表於 2018-8-26 17:43


謝謝hcm大大的幫忙.
小丁

TOP

回復  PaulDing


剛剛發現你的S.N. 在B欄,修改一下程式碼
如果要用函數做的話 參考 hcm19522 大大即 ...
n7822123 發表於 2018-8-26 18:22


謝謝n大的幫忙
小丁

TOP

回復  PaulDing


剛剛發現你的S.N. 在B欄,修改一下程式碼
如果要用函數做的話 參考 hcm19522 大大即 ...
n7822123 發表於 2018-8-26 18:22


n大 , 再與您請較一下"亂數比例範圍 = 0.3"指的是什麼意思呢? 感恩.
小丁

TOP

本帖最後由 n7822123 於 2018-8-29 00:19 編輯

回復 9# PaulDing

只是一個變數值=0.3,數字越大,分配的越不平均

以平均值當中值,在乘以一個比例系數當做公差

假設平均值=10  比例系數=0.3(30%)    相當於 10+/-3

亂數會從7~13 左右的區間跑,再用fix函數取整數

如果比例系數大於1,有可能會跑出負值

TOP

        靜思自在 : 要用心,不要操心、煩心。
返回列表 上一主題