Board logo

標題: 排序的問題 [打印本頁]

作者: vvcvc    時間: 2010-9-29 10:33     標題: 排序的問題

如附件[attach]2911[/attach]
我使用large去抓第一、二名
剛好第一、二數字相同
塔配便用index時會抓出相同的字
可是我希望他第一名抓B
第二名抓I
需要再加入什麼判斷?
作者: Hsieh    時間: 2010-9-29 11:19

加輔助欄[attach]2917[/attach]
作者: ANGELA    時間: 2010-9-29 11:44

加補助欄是較正統的作法,此例也可用
=LOOKUP(2,1/(MAX(B1:B26)=B1:B26),A1:A26)
可抓到最後一個最大數
作者: asimov    時間: 2010-9-29 23:31

回復 1# vvcvc


不用輔助列
陣列公式 C1
=INDEX($A$1:$A$26,MATCH(LARGE(($B$1:$B$26)-ROW($B$1:$B$26)*0.00001,ROW()),($B$1:$B$26)-ROW($B$1:$B$26)*0.00001,0))
作者: vvcvc    時間: 2010-10-5 17:47

回復  vvcvc


不用輔助列
陣列公式 C1
=INDEX($A$1A$26,MATCH(LARGE(($B$1B$26)-ROW($B$1B$26 ...
asimov 發表於 2010-9-29 23:31


不好意思再請教一下
這個公式放在C1結果是正確的
但放到B29卻不行
這是什麼緣故?
作者: asimov    時間: 2010-10-5 23:59

回復 5# vvcvc


因為
=INDEX($A$1:$A$26,MATCH(LARGE(($B$1:$B$26)-ROW($B$1:$B$26)*0.00001,ROW()),($B$1:$B$26)-ROW($B$1:$B$26)*0.00001,0))
當公式移到B29時ROW()=29,LARGE並無第29順位,所以無法得到正確結果
將公式小改一下即可
B29
=INDEX($A$1:$A$26,MATCH(LARGE(($B$1:$B$26)-ROW($B$1:$B$26)*0.00001,ROW(A1)),($B$1:$B$26)-ROW($B$1:$B$26)*0.00001,0))
看到差別了嗎
ROW()改成了ROW(A1)
作者: vvcvc    時間: 2010-10-6 13:55

本帖最後由 vvcvc 於 2010-10-6 13:58 編輯

試過可以使用
能否再請教($B$1:$B$26)-ROW($B$1:$B$26)*0.00001這個計算式的用意是什麼?
我按F9看到的是將B1:B26全部減0.00001
這個範圍內的array依然是有相同大小的數值
為什麼可以做出我期望的效果?

我使用這公式, 把計算取消
就又回到我原本的狀況
模仿公式我已經可以在我需要的地方運用, 只是不明白這公式的原理
可否再麻煩您解釋?
作者: ANGELA    時間: 2010-10-6 16:37

試過可以使用
能否再請教($B$1B$26)-ROW($B$1B$26)*0.00001這個計算式的用意是什麼?
我按F9看到的是將 ...
vvcvc 發表於 2010-10-6 13:55



    我按F9看到的是將B1:B26全部減0.00001
這句有問題,應該是第一列-0.00001,第二列-0.00002,第三列-0.00003..........
作者: asimov    時間: 2010-10-7 00:21

回復 7# vvcvc


($B$1:$B$26)-ROW($B$1:$B$26)*0.00001這個計算式的用意
舉例說明
B2與B9的值都是8,使用公式只會得到B2的8
所以將B欄的值-ROW($B$1:$B$26)*0.00001

ROW($B$1:$B$26)*0.00001計算結果是0.00001,0.00002,0.00003依此類推
因此B2值8經計算後為7.99998     (8-0.00002)
B9值8計算後為7.99991
再用LARGE取得大小排列數
....
其他請參考各函數說明
作者: vvcvc    時間: 2010-10-8 08:31

不好意思, 只看到一堆數字沒看清楚
謝謝asimov 不吝賜教




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