求教excel a1输入某一字串 B1显示对应文字

如题:具体问题是:我要在A1中输入一字串(这字串可能是10位,15位,或8位数字,或带有英文);不管怎样,只要A1的字串中出现包含有指定的某一组合数字,B1就会显示出对应该的文字或字母或文字加字母出来。如:A1的15位字串中包含有345678这组数字,不管这345678的前面或后面是什么字串,只要有这组连接的345678,B1就会自己显示出“HI,123你好”如果A1出现CC3456,B1就自己显示“欢迎光临mike”......我有很多组这样的需要对应的字串,而且,我还在要A2 B2 ,A3 B3....中一直用到,希望高手指点,,

应先建立一个编码对应文字的数据库:假如F列为编号;G列为编号对应的文字,假设本数据库为当前工作表FI:G8区域:
B1公式:数组公式,ctrl+shift+enter组合键结束输入
=INDEX($G$1:$G$8,IF(ISNUMBER(FIND($F$1,$A1))=TRUE,1,SUM(MATCH(ISNUMBER(FIND($F$1:$F$8,$A1))=TRUE,ISNUMBER(FIND($F$1:$F$8,$A1)),0))-COUNTA($F$1:$F$8)+1))
格式柄下拉复制即可,
但是你编号时要特别注意,不能这样编:123:喜洋洋;1234:灰太狼
这样如果A1编码包含1234,函数公式会无法判断到底显示哪一个!
上述公式可根据实际情况自行更改。追问

我刚好也要面对这样的问题:比如,123是羊家族,1234是喜羊羊,1235是美羊羊,12356是美羊羊的儿子,,,,这些数字可能是有关联的(当然也有的是无关联的)。如果只在A1输入123,B1就只显示是“羊家族”如果多个4,1234,那B1就要显示出是“喜羊羊”如果是12356,B1就要显示出是“美羊羊的儿子”就算是AA12356或A12356A或12356AA,都要显示是“美羊羊的儿子”

追答

如果你需要这样子编码,应先建立一个编码对应文字的数据库:假如F列为编号;G列为编号对应的文字,假设本数据库为当前工作表FI:G8区域:
B1公式:数组公式,复制公式:ctrl+shift+enter组合键结束输入
=INDEX(G:G,IF(AND($A1"",ISNUMBER(FIND($F$1,$A1))=TRUE),1,IF(SUM(MATCH(ISNUMBER(FIND($F$1:$F$8,$A1))=TRUE,ISNUMBER(FIND($F$1:$F$8,$A1)),0))=COUNTA($F$1:$F$8),"",MAX(MATCH(ISNUMBER(FIND($F$1:$F$8,$A1))=TRUE,ISNUMBER(FIND($F$1:$F$8,$A1)),0)))))
格式柄下拉复制即可,
但是你编码还需有规律,12356是美羊羊的儿子,1235是美羊羊,1234是喜羊羊,123是羊家族;这样子降序从上往下排。
试一下吧,不满意,再探讨。

追问

兄弟,可以看一下我上面的插图吗,可以实现那样的吗?

追答

假设对照表放在Sheet2 A1:B9单元格里面:
Sheet1 B2单元格复制此公式:ctrl+shift+enter组合键结束输入
=INDEX(Sheet2!B:B,IF(AND($A2"",ISNUMBER(FIND(Sheet2!$A$1,$A2))=TRUE),1,IF(SUM(MATCH(ISNUMBER(FIND(Sheet2!$A$1:$A$9,$A2))=TRUE,ISNUMBER(FIND(Sheet2!$A$1:$A$9,$A2)),0))=COUNTA(Sheet2!$A$1:$A$9),"",MAX(MATCH(ISNUMBER(FIND(Sheet2!$A$1:$A$9,$A2))=TRUE,ISNUMBER(FIND(Sheet2!$A$1:$A$9,$A2)),0)))))
格式柄下拉复制公式
辅助列C列,C2单元格公式:
=IF(ISERROR($B2),"",$B2)
格式柄下拉复制公式
隐藏B列就可以了
但是你编码还需有规律,12356是美羊羊的儿子,1235是美羊羊,1234是喜羊羊,123是羊家族;这样子降序从上往下排。

追问

我试了一下,如我发的图中,我在A1处输入的字串要分大小写的,可不可以不分大小写的?
领导你的技术太强了,基本能开能实现我想要的功能了,但还有一点点不足,就是:
照目前的工式,假设我SHEET2的A列中,有AAB123这个字串,它对应的是“小猪”。如果我在sheet1的A1中输入aaB123。B1就不会显示“小猪”。
而我想要它不管是AAB123,还是Aab123、AAb123、aaB123……B1都显示“小猪。可以实现吗?

追答

实现倒是可以的,这么长的公式连我自己都看着晕
Sheet1 B2单元格复制此修改后的公式:ctrl+shift+enter组合键结束输入
=INDEX(Sheet2!B:B,IF(AND($A2"",ISNUMBER(FIND(LOWER(Sheet2!$A$1),LOWER($A2)))=TRUE),1,IF(SUM(MATCH(ISNUMBER(FIND(LOWER(Sheet2!$A$1:$A$9),LOWER($A2)))=TRUE,ISNUMBER(FIND(LOWER(Sheet2!$A$1:$A$9),LOWER($A2))),0))=COUNTA(Sheet2!$A$1:$A$9),"",MAX(MATCH(ISNUMBER(FIND(LOWER(Sheet2!$A$1:$A$9),LOWER($A2)))=TRUE,ISNUMBER(FIND(LOWER(Sheet2!$A$1:$A$9),LOWER($A2))),0)))))
格式柄下拉复制,其他的还按我说的做。
看一下是否满意?

追问

问到最后,发现好像用不到EXCEL服务器上,,这些工式的确是用不到EXCEL服务器上是吗?

追答

虽然可以实现部分功能,但是受函数本身及逻辑判断的的制约,会很繁琐,不建议用函数解决此类问题,上述公式还是可以运行的。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-07-03
先建立数据表Sheet1:
A列 B列
310 公安局
311 工商局
312 电信局
313 电业局
314 执法局
315 税务局
316 卫生局
317 环保局
318 社保局
319 文化局

在输入表中Sheet2:
A列
输入字符串
B列
=VLOOKUP(A1,Sheet1!$A:$B,2,FALSE)

我只想到这个方法,还望高手指教!
第2个回答  2012-07-04
你这个需要组合技了,
FIND查找,然后再用INDEX取,再VLOOKUP
根据补充:
{B28=VLOOKUP(INDEX(A19:A23,MATCH(FALSE,ISERROR(FIND(A19:A23,A28,1)),0),),A19:B23,2,0}
相似回答