Board logo

標題: [發問] 搜尋最後一列都有相同數字的組合。 [打印本頁]

作者: ziv976688    時間: 2017-1-3 11:36     標題: 搜尋最後一列都有相同數字的組合。

[attach]26284[/attach]

需求︰
以RrngA InputBox任取一個開獎版(DATA!)的期數及其填入CrngA InputBox的欄位數(簡稱A組合);
另以RrngB InputBox任取一個開獎版(DATA!)的期數及其填入CrngB InputBox的欄位數(簡稱B組合);
當A組合和B組合和A*B的組合都符合基本邏輯的條件三個組合之各驗證版的最後一列也都有顯示相同的號碼時,則產生效果檔案;否則不產生效果檔案。

其餘...詳如上傳範例說明。

敬請各位大大指導。感恩~~~~~~~~~~~
作者: ziv976688    時間: 2017-1-5 11:15

本帖最後由 ziv976688 於 2017-1-5 11:26 編輯

補充說明︰
n=2,2星對2星和n=3,1星對2星;n=3,2星對1星;n=3,2星對2星等︰因只列280期,所以找不到範例,請見諒!

建議先看"文字說明",再"拉出"I_280期_50_273-12+268-56_2次_12,42.和I_280期_50_273-4+250-6_3次_38.
如果還無法理解需求,再"拉出"其它範例來看。謝謝!

圖示中的流程說明是不才以"人工比對"時的感覺︰先比A和B,當其成立後~再比A*B,效率會比較快。
但在電腦跑程式的實務上為何?小弟不清楚;所以組合比對的"流程順序"︰請 各位大大擇優編寫。謝謝!
作者: c_c_lai    時間: 2017-1-5 17:10

本帖最後由 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
複製代碼

作者: c_c_lai    時間: 2017-1-5 17:17

回復 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
複製代碼

作者: ziv976688    時間: 2017-1-7 17:11

回復 4# c_c_lai
謝謝您的不吝指導
重新說明如下︰
[attach]26314[/attach]
備註︰代用名詞說明
A組合=RrngA InputBox任取一個開獎版(DATA!)的期數及其填入CrngA InputBox的欄位數。
B組合=RrngB InputBox任取一個開獎版(DATA!)的期數及其填入CrngB InputBox的欄位數。
n= Ncount InputBox填入驗證版的指定次數。
I = Number InputBox填入指定的號碼。

通則︰
RrngA的期數<Nrange期數才有效∼執行。
RrngB的期數<RrngA期數才有效∼執行。
搜尋的範圍=由StrRng InputBox填入的各期數到Nrange InputBox填入的各期數為止。

基本邏輯︰
以A組合或B組合或A*B的雙組合~在搜尋的範圍內~
由其基準列往上搜尋第1個到第n個的相同組合(即驗證版),
當該組合的第1個到第n個的相同組合之最後一列(=Nrange期數的對應期數)~
都有顯示任一個(含)以上的I時,則邏輯條件成立。

需求︰產生效果檔及其Sheet1格式內容。
1.當A組合和B組合和A*B的雙組合等都符合基本邏輯的條件~且
三個組合之各驗證版的最後一列(=Nrange期數的對應期數)也都有顯示相同的I時,則產生效果檔案。

2.名稱
總資料夾︰I_Nrange期_NUM_ RrngA _ CrngA星+RrngA _ CrngA星_ Ncount次_ Number

分資料夾名稱和效果檔案名稱和效果檔案Sheet1的內容&格式~~~~~~~~~~~
詳如各範例檔的圖示和說明。謝謝!
作者: ziv976688    時間: 2017-1-7 17:36

回復 4# c_c_lai
看這樣行不行~~~~
[attach]26317[/attach]
[attach]26318[/attach]
[attach]26319[/attach]
[attach]26320[/attach]
[attach]26321[/attach]

以上為1星_1星_2次的圖示~~
圖示1~3=搜尋邏輯的分解說明。
拉平圖說=開獎版&3個 組合的驗證版的對應期數拉平齊後的圖示和重點說明。
Sheet1=為  I_28期_15_24-3+20-5_2次_3,11,21,49 效果檔案的內容和工作表格式。

其餘 1_1星_3次; 1_2星_2次; 1星_2星_3次; 2星_1星_2次;2星_1星_3次;2星_2星_2次;2星_2星_3次
情詳見上傳範例。

PS:BASE_T-1(MF)的DATA開獎表為模擬資料。
作者: c_c_lai    時間: 2017-1-9 09:11

回復 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)
這三種組合,跟你要的數據有所差距嗎?
作者: ziv976688    時間: 2017-1-9 10:42

本帖最後由 ziv976688 於 2017-1-9 10:56 編輯

回復 7# c_c_lai
您是說指定號碼的範圍嗎?
Number InputBox  指定號碼的範圍是從01~49作任意選擇:
EX:1,3,5就是如果各組合(即A組合,B組合,A*B組合)的最後一列都有顯示01或03或05的任一個(含)以上的指定號碼即成立。
EX:1-3,10-15就是如果各組合的最後一列都有顯示01或02或03或10或11或12或13或14或15的任一個(含)以上的指定號碼即成立。
EX:10-15,23,38,47-49就是如果各組合的最後一列都有顯示11或12或13或14或15或23或38或47或48或49的任一個(含)以上的指定號碼即成立。
EX:1-49就是如果各組合的最後一列都有顯示01~49的任一個(含)以上的指定號碼即成立。
所以~
範例主檔(BASE_T-1(MF))的指定號碼(Number) = "3,11,21-26,43,49"
即是如果各組合的最後一列都有顯示03或11或21或22或23或24或25或26或43或49的任一個(含)以上的指定號碼即成立。

還是您是說比對的基準期數範圍嗎?
RrngA = "21-24"  指A基準期數21期到24期
RrngB = "18-21" 指B基準期數18期到21期
RrngA>RrngB 才執行;所以
A組合基準期數  21期, 22期, 23期, 24期
B組合基準期數 18期,19期, 20期, 21期
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

=============================================================================================================
   '  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)
不太懂 21 (4)、11 (3)、2 (2)中的 (4),(3),(2)的意思?
是指22期到26期之間,21出現4次;11出現3次;02出現2次?

期間某號碼出現幾次與需求無關^^
作者: c_c_lai    時間: 2017-1-9 11:10

本帖最後由 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 , . . . . .  等等是何義?
作者: ziv976688    時間: 2017-1-9 11:19

再補充:
CrngA=1-2;表示A組合基準期數 的7個欄位任取其中的1個欄位和任取其中的2個欄位的不重複組合。
即1,2,3,4,5,6,7和12.13,14,15,16,17,23,24,25,26,27,34,35,36,37,45,46,47,56,57,67等共28個同欄同號的組合。

CrngA=1-3;表示A組合基準期數 的7個欄位任取其中的1個欄位和任取其中的2個欄位和任取其中的3個欄位的不重複組合。
即1,2,3,4,5,6,7和12.13,14,15,16,17,23,24,25,26,27,34,35,36,37,45,46,47,56,57,67;123,124,125,126,127,134,135,136,137,145,146,147,156,157,167;234,235,236,237,...567;等共63個同欄同號的組合。
其餘1-4,1-6,2-3,2-4,2-5,2-6,....,5-6,1,2,3,4,5,6類推。

CrngB=1-2;表示B組合基準期數 的7個欄位任取其中的1個欄位和任取其中的2個欄位的不重複組合。
即1,2,3,4,5,6,7和12.13,14,15,16,17,23,24,25,26,27,34,35,36,37,45,46,47,56,57,67等共28個同欄同號的組合。

CrngA=1-3;表示A組合基準期數 的7個欄位任取其中的1個欄位和任取其中的2個欄位和任取其中的3個欄位的不重複組合。
即1,2,3,4,5,6,7和12.13,14,15,16,17,23,24,25,26,27,34,35,36,37,45,46,47,56,57,67;123,124,125,126,127,134,135,136,137,145,146,147,156,157,167;234,235,236,237,...567;等共63個同欄同號的組合。
其餘1-4,1-6,2-3,2-4,2-5,2-6,....,5-6,1,2,3,4,5,6類推。
作者: ziv976688    時間: 2017-1-9 12:11

