查看完整版本 : 求問 Excel 程式難題

Henry-Loi 2020-7-13 05:17 PM

求問 Excel 程式難題

希望有人教我用 Excel, 對於我嚟講真係一道難題:

有5個格 (A1:A5) 每個格會同時顯示任意1至15的一個數字, 但此5個格的數字不能同時相同.

我利用亂碼公式 =ROUND(RAND()*14,0)+1 寫在A1的格來顯示任意1至15的數字.
在A2的格中, 嘗試利用 IF 公式: 如果A1與A2數據相同, 再次用亂碼公式, 否則印出數據.
A2=IF(A1=ROUND(RAND()*14,0)+1,ROUND(RAND()*14,0)+1,)

A2=IF(A1<>ROUND(RAND()*14,0)+1,ROUND(RAND()*14,0)+1,)
但總是會出現相同的數字分別於A1格及A2格. 或A2出現0, 及不知道怎能在 IF 公式中印出每格不同的數字出來. 失敗. :(
希望各位師兄教導. 多謝.

[[i] 本帖最後由 Henry-Loi 於 2020-7-13 05:23 PM 編輯 [/i]]

余詠詩 2020-7-13 07:35 PM

個例子等於簡六合彩,不如用任何一個程式語言寫個程式好過

鄉貢仁 2020-7-13 07:45 PM

用python搞掂, 最好用array來做,彈咗random no. 出來將對應的array index 值轉flag(記號), a2..落下去見到有flag就搞多一次,直到無flag就彈出個隨機數,python 有library 直接存寫xls檔。

alee001 2020-7-13 09:25 PM

上網搵 excel random number 不重覆 大把方法啦...

YjgfkHJj 2020-7-13 10:27 PM

Syntax for IF:

IF( condition, value_if_true, [value_if_false] )
u see your code:


A2=IF(A1=ROUND(RAND()*14,0)+1,ROUND(RAND()*14,0)+1,)
both blocks are the same ! (ROUND(RAND()*14,0)+1)

so if A1 equals to [ROUND(RAND()*14,0)+1]

then u set A2 to [ROUND(RAND()*14,0)+1]



then of coz A2 is equal to A1 la!

煙民母親生賤種 2020-7-13 11:40 PM

唔好話用 formula  寫麻煩。就算用任一語言寫都麻煩。我會用物理方法,先把 1 至 15  放入  list  度,每抽一個 index  就 從  list  內 delete  該 index  ,  咁就永遠唔會重覆。

鄉貢仁 2020-7-14 10:42 AM

:P

凡間忠盒子 2020-7-14 10:50 AM

A1點解唔用randbetween?

111x111=12321 2020-7-14 12:44 PM

[quote]原帖由 [i]煙民母親生賤種[/i] 於 2020-7-13 11:40 PM 發表 [url=https://computer.discuss.com.hk/redirect.php?goto=findpost&pid=521603135&ptid=29213354][img]https://computer.discuss.com.hk/images/common/back.gif[/img][/url]
唔好話用 formula  寫麻煩。就算用任一語言寫都麻煩。我會用物理方法,先把 1 至 15  放入  list  度,每抽一個 index  就 從  list  內 delete  該 index  ,  咁就永遠唔會重覆。 ... [/quote]係, 卒之個algorithm可能就係呢個物理sim. :loveliness:

前期大表姐 2020-7-14 07:51 PM

[quote]原帖由 [i]凡間忠盒子[/i] 於 2020-7-14 10:50 AM 發表 [url=https://computer.discuss.com.hk/redirect.php?goto=findpost&pid=521619261&ptid=29213354][img]https://computer.discuss.com.hk/images/common/back.gif[/img][/url]
A1點解唔用randbetween? [/quote]
係可以,不過都有可能重覆

patpat904 2020-7-17 10:29 PM

用excel vba咪得

Dim var(5) As Integer
Dim tmp As Integer

For i = 1 To 5

    tmp = Int((15 - 1 + 1) * Rnd + 1)
    For j = 1 To i
        If var(j) = tmp Then
            tmp = Int((15 - 1 + 1) * Rnd + 1)
        Else
            var(i) = tmp
        End If
    Next
   
    ThisWorkbook.ActiveSheet.Cells(i, 1) = var(i)

Next
頁: [1]
查看完整版本: 求問 Excel 程式難題