[算表] Excel公式請益

作者: abc9gad (鄉民愛發呆)   2019-03-21 17:08:17
軟體:excel
版本:2010
公式:可從部分名稱內找出完整名稱是什麼
F2={IFERROR(OFFSET($A$1,SMALL(IF(IFERROR(FIND($E2,$A$2:$A$68),0)>0,
ROW($A$2:$A$68),""),ROW($1:$1))-1,0),"")}
A欄為我要搜尋的完整名稱 E欄為部分名稱,要從E欄的部分名稱找出他在A欄的完整名稱
是哪個
ex A欄:中華人民共和國 E欄:共和,F欄輸入以上公式,
即可找到他是中華人民共和國
想請教的是SMALL內的公式邏輯,因為拆解裡面的公式 都跑不出資料出來
還有後面ROW(1:1)的用意是什麼 感謝
作者: soyoso (我是耀宗)   2019-03-21 17:12:00
先說公式一定不會是原文內的={IFERROR(...)}大括號是按下組合鍵ctrl+shift+enter所產生的,且產生的地方是{=IFERROR(...)}改以index且不減1 https://i.imgur.com/ZGwqdOh.jpg原本用於offset cols的,0也可刪除公式row(1:1)為回傳第1列的列號,就是1但用$列絕對參照,也就是下拉拖曳都是會是回傳1因此可改為1,結果是一致的small的邏輯為find儲存格e2的值於a2:a68,有搜尋到的話就會回傳>=1的數值,判斷當大於0時,則回傳row(a2:a68)列號這裡有元素對應,當a5是符合時,第4個元素就會是列號5iferror將find未搜尋到回傳錯誤值改為0值,判斷上未大於0就都回傳為假的空字串""=find(e2,a2:a68)於儲存格內,所回傳的結果是搜尋e2於a2也就是說如果a2沒有找到就會回傳錯誤值但如果a2就有符合的話,就會回傳>=1的數值要呈現的是列號,當為真true就是在該元素內寫入對應的列號應該是這麼說find(e2,a2:a68),也會去搜尋除了a2外的a3:a68的部分,但find會回傳的是單一元素的結果,也就是搜尋於a2所回傳的結果,加上其他函數如small,則會在這些元素內回傳指定要的值可以說這些元素在find時就存在了,再於單獨使用find時所回傳的就是單一元素(第一筆)的結果,配合其他函數的變化,可取得符合所需要的元素結果補充一下,第一筆方面為測試公式find(e2,a2:a68)於第二列,為find(e2,a2),當於第三列時會是find(e2,a3);但如果公式鍵於第二列而公式是find(e2,a3:a68),就算a3是有符合也會回傳錯誤值,這應該是當搜尋範圍為複數時,會找對應的儲存格a2,但a2並不在a3:a68內所以產生錯誤值,因此當搜尋範圍為複數時,也會依公式所在的列來找出對應的儲存格
作者: ahwii (ahwii)   2019-03-22 23:51:00
Find()最好不要單獨取出,可以標選,然後按F9顯示陣列值

Links booklink

Contact Us: admin [ a t ] ucptt.com