返回列表 上一主題 發帖

取前3小(中式排名)的同欄第1列數字。

公式中的儲存格都要定資料位置,造成公式龐大不易維護,也不易看懂。
最後龐大的公式容易超過2003版公式巢狀迴圈限制,單一公式不容易發展。
建議以名稱公式來組合,比較容易維護公式

AZ7 =IF(ISERROR(_AZ7),"",_AZ7)
右拉下拉

AZ7格的名稱公式
_Y =LOOKUP(9,0/("小計"=$A1:$A7),{6,5,4,3,2,1,0})
_X =MAX(INT((COLUMN(A1)-1)/3)*5)        * MAX() 主要是避免使用 N(OFFSET())               
_W =COUNT(OFFSET($B$1,,_X,,5))        * 一般為5,最後一組為4                       
_B1 =OFFSET($B$01,,_X,,_W)                       * $1:$1                       
_B71 =OFFSET($B$71,,_X,,_W)                       * $71:$71                       
_B7 =OFFSET($B7,-_Y,_X,,_W)                       * 活動位置                       
_AY7 =IF(MOD(COLUMN(!C1),3)=0,0,INDEX(OFFSET(!$B7:$AX7,-_Y,),MATCH(OFFSET(!AY7,-_Y,),!$B$1:$AX$1,)))
_AZ7 =SMALL(IF(SMALL(_B7+_B71%%*0,1+COUNTIF(_B7,"<="&_AY7  ))=_B7+_B71%%*0,_B1),1-_Y)
        * _B71%%*0 本項暫時不用參加排序及驗證, "*0" 乘0表示取消       

每區段的前三小_ML089.rar (783.81 KB)
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復 19# papaya
補充

_AY7 =IF(MOD(COLUMN(!C1),3)=0,0,INDEX(OFFSET(!$B7:$AX7,-_Y,),MATCH(OFFSET(!AY7,-_Y,),!$B$1:$AX$1,)))
只適用於 $B$1:$AX$1 內的值不重複時才能使用


AY7 名稱(在AZ7格之名稱公式)可以修改如下
=IF(MOD(COLUMN(!C3),3)=0,0,LOOKUP(,0/(--_B1=--OFFSET(!AY7,_Y,)),_B7)
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復 21# papaya

需求︰
將B︰AX共49欄分成5欄+5欄+5欄+5欄+5欄+5欄+5欄+5欄+5欄+4欄共10區段
統計各區段在第7,14,21,28,35,42,49,56,63,69列的最小和第二小和第三小(中式排名)的同欄第一列的數字。
請問︰AZ7︰CC7的函數公式?
詳如︰區段測試檔。
謝謝您!


這題的麻煩是
X向為間距5,最後一格間距4
Y向為間距7,最後一格間距6
若能將資料規格排列,亦能使公式更簡潔。
計算資料的核心滿簡單的,可以要公式找資料定位資料耗費太多做業。
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復 23# papaya

了解,盡量配合資料來源格式是比較好

有時大家時間並沒有那麼剛好有空,會造成貼文無人問津,可以過一陣再貼一次。

當然簡化問題或分割問題也需要,一般就能決解的問題大家容易回答,若要想一下,常常想一下就忘記這個問題。
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

        靜思自在 : 【是否發揮了良能?】人間壽命因為短暫,才更顯得珍貴。難得來一趟人間,應問是否為人間發揮了自己的良能,而不要一味求長壽。
返回列表 上一主題