Board logo

標題: [發問] 公式優化的問題。 [打印本頁]

作者: ziv976688    時間: 2019-9-19 04:21     標題: 公式優化的問題。

[attach]31276[/attach]       [attach]31277[/attach]
將AP13:BX20的格式改為AP1:CE7的格式後,公式對應調整為~~
前三大︰
AQ3=MAX(--TEXT(INDEX($B:$G,AQ$1,),"[>="&IF(AQ$1="",AO3,999)&"]!0"))
AS3=MAX(--TEXT(INDEX($B:$G,AS$1,),"[>="&IF(AS$1<>"",AQ3,999)&"]!0"))
AU3=MAX(--TEXT(INDEX($B:$G,AU$1,),"[>="&IF(AU$1<>"",AS3,999)&"]!0"))
其餘......類推。

前三小︰
AQ3==MIN(--TEXT(INDEX($B:$G,AQ$1,),"[<="&IF(AQ$1="",AO3,-1)&"]!99!9"))
AS3=MIN(--TEXT(INDEX($B:$G,AS$1,),"[<="&IF(AS$1<>"",AQ3,-1)&"]!99!9"))
AU3 =MIN(--TEXT(INDEX($B:$G,AU$1,),"[<="&IF(AU$1<>"",AS3,-1)&"]!99!9"))
其餘......類推。

因為不能複製AQ3:AR3直接貼上AS3和AU3,只能複製AS3:AT貼上AU3
所以請問︰
公式能否再優化嗎?
謝謝!
測試附件檔案 : [attach]31278[/attach]
作者: ziv976688    時間: 2019-9-24 04:12

本帖最後由 ziv976688 於 2019-9-24 04:21 編輯

回復 1# ziv976688
1樓的需求可忽略不強求~一因只是多寫1個AS3的公式。也不是多麻煩的事,二因有更重要的問題求解~
五行的前3小工作表的AR3
=IF(AQ3=999,"",SUBSTITUTE(TEXT(SUM(LARGE(IF(INDEX($B:$G,AR$1,)=AQ3,$B$2:$G$2,0),{1,2,3,4,5})*10^{0,2,4,6,8}),"00"&REPT("!,00",4)),"00,",))
請問: 公式中的1,2,3,4,50,2,4,6,84代表什麼意義?
PS :五行的欄數比=6:9:8:8:8
如下圖 :
[attach]31290[/attach]

因為當格式改為如尾數的前3小工作表,其AR3公式就必須改為
=IF(AQ3=999,"",SUBSTITUTE(TEXT(SUM(LARGE(IF(INDEX($B:$E,AR$1,)=AQ3,$B$2:$E$2,0),{1,2,3})*10^{0,2,4}),"00"&REPT("!,00",4)),"00,",))
才能顯示正確的答案。
請問: AR3的公式改成這樣正確嗎?
PS :尾數的欄數比=4:4:4:4:4:4:4:4:4:3
如下圖 :
[attach]31291[/attach]

因為539還有
生肖的欄位比=3:3:3:3:3:3:3:3:4:4:4:3
八卦的欄位比=4:5:5:5:5:5:5:5

另外大樂透49有
五行的欄位比=8:12:10:10:9
尾數的欄位比=5:5:5:5:5:5:5:5:5:4
生肖的欄位比=4:4:4:4:4:4:4:4:4:4:5:4
八卦的欄位比=6:6:7:6:6:6:6:6

所以請指導和說明公式中各段的意涵,以利不才能因應格式的變化而填入適當正確的公式。
謝謝!

測試檔 : [attach]31292[/attach]
作者: ML089    時間: 2019-9-24 09:28

回復 1# ziv976688

原問題先回覆,
AQ3原式 =MAX(--TEXT(INDEX($B:$G,AQ$1,),"[>="&IF(AQ$1="",AO3,999)&"]!0"))

AQ3改為 =MAX(--TEXT(INDEX(INDIRECT($AP3),AQ$1,),"[>="&IF(N(AP$1),AO3,999)&"]!0"))
-----------------------
AR3原式 =SUBSTITUTE(TEXT(SUM(LARGE(IF(INDEX($B:$G,AR$1,)=AQ3,$B$2:$G$2,0),{1,2,3,4,5})*10^{0,2,4,6,8}),"00"&REPT("!,00",4)),"00,",)

AR3改為 =SUBSTITUTE(TEXT(SUM(LARGE(IF(INDEX(INDIRECT($AP3),AR$1,)=AQ3,INDEX(INDIRECT($AP3),2,),0),{1,2,3,4,5})*10^{0,2,4,6,8}),"00"&REPT("!,00",4)),"00,",)

這樣 AQ3:AR3 可以往下複製,往右複製,
也可以 AQ3:AV7 塊狀複製到 AX3 、BE3

說明:
資料排列正常化可以讓公式較具有通用性
原先 $B:$G 可以由 AP3中的文字轉換,公式為 INDIRECT($AP3)
原先 $B2:$G2 可以由 AP3中的文字轉換,公式為 INDEX(INDIRECT($AP3),2,)
作者: ML089    時間: 2019-9-24 09:29

2樓問題我在找時間看看
作者: ziv976688    時間: 2019-9-24 13:31