回復 9# c_c_lai

是指22期到26期之間,21出現4次;11出現3次;02出現2次。
各期數與期數之間的某號碼共出現幾次,與本題的邏輯條件和需求無關




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


填入Number InputBox裡的號碼
是指各組合(即A組合,B組合,A*B組合)的最後一列必須同時出現任一個(含)以上的號碼。
EX:6#的Sheet1!列22
A組合和B組合和A組合*B組合的最後一列都有同時出現03,11,21,49的4個指定號碼。

(二) 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 , . . . . .  等等是何義?


21*18 就是以第21期為A基準期數,另以第18期為B基準期數
EX:6#就是以第20期為A基準期數,另以第15期為B基準期數;則A基準期數*B基準期數=20*15
因為檔案名稱不能以符號"*"表示,只好以"+"替代。
作者: ziv976688    時間: 2017-1-9 12:52

本帖最後由 ziv976688 於 2017-1-9 12:54 編輯

EX:6#就是以第20期為A基準期數,另以第15期為B基準期數;則A基準期數*B基準期數=20*15
因為檔案名稱不能以符號"*"表示,只好以"+"替代。
修正筆誤~~~
EX:6#就是以第24期為A基準期數,另以第20期為B基準期數;則A基準期數*B基準期數=24*20
因為檔案名稱不能以符號"*"表示,只好以"+"替代。
作者: c_c_lai    時間: 2017-1-9 14:02

回復 12# ziv976688
[attach]26330[/attach]
  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組合、基準列的訂定)?
作者: ziv976688    時間: 2017-1-9 16:28

本帖最後由 ziv976688 於 2017-1-9 16:43 編輯

回復 13# c_c_lai
不好意思。您可能誤解圖示的配置與說明了;
重新說明如下:  

    StrRng = "1"
    Nrange = "28"
    num = "15"
    RrngA = "21-24"
    CrngA = "1-2"
    RrngB = "18-21"
    CrngB = "1-2"
    Order = ""
    Number = "3,11,21-26,43,49"
    Ncount = "2-3"

能否就以此圖示, 再將它詮釋一下 (A組合、B組合、基準列的訂定)?
EX︰
當取RrngA=其中的第24期;CrngA=其中的1;RrngB=其中的第20期;CrngB=其中的1時;
則其
第24期之第3位(D欄)開21(=RrngA_CrngA=A基準組合);往下4期=開獎期
第20期之第5位(F欄)開30(=RrngB_CrngB=B基準組合);往下8期=開獎期
第24期之第3位(D欄)開21)且其往上4期的第20期之第5位(F欄)開30(=RrngA_CrngA +RrngB_CrngB=A基準組合*B基準組合);往下4期=開獎期

當由第24期(A基準組合)往上搜尋
第1次出現第3位(D欄)開21的期數為22期(第1個A組合驗證版);往下4期=26期,開03,11,42,45,46,49,21
第2次出現第3位(D欄)開21的期數為20期(第2個A組合驗證版);往下4期=24期,開11,17,21,26,43,49,03
請見圖示1

當由第20期(B基準組合)往上搜尋
第1次出現第5位(F欄)開30的期數為18期(第1個B組合驗證版);往下8期=26期,開03,11,42,45,46,49,21
第2次出現第5位(F欄)開30的期數為16期(第2個B組合驗證版);往下8期=24期,開03,11,42,45,46,49,21
請見圖示2

當由第24期(A基準組合)往上搜尋
第1次出現第3位(D欄)開21且其往上4期的第5位(F欄)開30的期數為22,18(第1個A組合*B組合驗證版);往下4期=26期,開03,11,42,45,46,49,21
第2次出現第3位(D欄)開21且其往上4期的第5位(F欄)開30的期數為20,16(第2個A組合*B組合驗證版);往下4期=24期,開11,17,21,26,43,49,03
請見圖示3

依據邏輯條件︰當各組合的第1個到第n個之各驗證版都有出現任1個(含)以上的相同指定號碼則成立~~
因為本例︰各組合的第1個和第2個之各驗證版都有出現03,11,21,49,所以符合n=2的邏輯條件︰本例成立
請見開獎版&3個組合的驗證版拉平圖說


效果檔案的需求請詳見Sheet1

P.S.
A基準組合和B基準組合和A基準組合*B基準組合的各驗證版不是一定要同為一個組合~~~
本例A基準組合和B基準組合和A基準組合*B基準組合的各驗證版同為一個組合~~純屬巧合

請重新檢視比對其他範例;如有不解的地方,尚請不吝告知。謝謝!
作者: c_c_lai    時間: 2017-1-10 12:37

回復 10# ziv976688
[attach]26344[/attach]
[attach]26345[/attach]
[attach]26346[/attach]
[attach]26347[/attach]
以上 1 ~ 8 的
        StrRng =
        Nrange =
        num    =
        RrngA  =
        CrngA  =
        RrngB  =
        CrngB  =
        RrngC  =
        CrngC  =
        Order  =
        Number =
        Ncount =
能否一一告知?
作者: ziv976688    時間: 2017-1-10 15:39

本帖最後由 ziv976688 於 2017-1-10 15:42 編輯

回復 15# c_c_lai
1
StrRng = "1"
    Nrange = "28"
    num = "15"
    RrngA = "24"
    CrngA = "1"
    RrngB = ""
    CrngB = ""
    Order = ""
    Number = "3,11,21,49"
    Ncount = "2"

2
StrRng = "1"
    Nrange = "28"
    num = "15"
    RrngA = "21"
    CrngA = "2"
    RrngB = ""
    CrngB = ""
    Order = ""
    Number = "11,26,43"
    Ncount = "2"

3
StrRng = "1"
    Nrange = "28"
    num = "15"
    RrngA = ""
    CrngA = ""
    RrngB = "18"
    CrngB = "1"
    Order = ""
    Number = "3,11,21,49"
    Ncount = "2-3"

4
StrRng = "1"
    Nrange = "28"
    num = "15"
    RrngA = "24"
    CrngA = "2"
    RrngB = "18"
    CrngB = "1"
    Order = ""
    Number = "11,26,43"
    Ncount = "2"

5
StrRng = "1"
    Nrange = "28"
    num = "15"
    RrngA = "21"
    CrngA = "2"
    RrngB = ""
    CrngB = ""
    Order = ""
    Number = "11,26,43"
    Ncount = "3"

6
StrRng = "1"
    Nrange = "28"
    num = "15"
    RrngA = ""
    CrngA = ""
    RrngB = "18"
    CrngB = "1"
    Order = ""
    Number = "11"
    Ncount = "3"

7
StrRng = "1"
    Nrange = "28"
    num = "15"
    RrngA = "21"
    CrngA = "2"
    RrngB = "18"
    CrngB = "1"
    Order = ""
    Number = "11,26"
    Ncount = "3"

8
StrRng = "1"
    Nrange = "28"
    num = "15"
    RrngA = "23"
    CrngA = "1"
    RrngB = ""
    CrngB = ""
    Order = ""
    Number = "11,26,43"
    Ncount = "2"

以上1-8都包含在~~
StrRng = "1"
    Nrange = "28"
    num = "15"
    RrngA = "21-24"
    CrngA = "1-2"
    RrngB = "18-21"
    CrngB = "1-2"
    Order = ""
    Number = "3,11,21-26,43,49"
    Ncount = "2-3"
作者: c_c_lai    時間: 2017-1-10 16:57

回復 16# ziv976688
謝謝你的說明,但是 5,6,7 三個圖示中
都含有 第 2 組、以及 第 3 組 呢!
作者: ziv976688    時間: 2017-1-10 17:21

本帖最後由 ziv976688 於 2017-1-10 17:28 編輯

