excel VBA產生年齡段的困惑,請高手幫忙

時間 2022-04-03 19:20:04

1樓:tat蘿蔔

原**中j是隨機數,用j<0.3並不能嚴格控制各年齡段比例。

以下**會保證生成準確比例的隨機年齡,並隨機填入指定範圍內的單元格。

要點是構造一個陣列儲存行號,通過隨機數進行呼叫。

逐步縮小隨機數範圍,同時通過替換使行號陣列中最前面的元素均為未被使用。

這樣即可以將產生的隨機年齡隨機填入指定範圍。

sub 年齡()

const rs = 150

dim iage as integer, i as integer, j as integer, r(1 to rs) as integer

for i = 1 to rs '生成一個行號陣列

r(i) = i

next

randomize

for i = 1 to rs

j = int(rnd * (rs - i)) + 1 '生成一個隨機數,用於從行號陣列中取數,範圍從1-150逐步縮小

if i <= rs * 0.3 then

cells(r(j) + 1, 4) = int(rnd * 23 + 18) '產生18-40歲的數字

elseif i <= rs * 0.8 then

cells(r(j) + 1, 4) = int(rnd * 20 + 41) '產生41-60歲的數字

else

cells(r(j) + 1, 4) = int(rnd * 15 + 61) '產生61-75歲的數字

end if

r(j) = r(rs - i + 1) '用行號陣列中最後的未被使用的元素替換r(j),以使陣列中前面的行號均為未被使用過

next

end sub

2樓:如影啊隨行

首先你的j = rnd(1)應該在你的迴圈語句for i = 1 to 150裡面,才能實現每次迴圈數字的變化。另外試著執行了一下你的程式,好像並不能實現年齡範圍18-75歲:18-40佔30%,40-60佔50%,60-75佔20%。

個人感覺最好是按照年齡分類進行迴圈,改動了一下,試用一下是佔比是對的(前包含後不包含),你可以試用一下!

'用於產生年齡

sub 年齡()

dim iage as integer, i, k as integer, j as integer

randomize

for i = 1 to 45

j = rnd(1)

cells(i + 1, 4) = int(rnd * 22 + 18)

'產生18-40歲的數字

next

k = i

for i = 1 to 75

cells(k + i, 4) = int(rnd * 20 + 40)

'產生40-60歲的數字

next

k = k + i - 1

for i = 1 to 30

cells(k + i, 4) = int(rnd * 15 + 60)

'產生60-75歲的數字

next

end sub

3樓:mas安心

for i = 1 to 150 『放在第三行

4樓:

j = rnd(1)放在for迴圈裡面第一句試試

早戀的年齡段是什麼,什麼年齡段叫做早戀?

記住!跟本沒有什麼早戀 這個詞!只有中國才有這麼一說!我認識的國外的女孩子 他們的妹妹 或者 朋友的妹妹 或者他們自己 都在14歲時就有男朋友!這根本沒什麼大不了 他們的父母都不會大驚小怪 象美國 歐洲 我認識的最年輕有男友的女孩 是一個 力託違亞的女孩 他11歲時就交了男友 是我們自己總愛給早戀 ...

女生各個年齡段的稱呼,女性各個年齡段稱呼是什麼

不滿週歲 襁褓 2 3歲 孩提 女孩7歲 髫年 男孩8歲 齠年 幼年泛稱 總角 10歲以下 黃口 13 15歲 舞勺之年 15 20歲 舞象之年 12歲 女 金釵之年 13歲 女 豆蔻年華,15歲 女 及笄之年 16歲 女 破瓜年華 碧玉年華 20歲 女 桃李年華 24歲 女 花信年華 至出嫁 梅之...

年齡段的劃分,分別怎麼稱呼》,人的各個年齡段都分別怎麼稱呼?

中國傳統年齡段的劃分 童年 1 7歲 少年 8 16歲 青年 17 29歲 而立 30歲 舊稱 而立之年 耳順 40歲 舊稱 耳順之年 知天命 50歲 舊稱 五十而知天命 花甲 60歲 舊稱 六十花甲 古稀 70歲 舊稱 古稀之年 耄耋 80 99歲 舊稱 耄耋之年 高壽 100歲以上。人的各個年齡...