返回列表 上一主題 發帖

[發問] 搜尋最後一列都有相同數字的組合。

本帖最後由 c_c_lai 於 2017-1-5 20:04 編輯

回復 2# ziv976688 h0 dl3d04d04
參考看看!
因我不懂這遊戲規則,只將你的程式碼略予試寫,不知可否?
  1. Sub Ex()
  2.     Dim startrang%, endrang%, tim!, In1rr As Variant, In2rr As Variant, StrRng$, Ncount$, Number
  3.     Dim RrngA$, Nrange$, CrngA$, RrngB$, CrngB$, i%, j%, y%, num$, Order$, NUMX$
  4.     Dim m1%, sta%

  5.     StrRng = "1"                            '  InputBox("請輸入DATA!各搜尋比對的起始期數", "輸入期數")
  6.     Nrange = "280"                          '  InputBox("請輸入DATA!各搜尋比對的迄止(開獎)期數", "輸入期數")
  7.     num = "50"                              '  InputBox("請輸入效果檔A︰H複製範圍的期距數", "輸入距期數")
  8.     RrngA = "253,268,273"                   '  InputBox("請輸入各"第一個"比對的"基準期數", "輸入第一個期數")
  9.     CrngA = "1-2"                           '  InputBox("請輸入各"第一個"比對的7欄取任1~6之欄位數", "輸入欄位數(1~6)")
  10.     RrngB = "249-250,263,268"               '  InputBox("請輸入各"第二個"比對的"基準期數", "輸入第二個期數")
  11.     CrngB = "1-2"                           '  InputBox("請輸入各"第二個"比對的7欄取任1~6之欄位數", "輸入欄位數(1~6))
  12.     Order = ""                              '  InputBox("請輸入再篩選邏輯條件的起迄序號", "輸入序號(1~99)或不增加(按Enter)")
  13.     Number = "04,12,20-22,30,34,38,42,47"   '  InputBox("請輸入各指定的號碼", "輸入號碼(1~49)")
  14.     Ncount = "2-3"                          '  InputBox("請輸入驗證版的連續次數", "輸入次數(2~10)")
  15.    
  16.     tim = Timer
  17.     [L1:L10] = ""
  18.     NUMX = num
  19.     Application.DisplayAlerts = False
  20.     On Error Resume Next                    '  將錯誤處理的方式設為「繼續下一行」。
  21.     Application.ScreenUpdating = False      '  在背景下執行
  22.    
  23.     '  ...............
  24.     In1rr = ToSplit(Nrange, ",")
  25.    
  26.     '  ................
  27.     In2rr = ToSplit(NUMX, ",")
  28.     '  ................
  29.       
  30.     '  .......................
  31.     [L1] = Nrange & "=" & Format((Timer - tim) / 24 / 60 / 60, "hh:mm:ss")
  32.     [L2] = "DATA!各搜尋比對的起始期數=" & StrRng
  33.     [L3] = "A︰H(開獎版)的期距數=" & NUMX
  34.     [L4] = "比對基準期數A=" & RrngA
  35.     [L5] = "欄位數A=" & CrngA
  36.     [L6] = "比對基準期數B=" & RrngB
  37.     [L7] = "欄位數B=" & CrngB
  38.     [L8] = "增加再篩選邏輯條件的序號=" & Order
  39.     [L9] = "各指定同號碼=" & Number
  40.     [L10] = "驗證版的連續次數=" & Ncount
  41. End Sub

  42. Function ToSplit(txt As String, sp As String, Optional dash As String = "-") As String()
  43.     Dim FullNameComma As Variant, cts As Integer, nxt As Integer
  44.     Dim lf As Integer, rt As Integer, spl As String


  45.     FullNameComma = Split(txt, sp)
  46.     spl = ""
  47.     For cts = LBound(FullNameComma) To UBound(FullNameComma)
  48.         nxt = InStr(FullNameComma(cts), dash)
  49.         If nxt > 0 Then
  50.             lf = Val(Left(FullNameComma(cts), nxt - 1))
  51.             rt = Val(Mid(FullNameComma(cts), nxt + 1))
  52.             For nxt = lf To rt
  53.                 spl = IIf(spl = "", CStr(nxt), spl & sp & CStr(nxt))
  54.             Next
  55.         Else
  56.             spl = IIf(spl = "", FullNameComma(cts), spl & sp & FullNameComma(cts))
  57.         End If
  58.     Next cts
  59.    
  60.     ToSplit = Split(spl, sp)
  61. End Function
複製代碼

TOP

回復 1# ziv976688
寫了一個測試程式,提供你了解 ToSplit() 的應用:
  1. Sub Test()
  2.     Dim txt As String, sp As Variant
  3.    
  4.     txt = "249-255,263,268"
  5.     sp = ToSplit(txt, ",")
  6.     MsgBox "249-255,263,268" & vbCrLf & Join(sp, ",")
  7.    
  8.     txt = "04,12,20-22,30,34,38,42,47"
  9.     sp = ToSplit(txt, ",")
  10.     MsgBox "04,12,20-22,30,34,38,42,47" & vbCrLf & Join(sp, ",")
  11. End Sub
複製代碼

TOP

回復 6# ziv976688
    '  22 ~ 26  :  21 (4)、11 (3)、2 (2)、26 (2)、 38 (2)、 43 (2)、 46 (2)
    '  20 ~ 24  :  21 (4)、2 (3)、12 (2)、14 (2)、 30 (2)、 46 (2)、 17 (1)
    '  45 ~ 51  :  11 (3)、34 (2)、6 (2)、41 (2)、 49 (2)、 22 (2)、 30 (2)