回復 17# c_c_lai
5,6,7都含有 第 2 組、以及 第 3 組~~所以是第2組(Ncount=2)比對一次;第3組(Ncount=3)另外再比對一次^^"

或者改成這樣您比較清楚~~
5
StrRng = "1"
    Nrange = "28"
    num = "15"
    RrngA = "21"
    CrngA = "2"
    RrngB = ""
    CrngB = ""
    Order = ""
    Number = "11,26,43"
    Ncount = "2-3"

6
StrRng = "1"
    Nrange = "28"
    num = "15"
    RrngA = ""
    CrngA = ""
    RrngB = "18"
    CrngB = "1"
    Order = ""
    Number = "11"
    Ncount = "2-3"

7
StrRng = "1"
    Nrange = "28"
    num = "15"
    RrngA = "21"
    CrngA = "2"
    RrngB = "18"
    CrngB = "1"
    Order = ""
    Number = "11,26"
    Ncount = "2-3"
作者: c_c_lai    時間: 2017-1-10 17:54

回復 18# ziv976688
舉個圖例
[attach]26353[/attach]
作者: ziv976688    時間: 2017-1-10 21:50

本帖最後由 ziv976688 於 2017-1-10 21:52 編輯

回復 19# c_c_lai
    StrRng = "1" ' InputBox("請輸入DATA!各搜尋比對的起始期數", "輸入期數")
    Nrange = "28" ' InputBox("請輸入DATA!各搜尋比對的迄止(開獎)期數", "輸入期數")
    num = "15" 'InputBox("請輸入效果檔A︰H複製範圍的期距數", "輸入距期數")
    RrngA = "21-24" 'InputBox("請輸入各"第一個"比對的"基準期數A", "輸入第一個期數")
    CrngA = "1-2" 'InputBox("請輸入各"第一個"比對的7欄取任1~6之欄位數", "輸入欄位數(1~6)")
    RrngB = "18-21" 'InputBox("請輸入各"第二個"比對的"基準期數B", "輸入第二個期數")
    CrngB = "1-2" 'InputBox("請輸入各"第二個"比對的7欄取任1~6之欄位數", "輸入欄位數(1~6))
    Order = "" 'InputBox("請輸入再篩選邏輯條件的起迄序號", "輸入序號(1~99)或不增加(按Enter)")
    Number = "3,11,21-26,43,49" 'InputBox("請輸入各指定的號碼", "輸入號碼(1~49)")
    Ncount = "2-3" ' InputBox("請輸入驗證版的連續次數", "輸入次數(2~10)")
綠字為各InputBox內,可填入的數字範圍和其填入的數字所代表意義~請參考。

NUM=15~~其作用如下:
將DATA!的(Nrange-NUM)到Nrange的A︰H開獎版期數複製貼上Sheet1!A7

第21期= RrngA    ;01,02= CrngA=2(欄)
第18期= RrngB    ;30= CrngB=1(欄)
所以~A基準組合*B基準組合=當期(21期)第一位(B欄)出01,第二位(C欄)出02;其上3期(18期)第五位(F欄)出30=21-12*18-5=21-12+18-5(檔案名稱不能包含*字元,以+代替)
P.S.RrngA到Nrange=21期到28期=Nrange-RrngA=7

當期(17期)第一位(B欄)出01,第二位(C欄)出02;其上3期(14期)第五位(F欄)出30=A*B基準組合第1個驗證版=17-12+14-5
P.S.17+7=24期;有開11,26

當期(14期)第一位(B欄)出01,第二位(C欄)出02;其上3期(11期)第五位(F欄)出30=A*B基準組合第2個驗證版=14-12+11-5
P.S.14+7=21期;有開11,26

當期(5期)第一位(B欄)出01,第二位(C欄)出02;其上3期(2期)第五位(F欄)出30=A*B基準組合第3個驗證版=5-12+2-5
P.S.5+7=12期;有開11,26

因此 :A基準組合*B基準組合成立

19#是"圖示3"
請比對"開獎版&3個 組合的驗證版拉平圖說"
A︰H & BE︰CB  就很清楚了
作者: c_c_lai    時間: 2017-1-11 07:26

回復 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期) 亦同此問。

謝謝你的耐心回覆!
作者: ziv976688    時間: 2017-1-11 11:20

回復 21# c_c_lai
A.
第21期 = RrngA ;01,02 = CrngA=2 (欄)
    在此之 01,02 = CrngA=2 (欄)

CrngA=1-2意指在基準列A的7欄中任取1欄和7欄任取2欄;所以本例就是在基準列A(=21期)取B欄=01和C欄=02;合為"基準A組合"。
然後往上搜尋第一次同樣是B欄=01和C欄=02的期數為第1個A組合驗證版;第二次同樣是B欄=01和C欄=02的期數為第2個A組合驗證版;其餘...以此類推。

同理
    RrngB = "18-21" 指的是 第18期到第21期之期數,此項亦已無庸置疑。
    CrngB = "1-2", 但是你的說明
    第18期 = RrngB ;30 = CrngB=1 (欄)

30 是根據甚麼數據出線的,在你指定的 Number = "3,11,21-26,43,49" 中並不存在 30 這數字?
同理
在基準列B的7欄中任取1欄;本例就是基準列B(=18期)取F欄=30;合為"基準B組合"。
然後往上搜尋第一次同樣是F欄=30的期數為第1個B組合驗證版;第二次同樣是F欄=30的期數為第2個B組合驗證版;其餘...以此類推。
同理
基準A組合*基準B組合=(第21期的B欄=01和C欄=02)*(=18期的F欄=30)
然後往上搜尋第一次同樣是B欄=01和C欄=02的期數上3期的F欄=30為第1個A*B組合驗證版;
第二次同樣是B欄=01和C欄=02的期數上3期的F欄=30為第2個A*B組合驗證版;其餘...以此類推。

30 這數字和指定的 Number = "3,11,21-26,43,49" 無關。

B.  RrngA到Nrange=21期到28期=Nrange-RrngA=7 這個與 NUM=15 ~~ :
    將DATA!的(Nrange-NUM)到Nrange的A︰H開獎版期數複製貼上Sheet1!A7 的表達有何不同?

RrngA到Nrange=21期到28期=Nrange-RrngA=7
7是指基準列A的期數到Nrange期數的期距
所以其驗證版同樣是往下7期來對應。

NUM=XX~~是指定期距期數。
當NUM=15;即是效果檔案Sheet1!A7:H22=DATA!A&Nrange-NUM+1:H&Nrange+1

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

請參考上述的基準A組合*基準B組合與其驗證版的搜尋邏輯。
作者: c_c_lai    時間: 2017-1-11 12:41

回復 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 的含意是?
作者: ziv976688    時間: 2017-1-11 19:46

本帖最後由 ziv976688 於 2017-1-11 19:56 編輯

回復 23# c_c_lai
[attach]26362[/attach]
我想您是誤將基準組合和驗證版組合視為同一個標的了^^

填入RrngA InputBox裡的期數,都是指基準期數A
填入CrngA InputBox裡的欄位數,都是指基準期數A的欄位個數
請參考10#的說明。

所以︰RrngA=21-24  ;  CrngA=1-2
意指
第21期的任取1欄和任取2欄的A基準組合
第22期的任取1欄和任取2欄的A基準組合
第23期的任取1欄和任取2欄的A基準組合
第24期的任取1欄和任取2欄的A基準組合
即每單期有7+21=28個基準組合

因此也可以取RrngA=24期的CrngA=1之 D欄(=21)為A基準組合,
然後~
往上搜尋第一次D欄=21的期數(=第22期)為第1個驗證版;接著以22+(Nrange-RrngA)=第26期(開03,11,42,45,46,49,21)

然後~
再往上搜尋第二次D欄=21的期數(=第20期)為第2個驗證版;接著以20+(Nrange-RrngA)=第24期(開11,17,21,26,43,49,03)

