Board logo

標題: [發問] 前3大和前3小的三層比對語法。 [打印本頁]

作者: Airman    時間: 2019-6-4 01:26     標題: 前3大和前3小的三層比對語法。

需求&測試檔︰[attach]30768[/attach]

圖示說明檔~請詳見︰排數總覽(尾數排序)-(2019-05-31)-Ans

需求(一)︰Sheet1(將各單列的前3大之第1列的同欄號碼,填入DJ︰EM的對應儲存格)

需求(二)︰Sheet2(將各單列的前3小之第1列的同欄號碼,填入DJ︰EM的對應儲存格)

請問︰以上的需求應該如何編寫?
懇請 各位先進惠予賜教!謝謝!
作者: 准提部林    時間: 2019-6-4 20:56

自行驗證看看:
[attach]30776[/attach]
作者: Airman    時間: 2019-6-4 22:26

回復 2# 准提部林
准大 : 您好!
比對答案是小弟應盡的義務^^
比對後~如有問題再提出。

整個檔案需求都已完成~
謝謝您多日來的耐心指導~感恩^^
作者: Scott090    時間: 2019-6-7 08:36

回復 1# Airman

        
      "前3小" 頁 看起來是比小:
   " EX︰AE62=1<AB62=2<AA62=AC62=AD62=3;則再比對AA63和AC63;AD63;因為AA63=AC63 =17;所以.........  "
      
        請確認一下 , 第2層,AD63 =7 < (AA63=AC63=17),17有2個,7只有1個;在這裡是 有2個以上的相同的(17)"大" 就取相同的"大" 去比較 第3層 (71列) 嗎?
作者: 准提部林    時間: 2019-6-7 09:43

本帖最後由 准提部林 於 2019-6-7 10:51 編輯

回復 4# Scott090


1 1 2 3 4
  5 6 7 只比對至這一層,取3
5 5 6 6 7
----------------------
1 1 2 3 4
  5 6 7 兩個相同,再往下比
  6 6 7 取最小的4
----------------------
1 1 2 3 4
  5 6 7
  6 6 7 取兩個
作者: Airman    時間: 2019-6-7 10:22

本帖最後由 Airman 於 2019-6-7 10:27 編輯

回復 4# Scott090
Scott090大大 :您好 !
  "前3小" 頁 看起來是比小:
EX︰AE62=1<AB62=2<AA62=AC62=AD62=3;則再比對AA63和AC63;AD63;因為AA63=AC63 =17;所以.........  "
      
       請確認一下 , 第2層,AD63 =7 < (AA63=AC63=17),17有2個,7只有1個;在這裡是 有2個以上的相同的(17)"大" 就取相同的"大" 去比較 第3層 (71列) 嗎?

是的!這裡是 有2個以上的相同的(17)"大"去比較 第3層 (71列)
且取該同欄71列的較小數字。

2個以上的相同的(17)"大" 就取相同的"大" 去比較 第3層 (71列)
正確的說 :是"小計"(AA63:AE63)有相同名次的並排者;所以才再比對第3層(71列)

