返回列表 上一主題 發帖

[發問] 公式優化的問題。

[發問] 公式優化的問題。

前3大.png
2019-9-19 04:16
      
前3小.png
2019-9-19 04:17

將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
所以請問︰
公式能否再優化嗎?
謝謝!
測試附件檔案 : 公式優化的問題.rar (20.23 KB)

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

TOP

本帖最後由 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,",))
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

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

TOP

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

回復 7# ML089

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

文字說明 :
當沒有次大次數值(AS3)或第三大次數值(AU3)時,希望(AS3)或(AU3)能顯示"N"~
因為AS3或AU3顯示0,在某情況下(尤其是在比對欄位數較少時,常會發生),AT3AV3會產生"錯誤值"。
詳如下列圖片 ~
未命名_1.png
2019-9-24 16:18
        
未命名_2.png
2019-9-24 16:19

測試附件 : 539_尾數排序-V2.rar (4.06 KB)

TOP

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

TOP

回復 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," 刪除
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復 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"
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

本帖最後由 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~如附件 : 測試檔_V1.rar (45.92 KB)
謝謝您^^

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,",)

TOP

2樓問題我在找時間看看
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

        靜思自在 : 待人退一步,愛人寬一寸,就會活得很快樂。
返回列表 上一主題