返回列表 上一主題 發帖

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

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

G3儲存格 {=INDEX(D:D,SMALL(IF($A$2:$A$25=$G$1,ROW($A$2:$A$25),65536),ROW(1:1)))&""}
G4儲存格 {=INDEX(D:D,SMALL(IF($A$2:$A$25=$G$1,ROW($A$2:$A$25),65536),ROW(2:2)))&""}
G5儲存格 {=INDEX(D:D,SMALL(IF($A$2:$A$25=$G$1,ROW($A$2:$A$25),65536),ROW(3:3)))&""}

主要功能是G1輸入要尋找的資料,在A2~A25之間找尋,找到後依序輸出至G3/G4/G5
找到資料後程式運作已經了解

1.,若是沒找到資料這部分不懂,可以幫忙解惑嗎?以下是我的假設
=INDEX(D:D,SMALL(IF($A$2:$A$25=$G$1,ROW($A$2:$A$25),65536),ROW(3:3)))&""   //假設G1≠A2~A25,  
=INDEX(D:D,SMALL(IF(FLASE, ROW(A2:A25),65536),ROW(3:3)))&""   //找不到所以是FLASE
=INDEX(D:D,SMALL(65536,ROW(3:3)))&""   <----SMALL(array,k)  ,65536 在這邊是錯誤的格式? 這邊該如何理解?

2.另外程式中為何要用65536 能順便解釋嗎?
3.若是前一次搜尋G3~G5有輸出資料,後一次搜尋只有一筆資料G3, G4/G5是如何做到把舊資料清除

謝謝

回復 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是如何做到把舊資料清除?
==>呈上也正是因為這樣可以把多餘的資料清除

TOP

謝謝幫忙.
這段程式若是用VBA方式來寫,該如何做呢? 現在沒頭緒阿~

TOP

        靜思自在 : 人要自愛,才能愛普天下的人。
返回列表 上一主題