此時,因為二次的驗證版都有出現相同的指定號碼=03,11,21,49,所以A基準組合的驗證版符合Ncount=2

同理
RrngB=18-21  ;  CrngB=1-2
意指
第18期的任取1欄和任取2欄的B基準組合
第19期的任取1欄和任取2欄的B基準組合
第20期的任取1欄和任取2欄的B基準組合
第21期的任取1欄和任取2欄的B基準組合
即每單期有7+21=28個基準組合

因此也可以取RrngB=19期的CrngB=1之D欄(=17)為B基準組合,
然後~
往上搜尋第一次D欄(=17)的期數(=第17期)為第1個驗證版;接著以17+(Nrange-RrngB)=第26期(開03,11,42,45,46,49,21)

然後~
再往上搜尋第二次D欄(=17)的期數(=第15期)為第2個驗證版;接著以15+(Nrange-RrngB)=第24期(開11,17,21,26,43,49,03)

此時,因為二次的驗證版都有出現相同的指定號碼=03,11,21,49,所以B組合的驗證版符合Ncount=2


最後再以上述的A&B基準組合~以同樣邏輯搜尋A基準組合*B基準組合的Ncount=2的驗證版組合~~
上述的A基準組合*B基準組合=24期的D欄(=21)*其上5期=19期的D欄(=17)
則由24期
往上搜尋第一次D欄(=21)且其上5期的D欄(=17)之期數(=第22期和17其)為第1個驗證版;接著以22+(Nrange-RrngA)=第26期(開03,11,42,45,46,49,21)
然後~
再往上搜尋第二次D欄(=21)且其上5期的D欄(=17)之期數(=第20期和15期)為第2個驗證版;接著以20+(Nrange-RrngA)=第24期(開11,17,21,26,43,49,03)

此時,因為二次的驗證版都有出現相同的指定號碼=03,11,21,49,所以A基準組合*B基準組合的驗證版符合Ncount=2

當Nrange(=28)>RrngA(=24)> RrngB(=19);CrngA=1;CrngB=1; Ncount=2;
其A基準組合的驗證版和B基準組合的驗證版和A基準組合*B基準組合的驗證版,
都有相同的指定號碼時,則產生效果檔案~~
名稱︰I_28期_15_24-3+19-3_2次_03,11,21,49
工作表(Sheet1)的內容與格式,不再贅述。
======================================================================
釐清基準組合和驗證版的分別及驗證版的搜尋邏輯後,其餘的就是剩下~~
總資料夾,子資料夾,效果檔案等名稱的建立︰

資料夾和檔案名稱不能包含*字元,所以改為+代替)
總資料夾︰I_Nrange期_NUM_ RrngA _ CrngA星+RrngA _ CrngA星_ Ncount次_ Number

分資料夾名稱︰(EX︰本新增範例所存放位置的子資料夾)︰I_28期_15_24-1星+19-1星_2次_ Number

效果檔案︰(EX︰本新增範例)I_28期_15_24-3+19-3_2次_03,11,21,49   
PS︰效果檔案名稱中的XX-3+XX-3;其3為欄位順序。
EX︰B欄=1,C欄=2,D欄=3,E欄=4, F欄=5,G欄=6,H欄=7
    B&C欄=12,B&D欄=13,D&E欄=34,E&H欄=47;B&F&H欄=157,...其餘類推
作者: ziv976688    時間: 2017-1-12 16:23

回復 23# c_c_lai
再稍作補充︰
1_所有InputBox裡的數字,都是以人工鍵入

2_A基準組合和B基準組合和A基準組合*B基準組合的各驗證版之最後一列(即Nrange期數的各對應期數),都必須有顯示相同的指定號碼時,才會成立效果檔案(其內只有一個工作表︰Sheet1)。

3_因為是A基準組合和B基準組合和A基準組合*B基準組合各依據邏輯篩選符合條件的驗證版組合,所以RrngA;CrngA;RrngB;CrngB的InputBox,如果有設計不當或不足的地方~~
尚請您不吝指正。謝謝您!
作者: c_c_lai    時間: 2017-1-12 20:26

回復 25# ziv976688
這是我根據你的回覆整理出來的
[attach]26366[/attach]
經過整理後,基本上業已大致明瞭你的描述,
你再幫我修飾一下,讓我能更確切地抓到重點,
謝謝你耐心地解說!
作者: ziv976688    時間: 2017-1-12 23:41

本帖最後由 ziv976688 於 2017-1-12 23:53 編輯

回復 26# c_c_lai
您客氣了!您整理得比不才的說明原稿清楚易懂,尤其是圖示的部分。

稍微再強調一個重點~~
因整個篇幅都是討論符合邏輯條件的組合,所以強調一下不符合邏輯條件的情況~~
1_當由某個A基準組合往上搜尋到第一次同欄位同號碼第1個驗證組合,其最後一列(=Nrange期數的對應期數)都沒有顯示任一個指定號碼時,就無需再往上繼續搜尋了~這個A基準組合無效組合

2_當由某個A基準組合往上搜尋到第一次同欄位同號碼的第1個驗證組合,其最後一列(=Nrange期數的對應期數)有顯示任一個指定號碼
再往上搜尋到第二次同欄位同號碼第2個驗證組合~~
第2個驗證組合最後一列(=Nrange期數的對應期數)都沒有顯示與第1個驗證組合的指定號碼相同時~~則這個A基準組合無效組合
作者: c_c_lai    時間: 2017-1-13 10:03

回復 27# ziv976688
謝謝你,這次的補充的確是把重點 (Key Point)
指出來了,否則在判斷上會有極大的誤差。
我會再整個思考一下。
[attach]26367[/attach]
[attach]26368[/attach]
[attach]26369[/attach]
以上三個圖示,第3個 A組合*B組合驗證版之 "最後一列"
應以何者期數當做為正確的 "最後一列" ?
作者: c_c_lai    時間: 2017-1-13 17:01

回復 25# ziv976688

再請教以下問題,
假設:
RrngA = "22-26"
CrngA = "1-2"
RrngB = "20-24"
CrngB = "1-2"
Ncount = "2-3"

此處之 CrngA = "1-2" 指的是 "B"、"C" 欄,
如為 CrngA = "4-5"  指的是 "E"、"F" 欄 ?

Ncount = "2-3" 指的是 "驗證版的連續次數",
此處連續次數是說 "二次" 到 "三次",亦即
本案例有兩個執行方案答案:
一個是 "二次"、另一個是 "三次"?
那麼, RrngA = "22-26" 亦同此意呦?
作者: ziv976688    時間: 2017-1-13 18:50

本帖最後由 ziv976688 於 2017-1-13 18:54 編輯

回復 28# c_c_lai
以上三個圖示,第3個 A組合*B組合驗證版之 "最後一列"
應以何者期數當做為正確的 "最後一列" ?

7+5=12(第3個 A組合*B組合驗證版之 "最後一列")~~因為A*B的驗證板組合是由A基準組合往上搜尋(即搜尋範圍是由A基準組合-1的期數(含),往上搜尋)
EX:本例的A組合*B組合驗證版是由~~
A基準組合-1的第22期(含),往上搜尋第1位(B欄)開02,第2位(C欄)開12且其上2期的第1位(B欄)開01,第2位(C欄)開02的同欄位且同號碼隻第1個到第3個的相同組合(即驗證板組合)。
==================================================================
再依順序重新整理關於不符合邏輯條件的情況~~
1_當由某個A基準組合往上搜尋~都沒有搜尋到任何同欄位同號碼的驗證組合,則這個A基準組合無效的基準組合。

2_當由某個A基準組合往上搜尋到第一次同欄位同號碼的第1個驗證組合,其最後一列(=Nrange期數的對應期數)都沒有顯示任一個指定號碼時,就無需再往上繼續搜尋了~這個A基準組合無效的組合。

