標題:
[發問]
1-1000中會出現的數字?
[打印本頁]
作者:
q1a2z5
時間:
2015-9-2 09:58
標題:
1-1000中會出現的數字?
有一個數值是214,在1-1000中會出現的數字有那些?
例如:214由小而大排列方式有:
124 141 214 241 412 421等
請問可有方法解?
謝謝!
作者:
GBKEE
時間:
2015-9-14 09:59
回復
1#
q1a2z5
試試看
Option Explicit
Sub Ex() '數字的重排
Dim w As String, i As Single, t As Single
Dim ww As String, Ar(), Arr(), At(), tt As Single
w = 66654422 '指定數字
t = Application.WorksheetFunction.Fact(Len(w)) 'Fact(工作表函數):數字的階乘。某數的階乘等於 1*2*3*...* 數字
'*******************************************
t = t / 3 '666重複
t = t / 2 '44重複
t = t / 2 '22重複
t = t / 3 '2,4,6重複
'*******************************************
ReDim At(1 To t) ' '設立重新排列的總數的陣列
ReDim Ar(1 To Len(w))
For i = 1 To Len(w)
Ar(i) = Mid(w, i, 1) '數字指定到陣列中
Next
'**********************************
For i = 1 To UBound(At)
ww = "" '清空
Do
Randomize '初始化亂數產生器
Arr = Ar 'Ar(數字指定的陣列)置入 Arr
Do
tt = Int(((Len(w)) * Rnd) + 1) '亂數
If Arr(tt) <> "" Then
ww = ww & Arr(tt)
Arr(tt) = "" '清空
End If
Loop Until Len(Join(Arr, "")) = 0 'Arr 全部清空
If InStr("," & Join(At, ",") & ",", "," & ww & ",") Then '數字存在"重新排列的總數的陣列
ww = ""
Else
At(i) = ww
Exit Do
End If
Loop
Next
[a1].Resize(t) = Application.WorksheetFunction.Transpose(At)
End Sub
複製代碼
作者:
hcm19522
時間:
2015-9-14 13:01
=IFERROR(SMALL(IF(IFERROR(FIND(LEFT(B$2),ROW($100
1000)),)+IFERROR(FIND(MID(B$2,2,1),ROW($100
1000)),)+IFERROR(FIND(RIGHT(B$2),ROW($100
1000)),)=6,ROW($100
1000)),ROW(A1)),"")
陣列 下拉 B2是三位數的數字且不重複
作者:
hcm19522
時間:
2015-9-14 13:23
http://blog.xuite.net/hcm19522/twblog/342507409
作者:
准提部林
時間:
2015-9-14 15:11
回復
3#
hcm19522
公式有時會出現〔表情符號〕,請在發表時,先將〔禁用表情符號〕的勾選取消,重新打勾一次,再送出!
作者:
hcm19522
時間:
2015-9-16 14:11
THANK ! "准大"
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)