這三種組合,跟你要的數據有所差距嗎?

TOP

本帖最後由 c_c_lai 於 2017-1-9 11:12 編輯

回復 8# ziv976688
是指22期到26期之間,21出現4次;11出現3次;02出現2次。

至於
(一) 指定號碼的範圍
     是指 "A基準期數21期到24期" 的 第 24 期行中,有出現 "指定號碼"?

(二) A基準期數*B基準期數比對的期數
     有21*18,21*19,21*20;
     22*18,22*19,22*20,22*21;23*18,23*19,23*20,23*21,23*22;
     24*18,24*19,24*20,24*21,24*22,24*23
     不太明白,21*18 , . . . . .  等等是何義?

TOP

回復 12# ziv976688
  1.     Nrange = "28"
  2.     RrngA = "22-26"
  3.     CrngA = "1-2"   

  4.     RrngB = "20-24"
  5.     CrngB = "1-2"   
  6.     Number = "3,11,21-26,43,49"
複製代碼
這樣的程式碼與圖示的說明對稱嗎?
能否就以此圖示, 再將它詮釋一下 (A組合、B組合、基準列的訂定)?

TOP

回復 10# ziv976688




以上 1 ~ 8 的
        StrRng =
        Nrange =
        num    =
        RrngA  =
        CrngA  =
        RrngB  =
        CrngB  =
        RrngC  =
        CrngC  =
        Order  =
        Number =
        Ncount =
能否一一告知?

TOP

回復 16# ziv976688
謝謝你的說明,但是 5,6,7 三個圖示中
都含有 第 2 組、以及 第 3 組 呢!

TOP

回復 18# ziv976688
舉個圖例

TOP

回復 20# ziv976688
請問:
A.  RrngA = "21-24" 指的是 第21期到第24期期數,此項已無庸置疑。
    CrngA = "1-2"
       (請輸入各"第一個"比對的7欄取任1~6之欄位數", "輸入欄位數(1~6)")
    目前之輸入值為 "1-2", 而你的
    第21期 = RrngA ;01,02 = CrngA=2 (欄)
    在此之 01,02 = CrngA=2 (欄) 指的是 01 (B欄位值),02 (C欄位值)
    總共有兩個欄位? 為何要取 01,02? 是因為 CrngA 指定 "1-2" ("B"、"C"欄)?
    同理
    RrngB = "18-21" 指的是 第18期到第21期之期數,此項亦已無庸置疑。
    CrngB = "1-2", 但是你的說明
    第18期 = RrngB ;30 = CrngB=1 (欄)
    18      12   15   21   23   30   48   26
    為何是取第五位 (F欄) 的 30, 且指定之 CrngB=1 ? 而你的說明是
    所以~ A基準組合*B基準組合 = 當期 (21期) 第一位 (B欄) 出 01, 第二位 (C欄)出 02;
    其上3期 (18期) 第五位 (F欄) 出 30 ?  
    30 是根據甚麼數據出線的,在你指定的 Number = "3,11,21-26,43,49" 中並不存在 30 這數字?
B.  RrngA到Nrange=21期到28期=Nrange-RrngA=7 這個與 NUM=15 ~~ :
    將DATA!的(Nrange-NUM)到Nrange的A︰H開獎版期數複製貼上Sheet1!A7 的表達有何不同?
C.  接下來, 當期 (17期) 第一位 (B欄) 出01, 第二位 (C欄) 出02;其上3期 (14期) 第五位 (F欄)
    出30=A*B基準組合第1個驗證版=17-12+14-5
    為何又指向 17期 (RrngA = "21-24",RrngB = "18-21")? "其上3期" 其中的 3 是 "固定值" 嗎?
    如是,那在何處定義? 又、此處 17-12+14-5 的含意是? 往下之 (14期)、(5期) 亦同此問。

謝謝你的耐心回覆!

TOP

回復 22# ziv976688
不好意思,樓上的疑問,尚未明確解答。
A.  第18期 = 18      12   15   21   23   30   48   26
    為何是取第五位 (F欄) 的 30, 而非其他數據?
    同樣的,
    第21期 = 21      01   02   11   26   38   43   04
    為何要取 01,02, 而非其他數據?

    P.S.  非以肉眼來判斷,應以一合理程式邏輯來做判斷。
   
B.  RrngA到Nrange=21期到28期=Nrange-RrngA=7  (28 - 21 = 7)
    7 是指 基準列A 的期數到 Nrange 期數的期距。
    所以其驗證版同樣是 往下7期 來對應。

    NUM=XX~~是指定期距期數。
    當NUM=15;即是效果檔案Sheet1!A7:H22=DATA!A&Nrange-NUM+1:H&Nrange+1
   
    B1.  其中, A7:H22 是根據甚麼而來?
    B2.  A&Nrange (28) - NUM (15) + 1 : H&Nrange (28) + 1, 即 A14:H29 ?

C.  "其上3期" 其中的 3 是 "固定值" 嗎?
    如是,那在何處定義?

    接下來, 當期 (17期) 第一位 (B欄) 出01, 第二位 (C欄) 出02;其上3期 (14期) 第五位 (F欄)
    出30=A*B基準組合第1個驗證版=17-12+14-5

    根據甚麼定義,為何又指向 17期 (RrngA = "21-24",RrngB = "18-21")?
    往下之 (14期)、(5期) 亦同此問。
    又、此處 17-12+14-5 的含意是?

TOP

        靜思自在 : 慈悲沒有敵人,智慧不起煩惱。
返回列表 上一主題