3_當由某個A基準組合往上搜尋到第一次同欄位同號碼的第1個驗證組合,其最後一列(=Nrange期數的對應期數)有顯示任一個指定號碼
則再往上搜尋到第二次同欄位同號碼的第2個驗證組合~~
3a_搜尋不到第2個驗證組合時~~則這個A基準組合為無效的組合。  
3b_有搜尋到第2個驗證組合,最後一列(=Nrange期數的對應期數)都沒有顯示第1個驗證組合相同的指定號碼時~~則這個A基準組合為無效的組合。

以上是Ncount =2時的不符合邏輯條件的情況。

以下是Ncount =3時的不符合邏輯條件的情況。

1_當由某個A基準組合往上搜尋~都沒有搜尋到任何同欄位同號碼的驗證組合,則這個A基準組合無效的基準組合。

2_當由某個A基準組合往上搜尋到第一次同欄位同號碼的第1個驗證組合,其最後一列(=Nrange期數的對應期數)都沒有顯示任一個指定號碼時,就無需再往上繼續搜尋了~這個A基準組合無效的組合。

3_當由某個A基準組合往上搜尋到第一次同欄位同號碼的第1個驗證組合,其最後一列(=Nrange期數的對應期數)有顯示任一個指定號碼
則再往上搜尋到第二次同欄位同號碼的第2個驗證組合~~
3a_搜尋不到第2個驗證組合時~~則這個A基準組合為無效的組合。  
3b_有搜尋到第2個驗證組合,最後一列(=Nrange期數的對應期數)都沒有顯示第1個驗證組合相同的指定號碼時~~則這個A基準組合為無效的組合。

4_當由某個A基準組合往上搜尋到第一次同欄位同號碼的第1個驗證組合,其最後一列(=Nrange期數的對應期數)有顯示任一個指定號碼
則再往上搜尋到第二次同欄位同號碼的第2個驗證組合~~當第2個驗證組合第1個驗證組合最後一列也有顯示相同的指定號碼時~~
4a_搜尋不到第3個驗證組合時~~則這個A基準組合在Ncount =3時~~為無效的組合。  
3b_有搜尋到第3個驗證組合,最後一列(=Nrange期數的對應期數)都沒有顯示第1個驗證組合和第1個驗證組合相同的指定號碼時~~則這個A基準組合在Ncount =3時~~為無效的組合。

其餘Ncount =4~10以此類推。

另外提醒:Number InputBox填入的數字範圍=1~49,其可填入項目型態可為單項式或多項式或或混和式等複合式~~
EX:
可填入任一個單獨的數字(EX:1或3或4或...,或49);
也可填入任一個單獨的連續數字(EX:1-3或5-6或10-15或...,或41-49);
也可填入多個的單獨數字(EX:1,3,5或2,4,6,8或...,或1,7,10,15,20,30,35,42,49);
也可填入單個的連續數字(EX:1-5或2-8或...,或40-49或1-49);
也可填入多個的連續數字(EX:1-5,7-10或2-8,20-25,或...,或2-5,10-18,20-22,30-33,45-49);
也可填入任一個單獨的數字和單獨連續數字(EX:1,5-6或10,13-15或...,或20,41-49);
也可填入多個單獨的數字和多個連續數字(EX:1,3,5-6或10,13-15,20,23,26,30-33或...,或1-5,10,13,20,30-33,40,45-49);

連續號碼以"-"表示;項目與項目之間以","間隔。

其它的 InputBox填入的數字範圍=依其後面綠字說明其可填入項目型態可為單項式或多項式或或混和式複合式
P.S.後面綠字沒有註記說明的~~其範圍~~StrRng=1~9999;Nrange=2~9999;且要>StrRng;num =2~9999; RrngA=3~9999且要<NrangeRrngB=2~9999且要<RrngA

以上  謹請參考!
作者: ziv976688    時間: 2017-1-13 19:07

本帖最後由 ziv976688 於 2017-1-13 19:22 編輯

回復 29# c_c_lai
RrngA = "22-26"
CrngA = "1-2"
RrngB = "20-24"
CrngB = "1-2"
Ncount = "2-3"

此處之 CrngA = "1-2" 指的是 "B"、"C" 欄,
如為 CrngA = "4-5"  指的是 "E"、"F" 欄 ?


非也!!
CrngA = "1-2" 指的是 A基準列當期7個欄中任取1個同欄同數字不重複的排列組合;和7個欄中任取2個同欄同數字,不重複的排列組合。

CrngA = "4-5"  指的是 A基準列當期7個欄中任取4個的同欄同數字不重複的排列組合;和7個欄中任取5個同欄同數字,不重複的排列組合。
請參考24#和10#的說明

Ncount = "2-3" 指的是 "驗證版的連續次數",
此處連續次數是說 "二次" 到 "三次",亦即
本案例有兩個執行方案答案:
一個是 "二次"、另一個是 "三次"?


是的!!

那麼, RrngA = "22-26" 亦同此意呦?

是的!!
作者: c_c_lai    時間: 2017-1-13 19:33

本帖最後由 c_c_lai 於 2017-1-13 20:09 編輯

回復 31# ziv976688
CrngA = "1-2" 指的是 A基準列當期7個欄中任取1個同欄同數字不重複的排列組合;和7個欄中任取2個同欄同數字,不重複的排列組合。
是指 "任取1個、或者是 任取2個" 皆可之意?
那麼 "B"、"C" 欄 是屬於哪一組? CrngA = "1" ? CrngA = "2"?
如果是  CrngA = "2";那 "E"、"F" 也就成立了囉?
還是總共有兩組做法,一組只比對一欄,另一組同時比對兩欄?
作者: ziv976688    時間: 2017-1-13 20:09

本帖最後由 ziv976688 於 2017-1-13 20:16 編輯

回復 32# c_c_lai

那麼 "B"、"C" 欄 是屬於哪一組? CrngA = "1" ? CrngA = "2"?

CrngA = "1" 則B,C各為1組; CrngA = "2" ,則B*C為1組
所以~~
CrngA = "1" 時,B,C,D,E,F,G,H各為1組。共7組(函數公式=COMBIN(7,1))
CrngA = "2" 時,BC,BD,BE,BF,BG,BH,CD,CE,CF,CG,CH,.......,GH各為1組。共21組(函數公式=COMBIN(7,2))
因此當CrngA = "1-2" 時,共有28個組合。

CrngA = "1-2" 是指 "任取1個、或者是 任取2個" 皆可之意?
CrngA = "1-2" 是指"任取1個任取2個" 皆執行之意
作者: c_c_lai    時間: 2017-1-13 20:26

本帖最後由 c_c_lai 於 2017-1-13 20:52 編輯

回復 33# ziv976688
不太明白,實際上之比對只有 B,C,D,E,F,G,H 等 7 個欄位;
CrngA = "2" 時,BC,BD,BE,BF,BG,BH,CD,CE,CF,CG,CH,.......,GH各為1組。
請問 BC 等怎麼組合? 有否圖例說明?
同理,當CrngA = "1-2" 時,你說共有28個組合。
那如何表示?

反覆地研讀了說明,我試著做如下的推測,不知是否就是你的想法?
你說: CrngA = "1" 則B,C各為1組; CrngA = "2" ,則B*C為1組
意即  
當 CrngA = "1":
          比對欄位可為 B欄、或是C欄、或是D欄、或是E欄、或是F欄、
          或是G欄、或是H欄 的任一欄位?
當 CrngA = "2":
          比對欄位可為 B、C欄、或是B、D欄、或是B、E欄、或是B、F欄、或是B、G欄、
          或是C、D欄、或是C、E欄 等等的任一組合欄位?
那麼 當 CrngA = "1-2":
          比對欄位會是如何? B欄、C、D欄、或是 B欄、D、E欄、
          或是 C欄、E、F欄 等之表示?
作者: ziv976688    時間: 2017-1-13 21:33

回復 34# c_c_lai
當 CrngA = "1":
          比對欄位可為 B欄、或是C欄、或是D欄、或是E欄、或是F欄、
          或是G欄、或是H欄 的任一欄位?
