excel find多个关键词

a
北京市XXXXXXXXXXXXXXXXXXXXXXXXXXX
广东省XXXXXXXXXXXXXXXXXXXXX
新疆维吾尔自治区XXXXXXXXXXXXXXXX
黑龙江省XXXXXXXXXXXXXXXXXXXXXXXXXX
如上a列,我想用find函数把最大的区域名称截取出来,关键字是省 市 区,用left,find函数怎么提取出来?求高手帮我做出表达式并详细解答一下,谢谢了。

如图,B1输入公式

=TRIM(LEFT(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"省","省"&REPT(" ",100)),"市","市"&REPT(" ",100)),"区","区"&REPT(" ",100)),50))

下拉公式即可。

追问

你这太烦杂了,不太适合办公用啊

追答

结果正确,代替人工操作,复制粘贴即用。你要的不是结果?

追问

有两点问题是你这个方法的缺点一不利于掌握,办公总不能每次复制吧;二当你一个报表多达几万条或上10万条时,运算起来得等多久啊,因为不单是只有这么一个公式的....

追答

您的提问中没有介绍背景,提出省份使用这个公式足够了。使用vba自定义函数可以更容易掌握,您需要吗?

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-09-07
=LEFT(A1,MIN(FIND("省",A1&"省市区"),FIND("市",A1&"省市区"),FIND("区",A1&"省市区")))

公式可简化如下:
=LEFT(A1,MIN(FIND({"省","市","区"},A1&"省市区")))追问

能否帮解释下原理?比如这里A1&"省市区"不太懂是怎么回事

追答

在后面连接“省市区”字符串后再用FIND函数查找这三个字符时就不会出错,最先出现的位置就是需要截取的字符串结束位置。

在后面连接“省市区”字符串后再用FIND函数查找这三个字符时就不会出错,最先出现的位置就是需要截取的字符串结束位置。

本回答被提问者采纳
第2个回答  2015-07-02
=LEFT(A1,SMALL(IFERROR(FIND({"市","区","省"},A1),2^8),1))追问

你好,能否解释下small里面各个函数的用途吗?

相似回答