返回列表 上一主題 發帖

[發問] 這段程式有部分不瞭解

回復 2# morris_lth


回復 1# morris_lth

我測出部分功能
1.SMALL(IF($A$2:$A$25=$G$1, ROW(A2:A25),65536),ROW(3:3)))
==>這段依舊不解,經過實測,若是FALSE則結果=65536.
但我的理解是若為FALSE 程式應該要變成這樣SMALL(65536,ROW(3:3)) , 但這不符合語法 SMALL(array,k)....

2.另外程式中為何要用65536 能順便解釋嗎?
==>如果沒尋到資料則就是傳回D65536的內容,若改成100,則是沒找到就會丟出D100內的資料
3.若是前一次搜尋G3~G5有輸出資料,後一次搜尋只有一筆資料G3, G4/G5是如何做到把舊資料清除?
==>呈上也正是因為這樣可以把多餘的資料清除



回覆1
4^8 = 65536 ,2007版以前的版本最後一列為 65536,一般假設你不會用到第65536列,當不符合資料時將資料指標指向第65536列,這樣公式就會取到空白欄資料。


回覆1
SMALL(IF($A$2:$A$25=$G$1, ROW(A2:A25),65536),ROW(3:3))) 這陣列資料判斷
==>SMALL(65536,ROW(3:3))   這單筆資料判斷,不是上述公式的執行過程
==>SMALL({.....65536......},ROW(3:3))  , {.....65536......}表示有24筆經過IF判斷,符合時為該列碼 2...25,不符合時為65536
最後用 SMALL 取 ROW(3:3) 取第3小的列號。


回覆3
SMALL(IF($A$2:$A$25=$G$1, ROW(A2:A25),65536),ROW(3:3)))
考慮只有一筆符合時公式改為
=IFERROR(SMALL(IF($A$2:$A$25=$G$1, ROW(A2:A25)),ROW(3:3))),"")
適用於 EXCEL2007板以上
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

        靜思自在 : 人要知福、惜福、再造福。
返回列表 上一主題