當 CrngA = "2":
          比對欄位可為 B、C欄、或是B、D欄、或是B、E欄、或是B、F欄、或是B、G欄、
          或是C、D欄、或是C、E欄 等等的任一組合欄位?

是的!!

那麼 當 CrngA = "1-2":
          比對欄位會是如何? B欄、C、D欄、或是 B欄、D、E欄、
          或是 C欄、E、F欄 等之表示?


CrngA = "1-2":就是7取1和7取2分開執行。
也就是說~~CrngA = "1-2"與CrngA = "1,2"相同意思。
作者: ziv976688    時間: 2017-1-14 06:34

本帖最後由 ziv976688 於 2017-1-14 06:49 編輯

回復 34# c_c_lai
再補充~看這樣行不行^^"
R=當列(期);C=欄;1,2,3,4,5,6=欄數
RC1 =
"-1-2-3-4-5-6-7"
RC2 =
"-12-13-14-15-16-17-23-24-25-26-27-34-35-36-37-45-46-47-56-57-67"
RC3 = "-1,2,3-1,2,4-1,2,5-1,2,6-1,2,7-1,3,4-1,3,5-1,3,6-1,3,7-1,4,5-1,4,6-1,4,7-1,5,6-1,5,7-1,6,7-2,3,4-2,3,5-2,3,6-2,3,7-2,4,5-2,4,6-2,4,7-2,5,6-2,5,7-2,6,7-3,4,5-3,4,6-3,4,7-3,5,6-3,5,7-3,6,7-4,5,6-4,5,7-4,6,7-5,6,7"
RC4 = "-1,2,3,4-1,2,3,5-1,2,3,6-1,2,3,7-1,2,4,5-1,2,4,6-1,2,4,7-1,2,5,6-1,2,5,7-1,2,6,7-1,3,4,5-1,3,4,6-1,3,4,7-1,3,5,6-1,3,5,7-1,3,6,7-1,4,5,6-1,4,5,7-1,4,6,7-1,5,6,7-2,3,4,5-2,3,4,6-2,3,4,7-2,3,5,6-2,3,5,7-2,3,6,7-2,4,5,6-2,4,5,7-2,4,6,7-2,5,6,7-3,4,5,6-3,4,5,7-3,4,6,7-3,5,6,7-4,5,6,7"
RC5 =
"-1,2,3,4,5-1,2,3,4,6-1,2,3,4,7-1,2,3,5,6-1,2,3,5,7-1,2,3,6,7-1,2,4,5,6-1,2,4,5,7-1,2,4,6,7-1,2,5,6,7-1,3,4,5,6-1,3,4,5,7-1,3,4,6,7-1,3,5,6,7-1,4,5,6,7-2,3,4,5,6-2,3,4,5,7-2,3,4,6,7-2,3,5,6,7-2,4,5,6,7-3,4,5,6,7"
RC6=
"-1,2,3,4,5,6-1,2,3,4,5,7-1,2,3,4,6,7-1,2,3,5,6,7-1,2,4,5,6,7-1,3,4,5,6,7-2,3,4,5,6,7"

RrngA = "21-24"等同RrngA ="21,22,23,24"~~所以21,22,23,24四個期數分別各執行1次。
同理RrngA = "10,21-24"等同RrngA ="10,21,22,23,24"~~所以10,21,22,23,24五個期數分別各執行1次。
其餘...以此類推。

CrngA = "1-2"等同CrngA ="1,2"~~所以RC1和RC2分別各執行1次。
CrngA = "1,3-5"等同CrngA ="1,3,4,5"~~所以RC1和RC3和RC4和RC5分別各執行1次。
其餘...以此類推。

RrngB;CrngB 同理類推

因為主檔的期數太少,前面曾經提出之符合需求的範例已經是最大極限了,請再仔細檢視一下。
倘若一定要有圖示才能了解~~請不吝提出~~不才再做新主檔~另舉範例。
以上  謹請參考!謝謝您!
作者: c_c_lai    時間: 2017-1-14 07:05

本帖最後由 c_c_lai 於 2017-1-14 08:19 編輯

回復 36# ziv976688
黎明將近,但難度卻增高了,
我會再好好地來推敲的,
謝謝你!
作者: ziv976688    時間: 2017-1-14 21:42

本帖最後由 ziv976688 於 2017-1-14 21:43 編輯

回復 37# c_c_lai
   
[attach]26383[/attach]
StrRng = "1"
    Nrange = "600"
    num = "30"
    RrngA = "581-599"
    CrngA = "1-3"
    RrngB = "580-598"
    CrngB = "1-3"
    Number = "1-49"
    Ncount = "2-3"

圖示範例︰CrngA= "1-3"
重點在說明 "1-3"的意涵。

CrngB = "1-3" 同理類推。
作者: c_c_lai    時間: 2017-1-15 08:29

回復 38# ziv976688
    RrngA = "581-599"
    CrngA = "1-3"
    RrngB = "580-598"
    CrngB = "1-3"
請問, RrngA 與 RrngB 的對數一定要一致性 (對等數) 嗎?
萬一不對等數,又會怎麼處理?
那 CrngA = "1-3" 指的,總共便有三種組合了?

P.S.  這好像是大學聯招試題。
作者: ziv976688    時間: 2017-1-15 14:33

回復 39# c_c_lai

請問, RrngA 與 RrngB 的對數一定要一致性 (對等數) 嗎?
不一定~沒有限制。

萬一不對等數,又會怎麼處理?
就依據填入的期數執行即可。

那 CrngA = "1-3" 指的,總共便有三種組合了?
是的!

P.S.  這好像是大學聯招試題。
碩士解大學聯招試題~牛刀小試~輕而易舉^^
作者: c_c_lai    時間: 2017-1-15 17:06

回復 40# ziv976688
"依據填入的期數執行即可"
那就無所謂之 A*B 之組合可言了?
換句話說
如為 "對等數" 就一定要有  A*B 組合了?
作者: ziv976688    時間: 2017-1-15 17:41

回復 41# c_c_lai

還是有A*B組合
EX:RrngA = "100-200" ;RrngB = "10-12"
則有
100*10;100*11;100*12
101*10;101*11;101*12
102*10;102*11;102*12
:
:
:
200*10;200*11;200*12
共303個A*B組合。
作者: c_c_lai    時間: 2017-1-15 18:35

回復 42# ziv976688
收到,程式撰寫難度愈來愈高了。
如果還有疑問到時後要再請教你了。
作者: ziv976688    時間: 2017-1-15 19:11

回復 43# c_c_lai
麻煩您了!敬候佳音。
作者: c_c_lai    時間: 2017-1-17 08:09

回復 44# ziv976688
早安!

目前只差尚未寫入到工作表單內;
先將 Beta 版附上,提供參考;
如果後續表單的製作你能接手的話,
那我就可以下課休息了!
[attach]26406[/attach]

P.S.  我特意將Debug 過程中的註解 (Remark)
        內容保留,是要讓你明瞭它的演算過程。
作者: ziv976688    時間: 2017-1-17 09:47

回復 45# c_c_lai
您好!
不才完全無法接手~~還是有勞您克竟全功。謝謝您^^
作者: c_c_lai    時間: 2017-1-25 07:03

本帖最後由 c_c_lai 於 2017-1-25 07:23 編輯

