楼主 gouweicao78 |
【题目】如图,一些单位的集团网都有手机号段(以下号码纯属虚构,如有雷同,纯属巧合),号段内部连续,但各个号段之间不连续且乱序排列,如何根据给定的号码查找对应的单位,如果没在任一号段内,则返回空文本。 【时限】2010年4月26日0:00截稿,请跟帖回复。 【要求】限函数与公式完成。根据答案情况予以评分,正确答案+2技能分,优秀答案最高可获+8技能分。 【练习】如何根据集团网手机号段查找对应单位.rar |
2楼 chrisfang |
|
3楼 rongjun |
数组公式:
|
4楼 biaotiger1 |
1、2007
|
5楼 monvzhilei |
|
6楼 syz105729913 |
【练习】如何根据集团网手机号段查找对应单位.rar 参与一下 |
7楼 wjc2090742 |
因为手机号应该算是有规律的数字,所以就用数字比较处理了。因为实在想不出更好的办法避免重复写公式,就用vlookup取巧了。 本来想改成第二个公式的,但是不明白为什么公式1中的right的部分可以比较,公式2就一定要加--? C13=SUBSTITUTE(VLOOKUP(SUMPRODUCT((LEFT($C$12,7)=LEFT($C$3:$C$10,7))*(RIGHT($C$12,4)>=MID($C$3:$C$10,8,4))*(RIGHT($C$12,4)<=RIGHT($C$3:$C$10,4))*$A$3:$A$10),IF({1,0},{0;1;2;3;4;5;6;7;8},$B$2:$B$10),2,0),"单位名称","") C13=SUBSTITUTE(VLOOKUP(MAX((C12>--LEFT(C3:C10,11))*(C12<--RIGHT(C3:C10,11))*A3:A10),IF({1,0},ROW(1:9)-1,B2:B10),2),"单位名称","") |
8楼 棉花糖 |
=INDEX(B:B,IF((C12-LEFT(C3:C10,11)>=0)*(RIGHT(C3,11)-C12>=0),ROW(3:10),99))&"" |
9楼 amulee |
数组公式:
|
10楼 tntpai |
=CHOOSE(SUM(((C12-LEFT(C3:C10,11))*(RIGHT(C3:C10,11)-C12)>=0)*ROW(1:8))+1,"",B3,B4,B5,B6,B7,B8,B9,B10) |
11楼 wjc2090742 |
不好意思,我是菜鸟,想要问个基础的问题。 花时间学习了各位高手的公式,但是还是有些不明白的地方。 (C12-RIGHT(C3:C10,11))<=0是可以得到结果的,left(C3:C10,11)<right(C3:C10,11)这样的写法也是可以得到结果的, 但是C12<=right(C3:C10,11)这样的写法就是不对,一定要在right前面加--。是这样吗?这里面的运算规则是什么呢? |
12楼 gouweicao78 |
c12是数值,right是文本。 根据排序规律,数值在文本之前,因此,可以用C12-RIGHT<0的方法比较 |
13楼 wjc2090742 |
right、left、mid等得到的是字符,是文本,即使是对数字进行操作。所以C12<right这样的比较是错误的,本例中会得到{False;False.........}全false的结果。所以要改成--right,或者right()*1。 但是C12-right却可以得到一串计算结果,left()-right()这样写也可以得到一串计算结果,left()<right()也可以得到相应的结果。 是不是可以这样理解:数字和字符是不同级别的,所以直接比较只会有一种结果,就是数字大于字符。 但是数字和字符(指对数字进行处理得到的)是可以运算的,比如+、-。 字符和字符,因为是同级的,是可以比较和运算的,相当于处理得到的数字直接进行比较或运算。 不知道有没有词不达意,理解的有些混乱。先谢谢楼主的耐心。 |
14楼 syz105729913 |
C12<right,这样的比较只能说是数值与文本之间的比较,不管那个文本的“值”是什么,文本都比数值大, 直接这样比应该是得出全TRUE的结果,而不是你说的全FALSE,--right,或者right()*1都是把文本型数值转换为数值的。 数字和字符是可以运算的,但只限于文本型数值,像“A1234”这样的文本就不能和数字运算了,文本型数值和数值运算就跟数值之间的运算规则是一样的,没有什么特别。 |
15楼 gouweicao78 |
逻辑值和数值及文本之间有什么样的关系 http://www.exceltip.net/thread-1152-1-1.html -right,实际上就是Right得到的文本型的数字,参与四则运算之一(减运算)。 |
16楼 bbwsj |
呵呵 别人的公式,换换思路 公式1(数组公式) =INDIRECT("B"&SUM((C12-LEFT(C3:C10,11)>=0)*(C12-RIGHT(C3:C10,11)<=0)*ROW(C3:C10)))&"" 公式2(普通公式) =LOOKUP(1,0/((C12-RIGHT(C3:C10,11)<=0)*(C12-LEFT(C3:C10,11)>=0)),B3:B10) 可惜公式2没有消错,当电话号超出范围,就提示错误值,07的E倒很容易解决这个,03就只能改选项设置了 |
17楼 gouweicao78 |
两数相乘,一个非正、一个非负,那么结果肯定是非正(<=0) 所以不需要分别判断,而直接先相乘后判断。 |
18楼 w83365040371 |
|