簡扼說明3層的比對原則~前3大(Sheet1)_取較大數;前3小(Sheet2)_取較小數~
當各"單列"(第1層)有名次相同(並排)時,才再以該並排名次去比對"小計"列的同欄數字;
當該被比對"小計"列的同欄數字,又有名次相同(並排)時,才再以該並排名次去比對第3層(71列)的同欄數字。
EX1 :假設將AC62=3改為4;則只再比對AA62和AD62的下方"小計"列(AA63和AD63),然後取較小的AD63=7;不必再比對第3層~即前3小的第1列數字=46;16;36
EX2:假設將AC62=3改為4;將AD62=3改為5,則因"單列"(第1層)無名次相同(並排),所以不必再比對第2層(63列)~即前3小的第1列數字=46;16;06
EX3:假設將AB62=2改為1;將AD62=3改為2,則因"單列"(第1層)有並排的最小名次=AB62=AE62=1;所以再比對AB62和AE62的下方"小計"列(第2層)(AB63和AE63),且因AB63和AE63=12;所以再比對第3層(AB71和AE71列的同欄數字,取較小的AB71=109(即取AB1的16)。
另因(第1層)有AA62和AC62=3(並排第3小);所以再比對AA62和AC62的下方"小計"列(第2層)(AA63和AC63),且因AA63和AC63=17;所以再比對第3層(AA71和AC71列的同欄數字,取較小的AC71=149(即取AC1的26))~即前3小的第1列數字=16;36;26
以上供參

筆誤更正~
排數總覽(尾數排序)-(2019-05-31)-Ans的排數總覽(尾數排序)-(2019-05-31)工作表(Sheet1)
DS60=03;13        DT60=33        DU60=23   ==>清除
改為
DP60=03;13        DQ60=33        DR60=23
作者: Airman    時間: 2019-6-7 10:31

回復 5# 准提部林
准大 :
謝謝您幫忙說明
作者: Airman    時間: 2019-6-7 11:39

回復 4# Scott090
Scott090 :
學准大的說明方式再作補充供參^^
[attach]30798[/attach]
作者: Scott090    時間: 2019-6-7 13:22

回復 8# Airman
回復 5# 准提部林

      謝謝二位的說明,
      自我測試一下比對邏輯,請看一下:
                     比對陣列                                   前3大                    前3小
            10   20   30 35 40
            1     2     3        3         3  ==> 40   20   10         10   20    35
          20   25  30   20   20
         150   160     200   180    190
         
             請斧正,謝謝
作者: Airman    時間: 2019-6-7 14:05

回復 9# Scott090
Scott090大大 :您好 !
是的~完全正確
作者: Scott090    時間: 2019-6-9 22:09

本帖最後由 Scott090 於 2019-6-9 22:15 編輯

[attach]30810[/attach]回復 10# Airman

[attach]30810[/attach]
     請測試看看
作者: Airman    時間: 2019-6-10 06:07

本帖最後由 Airman 於 2019-6-10 06:21 編輯

回復 11# Scott090
Scott090大大 : 早安 !
貴解答檔的答案全部OK!謝謝您:lol

不好意思,因為小弟的疏忽~
需求︰Sheet1
當各單比對區段的儲存格>0時 : 沒注意到各單列有這麼多=0的儲存格^^"
需求︰Sheet2
當各單比對區段的儲存格>=0且<>""時 : 沒有加註強調重點的顏色~所以沒有引起您的注意^^"


所以請您將3層比對的先決條件改為~
需求︰Sheet1(=前3大)
當各單比對區段的儲存格>=0且<>""時,...........
需求︰Sheet2(=前3小)
當各單比對區段的儲存格>=0且<>""時 ,..............

即將各單比對區段列>=0且<>""的儲存格都加入前3大和前3小的比對範圍內。

以上  敬請您賜正~感恩^^


[attach]30817[/attach]
作者: Airman    時間: 2019-6-10 06:34

回復 12# Airman
補充12樓~
因為目前檢視貴解答檔的答案,只有在第1層的0值為有效的前3大值或前3小值,答案才會產生誤差;
所以小弟想應該是將0值加入前3大值或前3小值得比對範圍內即可。
希望不會給您添太大的麻煩
作者: Scott090    時間: 2019-6-10 20:01

回復 13# Airman

       [attach]30822[/attach][attach]30822[/attach]

       已比對了 12# 的附件
       請再測試看看
作者: Airman    時間: 2019-6-11 02:23

回復 14# Scott090
Scott090大大 :  您好 !
辛苦了!謝謝您^^"

測試結果 :
以原附件測試,尚有4處有誤差~前3大和前3小各有2處~
詳如附件 :   [attach]30832[/attach]
敬請賜正!謝謝您^^
作者: Airman    時間: 2019-6-11 17:18

本帖最後由 Airman 於 2019-6-11 17:30 編輯

回復 14# Scott090
15樓的附件的筆誤更正~
前3小工作表V : Z的說明方塊
V49=17改為15,V$1=12改為=21
謹請參考!謝謝您^^
作者: Scott090    時間: 2019-6-12 06:30

回復 16# Airman


  研究 15# 附件檔說明:
        AL30=14 > AN30=10 > AK30=AM30=AO30=0;
          則再比對AK35和AM35和AO35 ~
         因為AM35=41 > AK35=AO35 =12;
         所以取AM$1=38;
         綜上而將前3大:
         AL$1的37填入EE30;AN$1的39填入EF30;
        AM$1的38填入EG30。
     
        則,9#的舉例應改為:
                            比對陣列                                   前3大                    前3小
            10   20   30 35 40
            1     2     3        3         3  ==> 30   20   10         10   20    35
          20   25  30   20   20
         150   160     200   180    190
作者: Airman    時間: 2019-6-12 07:22

本帖最後由 Airman 於 2019-6-12 07:23 編輯

回復 17# Scott090
Scott090大大 : 早安!
不好意思,17#範例的邏輯才是正確的
小弟的10#回覆沒有處理好~給您添麻煩~深感抱歉!敬請見諒!謝謝您!
作者: Scott090    時間: 2019-6-13 16:01

本帖最後由 Scott090 於 2019-6-13 16:06 編輯

回復 18# Airman

   
        [attach]30849[/attach]
        請測試核對
作者: Airman    時間: 2019-6-14 02:35

本帖最後由 Airman 於 2019-6-14 02:44 編輯

回復 19# Scott090
Scott090大大 :  您好 !
辛苦了!謝謝您^^"

測試結果 :
1_主檔的執行速度感覺有明顯緩慢的現象(對比前幾版)
2_以(2019-05-31)的9個基本檔測試 (空,機,排X合,均,尾=9) :
尚有"空數總覽(尾數排序)"的前3小之層和層的Q28 : U28有誤差~詳如 : 空數總覽(尾數排序)-(2019-05-31)_誤差處的圖說檔。
[attach]30853[/attach]
以上 敬請賜正 ! 謝謝您 ^^
作者: Airman    時間: 2019-6-14 03:05

本帖最後由 Airman 於 2019-6-14 03:13 編輯

回復 20# Airman
補充~
1_好像類似迴圈一直跑不停,所以執行結束的時間顯得緩慢。
2_產生誤差的原因應該是0值沒有加入比對

作者: Scott090    時間: 2019-6-14 06:56

回復 21# Airman

         參數確認:
   1. 1~3層都要把 "0" 值 列入比對
   2.  第一列的數值範圍  "01 ~ 49"
   3.  一般數值 範圍 2位數(小於 100)
   4.  小計數值範圍  3位數(小於 1000)
   5.  總計數值範圍  3位數(小於 1000)
         
        謝謝
作者: Airman    時間: 2019-6-14 09:30

回復 22# Scott090
Scott090 : 您好 !
       參數確認:
   1. 1~3層都要把 "0" 值 列入比對 ==> V
   2.  第一列的數值範圍  "01 ~ 49" ==> V
   3.  一般數值 範圍 2位數(小於 100)  ==>V
   4.  小計數值範圍  3位數(小於 1000) ==> V
   5.  總計數值範圍  3位數(小於 1000)  ==>小於 3000

以上  謝謝您^^
作者: Scott090    時間: 2019-6-16 20:52

回復 23# Airman


    [attach]30882[/attach]
   請測試核對看看
    資料表格內會有空格的情況嗎?
作者: Airman    時間: 2019-6-17 02:00

回復 24# Scott090
Scott090大大 :您好 !
辛苦了 ! 有的答案會有空格,大部分是第3名從缺的時候,少部分是第2和3名從缺的時候。
測試完再向您報告結果。
先謝謝您的耐心協助和指導~感恩^^
作者: Airman    時間: 2019-6-17 03:22

本帖最後由 Airman 於 2019-6-17 03:24 編輯

回復 24# Scott090
[attach]30883[/attach]
Scott090大大 : 您好 !
不好意思,尚有1處有誤~
排數總覽(尾數排序)-(2019-05-31)的前3大之CK64=13CK64應=""(在前版v1.2測試時是無誤的)
詳如測試檔說明
敬請賜正~謝謝您^^
作者: Scott090    時間: 2019-6-17 14:50

本帖最後由 Scott090 於 2019-6-17 14:58 編輯

回復 26# Airman

        排數總覽(尾數排序)-(2019-05-31)_圖示說明:
                 列63    L~P 行                                 二層  前3大                 二層  前3小
    碼         03   13     23    33       43
    小記     15   15     12    15       10     ==>   33   23   43               43   23   03
                                                                                                                        13
    總計    125  125  107  158    101
   
     是這樣嗎?   :P
作者: Airman    時間: 2019-6-17 15:37

回復 27# Scott090
Scott090大大 :您好 !
是的~正確無誤
給您添麻煩了
作者: Scott090    時間: 2019-6-18 11:27

回復 28# Airman

   Airman大提過,好像轉不出來,不知是否有特定的哪個檔案?
這裡測試9個測試檔的時間記錄給參考,
    排數總覽(合數排序)-(2019-05-31)測試時間 = 0.65625 秒
    排數總覽(均值排序)-(2019-05-31)測試時間 = 0.78125 秒
    排數總覽(尾數排序)-(2019-05-31)測試時間 = 0.78125 秒
   機數總覽(合數排序)-(2019-05-31)測試時間 = 0.859375 秒
    機數總覽(均值排序)-(2019-05-31)測試時間 = 0.765625 秒
    機數總覽(尾數排序)-(2019-05-31)測試時間 = 1.390625 秒
    空數總覽(合數排序)-(2019-05-31)測試時間 = 1.3125 秒
    空數總覽(均值排序)-(2019-05-31)測試時間 = 0.75 秒
    空數總覽(尾數排序)-(2019-05-31)測試時間 = 0.890625 秒

       [attach]30891[/attach]
      請核對看看
作者: Scott090    時間: 2019-6-18 12:00

回復 29# Scott090

  29# 的附件 錯了, 請忽略他
作者: Scott090    時間: 2019-6-18 12:42

本帖最後由 Scott090 於 2019-6-18 12:45 編輯

回復 28# Airman

   
v2.1.rar 是錯誤的,請用下列 的 2.2版

    [attach]30894[/attach]
作者: Airman    時間: 2019-6-18 15:13

回復 31# Scott090
Scott090大大 : 您好 !
測試結果~全部OK了~辛苦您了
萬分感激您多日來的耐心協助和指導~感恩~再感恩




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