作者abc9gad (鄉民愛發呆)
看板Office
標題[算表] Excel公式請益
時間Thu Mar 21 17:08:17 2019
軟體: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)的用意是什麼 感謝
--
Arguing on the Internet is like running in the Special Olympics: even if you
win, you're still retarded."
Jeriah
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.242.212.205
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Office/M.1553159300.A.F0E.html
※ 編輯: abc9gad (210.242.212.205), 03/21/2019 17:10:05
1F:→ soyoso: 先說公式一定不會是原文內的={IFERROR(...)} 03/21 17:12
2F:→ soyoso: 大括號是按下組合鍵ctrl+shift+enter所產生的,且產生的地 03/21 17:12
3F:→ soyoso: 方是{=IFERROR(...)} 03/21 17:13
5F:→ soyoso: 原本用於offset cols的,0也可刪除 03/21 17:17
6F:→ soyoso: 公式row(1:1)為回傳第1列的列號,就是1 03/21 17:18
7F:→ soyoso: 但用$列絕對參照,也就是下拉拖曳都是會是回傳1 03/21 17:19
8F:→ soyoso: 因此可改為1,結果是一致的 03/21 17:20
請問s大FIND($E2,$A$2:$A$68) find公式我單獨拉出來都是錯誤是為什麼,加IFERROR ,0
結果不就都是0嗎
(IF(IFERROR(FIND($E2,$A$2:$A$68),0)>0,ROW($A$2:$A$68),"") 不太懂這段的意思
如果在A2:A68找到E2的值是TRUE,則ROW(A2:A68) 那是要呈現什麼呢
※ 編輯: abc9gad (210.242.212.205), 03/21/2019 17:35:15
9F:→ soyoso: small的邏輯為find儲存格e2的值於a2:a68,有搜尋到的話就 03/21 17:29
10F:→ soyoso: 會回傳>=1的數值,判斷當大於0時,則回傳row(a2:a68)列號 03/21 17:31
11F:→ soyoso: 這裡有元素對應,當a5是符合時,第4個元素就會是列號5 03/21 17:33
12F:→ soyoso: iferror將find未搜尋到回傳錯誤值改為0值,判斷上未大於0 03/21 17:35
13F:→ soyoso: 就都回傳為假的空字串"" 03/21 17:36
14F:→ soyoso: =find(e2,a2:a68)於儲存格內,所回傳的結果是搜尋e2於a2 03/21 17:37
15F:→ soyoso: 也就是說如果a2沒有找到就會回傳錯誤值 03/21 17:38
16F:→ soyoso: 但如果a2就有符合的話,就會回傳>=1的數值 03/21 17:38
17F:→ soyoso: 要呈現的是列號,當為真true就是在該元素內寫入對應的列號 03/21 17:41
所以我擷取=IF(IFERROR(FIND($E2,$A$2:$A$68),0)>0,ROW($A$2:$A$68),"")
也跑不出資料,是因為沒有用small,他在find A2的時候找不到值就直接判斷錯誤
要加入small讓它做範圍搜尋列的意思嗎?
※ 編輯: abc9gad (210.242.212.205), 03/21/2019 17:46:28
18F:→ soyoso: 應該是這麼說find(e2,a2:a68),也會去搜尋除了a2外的a3: 03/21 17:56
19F:→ soyoso: a68的部分,但find會回傳的是單一元素的結果,也就是搜尋 03/21 17:56
20F:→ soyoso: 於a2所回傳的結果,加上其他函數如small,則會在這些元素 03/21 17:56
21F:→ soyoso: 內回傳指定要的值 03/21 17:56
22F:→ soyoso: 可以說這些元素在find時就存在了,再於單獨使用find時所回 03/21 17:59
23F:→ soyoso: 傳的就是單一元素(第一筆)的結果,配合其他函數的變化,可 03/21 17:59
24F:→ soyoso: 取得符合所需要的元素結果 03/21 17:59
25F:→ soyoso: 補充一下,第一筆方面為測試公式find(e2,a2:a68)於第二列 03/21 18:46
26F:→ soyoso: ,為find(e2,a2),當於第三列時會是find(e2,a3);但如果公 03/21 18:46
27F:→ soyoso: 式鍵於第二列而公式是find(e2,a3:a68),就算a3是有符合也 03/21 18:46
28F:→ soyoso: 會回傳錯誤值,這應該是當搜尋範圍為複數時,會找對應的儲 03/21 18:46
29F:→ soyoso: 存格a2,但a2並不在a3:a68內所以產生錯誤值,因此當搜尋範 03/21 18:46
30F:→ soyoso: 圍為複數時,也會依公式所在的列來找出對應的儲存格 03/21 18:46
S大謝謝您,雖然還沒有辦法完全參透,但已經有所提升了一些概念
※ 編輯: abc9gad (210.242.212.205), 03/22/2019 15:56:29
31F:→ ahwii: Find()最好不要單獨取出,可以標選,然後按F9顯示陣列值 03/22 23:51