回復 46# ziv976688
最近因家事繁忙,故只能抽空修正;
附上修正 (邏輯) 後之執行結果,麻煩檢查看看
是否正確?
[attach]26460[/attach]
  1. -------------------------------------------
  2. DGroup(1) :  : Variant(1 to 4)
  3. DGroup(1,1) = "22" : Variant/String
  4. DGroup(1,2) = "20" : Variant/String
  5. DGroup(1,3) = "2" : Variant/String
  6. DGroup(1,4) = "1" : Variant/String
  7. -------------------------------------------
  8. NCnt :  : Variant/String(0 to 1)
  9. NCnt(0) = "2" : String
  10. NCnt(1) = "3" : String
  11. ----------------------------------
  12. 第 1 個 Ncount = 2 組合次數
  13. ----------------------------------
  14. 第 1 個 A 組合
  15. 起始列 = 12
  16. 終止列 = 27
  17. 期  距 = 6
  18. 期  數 = 21
  19. 第一組 = 01
  20. 第二組 = 02
  21. ----------------------------------
  22. 第 2 個 A 組合
  23. 起始列 = 8
  24. 終止列 = 23
  25. 期  距 = 6
  26. 期  數 = 17
  27. 第一組 = 01
  28. 第二組 = 02
  29. ----------------------------------
  30. 第 1 個 B 組合
  31. 起始列 = 11
  32. 終止列 = 26
  33. 期  距 = 8
  34. 期  數 = 18
  35. 第五組 = 30
  36. ----------------------------------
  37. 第 2 個 B 組合
  38. 起始列 = 9
  39. 終止列 = 24
  40. 期  距 = 8
  41. 期  數 = 16
  42. 第五組 = 30
  43. ----------------------------------
  44. 第 1 個 C 組合
  45. 起始列 = 12
  46. 終止列 = 27
  47. 期  距 = 6
  48. 期  數 = 21
  49. 第一組 = 01
  50. 第二組 = 02
  51. 期  數 = 18
  52. 第五組 = 30
  53. ----------------------------------
  54. 第 2 個 C 組合
  55. 起始列 = 8
  56. 終止列 = 23
  57. 期  距 = 6
  58. 期  數 = 17
  59. 第一組 = 01
  60. 第二組 = 02
  61. 期  數 = 16
  62. 第五組 = 30
  63. ----------------------------------
  64. 第 1 個 Ncount = 3 組合次數
  65. ----------------------------------
  66. 第 1 個 A 組合
  67. 起始列 = 12
  68. 終止列 = 27
  69. 期  距 = 6
  70. 期  數 = 21
  71. 第一組 = 01
  72. 第二組 = 02
  73. ----------------------------------
  74. 第 2 個 A 組合
  75. 起始列 = 8
  76. 終止列 = 23
  77. 期  距 = 6
  78. 期  數 = 17
  79. 第一組 = 01
  80. 第二組 = 02
  81. ----------------------------------
  82. 第 3 個 A 組合
  83. 起始列 = 5
  84. 終止列 = 20
  85. 期  距 = 6
  86. 期  數 = 14
  87. 第一組 = 01
  88. 第二組 = 02
  89. ----------------------------------
  90. 第 1 個 B 組合
  91. 起始列 = 12
  92. 終止列 = 27
  93. 期  距 = 8
  94. 期  數 = 19
  95. 第三組 = 17
  96. ----------------------------------
  97. 第 2 個 B 組合
  98. 起始列 = 9
  99. 終止列 = 24
  100. 期  距 = 8
  101. 期  數 = 16
  102. 第三組 = 17
  103. ----------------------------------
  104. 第 3 個 B 組合
  105. 起始列 = 8
  106. 終止列 = 23
  107. 期  距 = 8
  108. 期  數 = 15
  109. 第三組 = 17
  110. ----------------------------------
  111. 第 1 個 C 組合
  112. 起始列 = 12
  113. 終止列 = 27
  114. 期  距 = 6
  115. 期  數 = 21
  116. 第一組 = 01
  117. 第二組 = 02
  118. 期  數 = 19
  119. 第三組 = 17
  120. ----------------------------------
  121. 第 2 個 C 組合
  122. 起始列 = 8
  123. 終止列 = 23
  124. 期  距 = 6
  125. 期  數 = 17
  126. 第一組 = 01
  127. 第二組 = 02
  128. 期  數 = 16
  129. 第三組 = 17
  130. ----------------------------------
  131. 第 3 個 C 組合
  132. 起始列 = 5
  133. 終止列 = 20
  134. 期  距 = 6
  135. 期  數 = 14
  136. 第一組 = 01
  137. 第二組 = 02
  138. 期  數 = 15
  139. 第三組 = 17
  140. ----------------------------------
複製代碼

作者: ziv976688    時間: 2017-1-25 08:14

回復 47# c_c_lai
早安!
不好意思,這樣看不出結果是對還是不對^^"
可否請您直接做個可執行並產生效果檔案的主檔~以利測試。
謝謝您^^
作者: c_c_lai    時間: 2017-1-25 17:38

回復 48# ziv976688
快過年了,還是抽時間將它趕出來。
工作表單命名 '  Sheets(Sheets.Count).Name = ""
你來給吧!
[attach]26470[/attach]
[attach]26469[/attach]
作者: ziv976688    時間: 2017-1-26 06:49

本帖最後由 ziv976688 於 2017-1-26 06:58 編輯

回復 49# c_c_lai
早安!
感謝您於春節前百忙中~尚熱心相助。
藉此先向您拜個早年~~
敬祝:
財源廣進!
闔家平安!


還是要有實例,較容易瞭解相互的認知有何不同^^

您把開獎版(比對的基準版)和第1個驗證組合重複了。
[attach]26472[/attach]
相同的指定號碼=11

============================================================================
StrRng = "1"
Nrange = "28" '
num = "15"
RrngA = "21-24"
CrngA = "1-2"
RrngB = "18-21"
CrngB = "1-2"
Order = ""   
Number = "3,11,21-26,43,49"
Ncount = "2-3"

使盡吃奶力,熬個通霄~終於以手工將上述的總資料夾和其內的分資料夾及其所有效果檔案製作完成。
謹供參考!

P.S.雖有重複檢視多次,但畢竟是手工製作~倘有錯誤,尚請您不吝指正。謝謝!

[attach]26473[/attach]
作者: c_c_lai    時間: 2017-1-26 08:11

回復 50# ziv976688
開獎版(比對的基準版)和第1個驗證組合重複了?
說真格的,不太懂你說的 "組合重複" 是在哪裡?
如下圖,對我這外行人來說實在看不出所以然。
[attach]26474[/attach]
作者: ziv976688    時間: 2017-1-26 08:27

本帖最後由 ziv976688 於 2017-1-26 08:36 編輯

回復 51# c_c_lai
請檢視您的上傳壓縮檔圖檔~~~~
這個圖表是不才再整理的~~與您的49#原圖表及上傳壓縮檔圖檔不同^^
作者: ziv976688    時間: 2017-1-26 08:44

本帖最後由 ziv976688 於 2017-1-26 08:50 編輯

回復 51# c_c_lai
看懂您的誤解是在那裡了?

請以設定的DATA!比對之A&B基準列(=開獎版)~~往上搜尋的第1次相同欄位且相同的號碼為第1個驗證組合;第2次相同欄位且相同的號碼為第2個驗證組合;....以此類推。
作者: c_c_lai    時間: 2017-1-26 12:37

回復 53# ziv976688
在 #50  的例子,你是用
      StrRng = "1"
      Nrange = "28" '
      num = "15"
      RrngA = "21-24"
      CrngA = "1-2"
      RrngB = "18-21"
      CrngB = "1-2"
      Order = ""
      Number = "3,11,21-26,43,49"
      Ncount = "2-3"
做解說。

而我的 #49 程式內,是以
      StrRng = "1"
      Nrange = "28" '
      num = "15"
      RrngA = "22"
      CrngA = "2"
      RrngB = "20"
      CrngB = "1"
      Order = ""
      Number = "3,11,21-26,43,49"
      Ncount = "2-3"
來執行測試的。請再次確實核對。
作者: ziv976688    時間: 2017-1-26 13:37

回復  ziv976688
在 #50  的例子,你是用
      StrRng = "1"
      Nrange = "28" '
      num = "15 ...
c_c_lai 發表於 2017-1-26 12:37


核對如下:
[attach]26478[/attach]
[attach]26479[/attach]
作者: c_c_lai    時間: 2017-1-26 16:19