本帖最後由 ziv976688 於 2019-9-24 13:42 編輯

回復 4# ML089
M版主 : 您好!
感謝您3樓的精闢解題公式~實在是太神太方便了^^
......................................................................................................................
因為由3樓的貴解,得知AP欄的文字,可以用"INDIRECT"轉換~(本來不才是以為$B$2:$G$2無函數可轉換)~
所以2樓的圖片和附件範例的尾數檔案之AP3:AP12,也改為B:E;F:I;......;AL:AN~如附件 : [attach]31293[/attach]
謝謝您^^

PS: 目前依3樓的貴解
五行的AR3  =SUBSTITUTE(TEXT(SUM(LARGE(IF(INDEX(INDIRECT($AP3),AR$1,)=AQ3,INDEX(INDIRECT($AP3),2,),0),{1,2,3,4,5})*10^{0,2,4,6,8}),"00"&REPT("!,00",4)),"00,",)

尾數的AR3  =SUBSTITUTE(TEXT(SUM(LARGE(IF(INDEX(INDIRECT($AP3),AR$1,)=AQ3,INDEX(INDIRECT($AP3),2,),0),{1,2,3})*10^{0,2,4}),"00"&REPT("!,00",4)),"00,",)
作者: ML089    時間: 2019-9-24 13:44

回復 2# ziv976688

五行的前3小工作表的AR3
=IF(AQ3=999,"",SUBSTITUTE(TEXT(SUM(LARGE(IF(INDEX($B:$G,AR$1,)=AQ3,$B$2:$G$2,0),{1,2,3,4,5})*10^{0,2,4,6,8}),"00"&REPT("!,00",4)),"00,",))
請問: 公式中的1,2,3,4,5和0,2,4,6,8和4代表什麼意義?
   


LARGE(IF(INDEX($B:$G,AR$1,)=AQ3,$B$2:$G$2,0),{1,2,3,4,5}) 其中的 {1,2,3,4,5} 就是公式一次抓出前5大數值,
這5個數字各別乘於 10^{0,2,4,6,8} (這也是5個乘數 {10^0, 10^2, 10^4, 10^6, 10^8} ,也就是 {1,  100, 10000, 1000000, 100000000})

假設前5大數字為 {20, 15, 0, 0, 0}  再乘於 10^{0,2,4,6,8} 就變成 {20, 1500,0,0,0} 再將5數字合計後為 1520,
用 TEXT將數字分隔開來 TEXT(1520, ,"00"&REPT("!,00",4)) 變成 "00,00,00,15,20"
用 SUBSTITUTE,"00,00,00,15,20" ,"00,",) 去除前面的 "00,"  就變成 "15,20"
作者: ML089    時間: 2019-9-24 14:02

回復 5# ziv976688


"00"&REPT("!,00",4) 展開是 "00,00,00,00,00" 是5組 00,於前面的 {1,2,3,4,5} 取5個數字是對應的。
當然 "00"&REPT("!,00",4) 對應 {1,2,3} 取3個數子也不會有錯,因為3個數字合計後也就是一個數字,頂多前面會多出 "00,00," ,最後SUBTITUTE會將多餘的 "00," 刪除
作者: ziv976688    時間: 2019-9-24 14:10

回復 7# ML089
M版主 : 您好!
感謝您的耐心說明與指導~不才瞭解了^^
其餘不同欄位比的公式,不才應該可以自行調整了~感恩...........n+1
作者: ziv976688    時間: 2019-9-24 16:25

本帖最後由 ziv976688 於 2019-9-24 16:34 編輯

回復 7# ML089

M版主 : 您好!
不好意思,前3大公式有1個地方,不知能否調整?
謝謝您!

文字說明 :
當沒有次大次數值(AS3)或第三大次數值(AU3)時,希望(AS3)或(AU3)能顯示"N"~
因為AS3或AU3顯示0,在某情況下(尤其是在比對欄位數較少時,常會發生),AT3AV3會產生"錯誤值"。
詳如下列圖片 ~
[attach]31298[/attach]        [attach]31299[/attach]
測試附件 :[attach]31300[/attach]
作者: ziv976688    時間: 2019-9-24 16:45

補充 :
如果顯示文字,會比任何純數值都大而不可行時,是否能顯示"負值"~EX : "-999"。
謝謝您!
作者: ML089    時間: 2019-9-24 16:59

本帖最後由 ML089 於 2019-9-24 17:02 編輯

回復 9# ziv976688

AQ3 =TEXT(MAX(--TEXT(INDEX(INDIRECT($AP3),AQ$1,),"[>="&IF(N(AP$1),AO3,999)&"]-9;;0")),"0;!N;0")

AR3 =IF(AQ3="N","",SUBSTITUTE(TEXT(SUM(LARGE(IF(INDEX(INDIRECT($AP3),AR$1,)=AQ3*1,INDEX(INDIRECT($AP3),2,),0),{1,2,3,4})*10^{0,2,4,6}),"00"&REPT("!,00",4)),"00,",))
作者: ziv976688    時間: 2019-9-24 19:43

回復 11# ML089
M版主 : 您好!
所有不才能想到的需求,都已圓滿達成。
您的耐心協助和熱心指導~不才銘感五內~在此拜謝!!!!!!!!!




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