Re: [算表] VBA 查储存格内容是否包含某数,执行..

楼主: JieJuen (David)   2018-03-10 01:08:10
这题因为原作后来才补充的比较完整,
导致一开始的解答方向可能有些不对,
这里也提供一个解法
此问题是要查找多个可能的关键字 在更长的文句中出现的位置
比如关键字key1
出现在更长的文句contextKey1context中的位置
如果问题被拆解成这样,大家会知道是用SEARCH(不分大小写)
这里重述一下原问题的简化版(单一关键字)
输入长句contextKey1context
找出关键字key1出现在长句的位置(不分大小写)
而原版本是多关键字(→SEARCH阵列)
给定key1对应的结果result1
给定key2对应的结果result2
输入长句contextKey1context
找出关键字key1出现在长句的位置
找出关键字key2出现在长句的位置
判断出位置最前(位置最小值MIN)的关键字keyV
给出keyV对应的结果resultV
绕口令绕完了
所以结论就是MIN(SEARCH)的阵列公式
=IFERROR(INDEX($I$1:$I$7,MIN(IFERROR(IF(SEARCH($H$1:$H$7,A1)=
MIN(IFERROR(SEARCH($H$1:$H$7,A1),9^9)),ROW($H$1:$H$7)),9^9))),"没找到")
这个式子和先前的解答会有什么不同呢?
Test 1
kettle 乐 快 乐 a 新
water 新 新 新 b 年
zip 没找到 没找到 没找到 c 年
table 新 新 新 et 快
eagle 乐 乐 乐 e 乐
flag 乐 乐 乐 f 乐
kite 乐 乐 乐 g 乐
et在原式不是答案,所以只会找到"乐"
本式中如有两个符合,会给第一个keyword,所以是"快"
Test 2
kettle 没找到 快 没找到 a 新
water 新 新 新 b 年
zip 没找到 没找到 没找到 c 年
table 新 新 新 et 快
eagle 新 新 新 ef 乐
flag 乐 乐 乐 f 乐
kite 没找到 没找到 没找到 g 乐
Test 2 更明显,原式输入kettle找不到任何答案
尽管key4是"et"
附档:
https://tinyurl.com/goo2yu/MultiSearch.xlsx
※ 引述《windknife18 (windknife18)》之铭言:
: 标题: Re: [算表] VBA 查储存格内容是否包含某数,执行..
: 时间: Tue Feb 2 11:19:27 2016
:
: 很就没有玩阵列公式了, 感觉你的问题蛮好玩的, 试了一下感觉应该对,
: 请看看是不是符合你的需求囉,档案位置
:
楼主: JieJuen (David)   2018-03-11 21:07:00
推推~! ^^
继续阅读

Links booklink

Contact Us: admin [ a t ] ucptt.com