回復 55# ziv976688
各驗證組合之最末列沒有相同的指定號碼,
不是只要有指定號碼就 OK 了嗎?
你是說所有的各驗證組合指定號碼要有一組
相同的指定號碼?只有這個問題嗎?
作者: ziv976688    時間: 2017-1-26 21:08

回復 56# c_c_lai
不是只要有指定號碼就 OK 了嗎?
不才從頭至尾沒有這樣說過。
請再回覽22#,24#,25#

只有這個問題嗎?   
工作表3的C驗證組合不符合邏輯條件和工作表4的B,C驗證組合不符合邏輯條件。
[attach]26483[/attach]
[attach]26484[/attach]
作者: c_c_lai    時間: 2017-1-29 08:56

回復 57# ziv976688
我視力不好 (動過開刀手術),
你再試試看是否吻合需求?
[attach]26493[/attach]
作者: c_c_lai    時間: 2017-1-29 09:49

本帖最後由 c_c_lai 於 2017-1-29 09:54 編輯

回復 55# ziv976688
[attach]26495[/attach]
[attach]26496[/attach]
[attach]26498[/attach]
作者: ziv976688    時間: 2017-1-29 14:07

本帖最後由 ziv976688 於 2017-1-29 14:10 編輯

回復 59# c_c_lai
有將A&B&A*B組合取得驗證組合邏輯再重述一遍~~謹請參考~~
工作表1
[attach]26499[/attach]

工作表1_Ans.
[attach]26500[/attach]

工作表36&Ans
[attach]26501[/attach]

I_28期_15_23-2+20-5_2次_11
[attach]26503[/attach]


詳如附件:[attach]26502[/attach]
作者: c_c_lai    時間: 2017-1-29 18:47

回復 60# ziv976688
到此你應該自己可以上手接續了!
我視力不佳無法仔細閱覽之故。
作者: ziv976688    時間: 2017-1-29 21:23

回復 61# c_c_lai
哈~哈~您太抬舉不材了。要是這樣不才就能接手,就不會一再作範例說明了。

說實在的~~您的語法不才尚在研究中~~只是連為什麼程式碼要寫在This Workbook的用意,不材都還沒搞懂?
有把DATA原來的程式碼移除,只留
Private Sub CommandButton1_Click()
    ThisWorkbook.extractBaseData
End Sub

StrRng = "1"
      Nrange = "28" '
      num = "15"
      RrngA = "21-24"
      CrngA = "1-2"
      RrngB = "18-21"
      CrngB = "1-2"
      Order = ""
      Number = "3,11,21-26,43,49"
      Ncount = "2-3"
執行測試結果是26個工作表(1個工作表=1個檔案)
不才以人工製作的檔案應該是有73個檔案。
差距甚大~~不才抓不出來^^"
作者: Airman    時間: 2017-1-29 21:29

回復 59# c_c_lai
回復 60# ziv976688
不好意思,恕容小弟引(借)用二位大德的範例。謝謝!
作者: c_c_lai    時間: 2017-1-30 07:44

本帖最後由 c_c_lai 於 2017-1-30 08:06 編輯

回復 62# ziv976688
那就以本樓為範例,前後各舉出你想要的三個具有
代表性且是正確位置的圖表   (共六張圖示範例);
(即 73 個檔案中前半部與後半部個舉三個實例圖型)

     StrRng = "1"
      Nrange = "28" '
      num = "15"
      RrngA = "21-24"
      CrngA = "1-2"
      RrngB = "18-21"
      CrngB = "1-2"
      Order = ""
      Number = "3,11,21-26,43,49"
      Ncount = "2-3"

如此才能得知明瞭你的真正表達與需求,
圖型中亦請稍加詮釋要注意事項,與需求原因。
不然光有圖表與所謂 (拉平), 就不知何意?

P,S,   不要用我程式內所產生的工作表內容作為範例;
          而是以你人工模式製出的需求工作表單為依據。

          程式碼並非一定要寫在This Workbook,
          也可放置在 "模組" 內的。
作者: ziv976688    時間: 2017-1-30 20:08

回復 64# c_c_lai

60#的圖解和說明~~
如果連"比對期數沒有拉齊(平)",都無法讓您理解,那不才就無言了^^"

我再想想看:要怎麼說明,才能讓您容易理解?
畢竟製作圖表+文字說明很費時耗神,這樣下去二個人都累^^
作者: ziv976688    時間: 2017-1-31 21:15

本帖最後由 ziv976688 於 2017-1-31 21:16 編輯

回復 64# c_c_lai

[attach]26511[/attach]

仔細思考後~~還是以貴解答工作表來說明不符合需求的地方,再另作正確答案的工作表~以利您修正程式碼。

以檢視59#貴解答工作表1~10;整理後的不符合需求的地方~~
1︰各比對基準期數(開獎版)和各驗證版的期數~~沒有同列齊平比對
EX︰工作表1~10
2︰B組合的比對基準(開獎版)期數和第 1 個 B 驗證版期數重複(20=20)
EX︰工作表5 & 6
3︰C(=A*B)組合的驗證版比對期數錯誤(19-18=1<>23-20;16-16=0<>23-20=3 )
EX︰工作表1 & 3  
4. A或B或C(=A*B)組合的比對基準期數標的指定的A或B或C(=A*B)組合的期數不符合
EX︰工作表1~10

以上供參!倘尚有問題煩請告知。謝謝您!
作者: c_c_lai    時間: 2017-2-3 18:15

回復 66# ziv976688
回復 63# Airman
再試試看吧!
[attach]26516[/attach]
[attach]26517[/attach]
作者: starbox520    時間: 2017-2-3 18:56

回復 67# c_c_lai


    來學習了~~
作者: ziv976688    時間: 2017-2-4 01:27

回復 67# c_c_lai
[attach]26522[/attach]
只剩下一個誤差~~
開獎版和各組的第1個驗證組合重複
EX:R1(MF)_T-1。
請將開獎版當為比對的母段落;各驗證組合當為比對的子段落
謝謝您^^
作者: c_c_lai    時間: 2017-2-4 08:24

回復 69# ziv976688
[attach]26523[/attach]
[attach]26524[/attach]
[attach]26525[/attach]
[attach]26526[/attach]
作者: ziv976688    時間: 2017-2-4 12:00

本帖最後由 ziv976688 於 2017-2-4 12:12 編輯

回復 70# c_c_lai
貴解答雖然不符合不才所需;
但還是謝謝您的熱心協助和不吝賜教
作者: c_c_lai    時間: 2017-2-4 17:03

回復 71# ziv976688
基本架構建置業已建立,你可以參考程式內容
以此類推進行修正,將它改成你真正的所需。
同時也謝謝你耐心的解說,才有今日之果實。
作者: ziv976688    時間: 2017-2-4 18:05

本帖最後由 ziv976688 於 2017-2-4 18:11 編輯

回復 72# c_c_lai
基本架構的期數還是沒有對齊,
不才再看看~~~
謝謝您^^"
作者: ziv976688    時間: 2017-2-4 19:48

本帖最後由 ziv976688 於 2017-2-4 20:01 編輯

回復 72# c_c_lai
基本架構嚴格說只完成~~開獎版的A比對基準列期數欄位和B比對基準列期數欄位的底色標示~~
其餘的不是不完整不然就是錯誤(包括70#的範例檔),因此,不才完全無法以此類推進行修正。

但最重要的是您雖然將需求說明附註在程式內,但卻總是不依據發問題的需求作解,雖經不才的一再解說,您還是總以自己的觀點來解題~~
EX:以最簡單的工作表名稱,明明是Sheet1即可,且加句Sheets("Sheet1").Move就可將效果檔案完成,可是您卻一直堅持己意作解。

雖然簡單的語法,不才可以自行修正,但總也要有個完成檔來做標準;但您總是不時的提醒要不才自行接下去完成~~
不才最後的感覺是"心願難以達成",所以只能對耽誤您許多的寶貴時間感到抱歉!
再次謝謝您的熱心協助~~感恩




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)