作者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/cn.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